Anda di halaman 1dari 20

Manual de Referencia del PIC Basic Compiler

La lista de todas las palabras clave del compilador bsica:


DIM , AS , BIT , BYTE , WORD , RESERVE , SYMBOL , TRUE , FALSE , CONST ,
HIGH , LOW , TOGGLE , MOD , SQR , NOT , AND , OR , XOR , NAND , NOR ,
NXOR , DEFINE , CONF_WORD , CONF_WORD_2 , CLOCK_FREQUENCY ,
EEPROM , GOTO , WAITMS , WAITUS , FOR , TO , STEP , NEXT , WHILE , WEND ,
IF , THEN , ELSE , ENDIF , LOOKUP , SHIFTLEFT , SHIFTRIGHT , END , GOSUB ,
RETURN , ASM , READ , WRITE , ADCIN , ADC_CLOCK , ADC_SAMPLEUS , ON
INTERRUPCIN , RESUME , AHORRA SYSTEM , ENABLE , DISABLE ,
HSEROPEN , ALLOW_MULTIPLE_HSEROPEN , ALLOW_ALL_BAUDRATES ,
HSEROUT , HSERIN , HSERGET , LF , CRLF , SEROUT , SERIN , SEROUTINV ,
SERININV , SEROUT_DELAYUS , I2CWRITE , I2CREAD , I2CREAD_DELAYUS ,
I2CWRITE1 , I2CREAD1 , I2CPREPARE , I2CSTART , I2CSTOP , I2CSEND ,
I2CRECA , I2CRECEIVEACK , I2CRECN , I2CRECEIVENACK , LCD_BITS ,
LCD_DREG , LCD_DBIT , LCD_RSREG , LCD_RSBIT , LCD_EREG , LCD_EBIT ,
LCD_RWREG , LCD_RWBIT , LCD_COMMANDUS , LCD_DATAUS , LCD_INITMS
, LCD_READ_BUSY_FLAG , LCD_LINES , LCD_CHARS , LCDINIT , LCDOUT ,
LCDCMDOUT , LCDCLEAR , LCDHOME , LCDLEFT , LCDRIGHT ,
LCDSHIFTLEFT , LCDSHIFTRIGHT , LCDLINE1HOME , LCDLINE2HOME ,
LCDLINE3HOME , LCDLINE4HOME , LCDLINE1CLEAR , LCDLINE2CLEAR ,
LCDLINE3CLEAR , LCDLINE4CLEAR , LCDLINE1POS , LCDLINE2POS ,
LCDLINE3POS , LCDLINE4POS , LCDDEFCHAR , GLCD_DREG , GLCD_RSREG ,
GLCD_RSBIT , GLCD_EREG , GLCD_EBIT , GLCD_RWREG , GLCD_RWBIT ,
GLCD_CS1REG , GLCD_CS1BIT , GLCD_CS2REG , GLCD_CS2BIT , GLCDINIT ,
GLCDCLEAR , GLCDPSET , GLCDPRESET , GLCDCLEAN , GLCDPOSITION ,
GLCDWRITE , GLCDOUT , GLCDIN , GLCDCMDOUT , PWMON , PWMDUTY ,
PWMOFF , STARTFROMZERO
los elementos del lenguaje Basic Standard
La extensin por defecto para los archivos de origen bsicas es BAS. La salida del
compilador es el archivo de fuente ensamblador (con extensin ASM) que puede ser
traducido a cdigo binario usando ensamblador integrada. Editor inteligente marca todas las
palabras clave reservadas en diferentes colores, que simplifica el proceso de depuracin.
Salida de ensamblador del compilador BASIC tiene todas las lneas de comentario
necesarios, que la hace muy til para fines educativos, tambin.
Se admiten tres tipos de datos:
- Bit (de 1 bit, 0 o 1)
- Byte (nmeros enteros de 1 byte en el rango de 0 a 255)
- Palabra (enteros de 2 bytes en el rango de 0 a 65535)
Declaraciones se pueden colocar en cualquier parte del programa. Todas las variables se
consideran mundial. El nmero total de variables es limitado por la memoria RAM del
microcontrolador disponible. Las variables se declaran mediante sentencia DIM:
DIM UN POCO COMO
DIM B AS BYTE
DIM X AS WORD
Tambin es posible utilizar matrices unidimensionales. Por ejemplo:
DIM A (10) AS BYTE
declara un array de 10 variables Byte con ndice de matriz en el rango [0-9].
Declaracin RESERVA permite el uso avanzado mediante la reserva de algunos de los
lugares de memoria RAM para ser usado por las rutinas de ensamblador en cdigo o
MPLAB depurador en circuito. Por ejemplo:
RESERVA 0x70
Alta y baja de bytes de una variable de la palabra se puede abordar. HB y extensiones.
LB. Los bits individuales pueden ser abordadas por 0,0, 0,1, ..., 0.14 y 0.15 extensiones. Es
posible hacer conversiones entre Byte y los tipos de datos de Word utilizando LB y
extensiones de HB o directamente..:
DIM A AS BYTE
DIM B AS WORD
A = B.HB
A = B.LB 'Esta declaracin es equivalente a A = B
B.HB = Un
B.LB = Un
B = A 'Esta declaracin ser tambin borrar el byte alto de
la variable B
Todos los registros de funciones especiales (SFR) estn disponibles como variables byte
en los programas bsicos. Los bits individuales de una variable Byte pueden ser abordadas
por 0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6 y 0.7 las extensiones o el uso de los nombres oficiales de
los bits:
DIM UN POCO COMO
DIM B AS BYTE
A = B.7
B.6 = 1
TRISA.1 = 0
TRISB = 0
PORTA.1 = 1
PORTB = 255
STATUS.RP0 = 1
INTCON.INTF = 0
Formas cortas estndar para acceso a los registros de puertos y pines de chips
individuales tambin estn disponibles (RA, RB, RC, RD, RE se puede utilizar como
variables Byte; RA0, RA1, RA2, ..., RE6, RE7 estn disponibles como variables de bit) :
RA = 0xFF
RB0 = 1
Tambin es posible utilizar nombres simblicos (smbolos) en los programas de:
SMBOLO LED1 = PORTB.0
LED1 = 1
SMBOLO AD_ACTION = ADCON0.GO_DONE
Las constantes se pueden utilizar en el sistema numrico decimal sin marcas especiales,
en sistema de numeracin hexadecimal con los principales notacin 0x (o con H al final) y
en el sistema binario con la marca lder en% (o con B al final). Palabras clave Verdadero y
Falso tambin estn disponibles para las constantes de tipo bit. Por ejemplo:
DIM UN POCO COMO
DIM B AS BYTE
A = VERDADERO
B = 0x55
B =% 01010101
Las constantes tambin se pueden asignar a los nombres simblicos directiva using
CONST:
DIM A AS WORD
CONST PI = 314
A = PI
Hay tres afirmaciones que se utilizan para la manipulacin de bits - alto, bajo y
basculantes. Si el argumento de estos estados es un poco en uno de los registros PORT, el
mismo bit en el registro TRIS correspondiente se borra automticamente, estableciendo el
pin afectados como un pin de salida. Algunos ejemplos:
ALTA PORTB.0
ADCON0.ADON BAJA
PALANCA OPTION_REG.INTEDG
Cinco operaciones aritmticas (+, -, *, /, MOD) estn disponibles para Byte y los tipos
de datos de Word. El compilador es capaz de compilar todas las posibles expresiones
aritmticas complejas. Por ejemplo:
DIM A AS WORD
DIM B AS WORD
A = 123
B = A * 234
X = (12.345 - B * X) / (A + B)
Raz cuadrada de un nmero se puede calcular utilizando la funcin SQR:
DIM A AS WORD
A = 3,600
A = SQR (A)
Para las variables de tipo de datos Bit siete operaciones lgicas disponibles. Es posible
hacer una sola operacin lgica en una sola sentencia. Las operaciones lgicas tambin
estn disponibles para Byte y las variables de Word. Por ejemplo:
DIM UN POCO COMO
DIM B AS BIT
DIM X AS BIT
X = NO A
X = A y B
X = AOB
X = A XOR B
X = A NAND B
X = A ni B
X = A NXOR B

DIM A AS WORD
DIM B AS WORD
A = A o B
PORTB = PORTC Y% 11110000
Hay dos parmetros CONF_WORD y CONF_WORD_2 (no disponible para todos los
dispositivos) que se puede ajustar usando directiva DEFINE para anular los valores
predeterminados. La frecuencia de reloj del dispositivo de destino se puede especificar
estableciendo el parmetro CLOCK_FREQUENCY (el valor est expresado en MHz).
Estos parmetros deben ser de configuracin en el inicio del programa bsico. Por ejemplo:
DEFINE CONF_WORD = 0x3F72
DEFINE CLOCK_FREQUENCY = 20
Contenido de la memoria EEPROM se puede definir en los programas bsicos de
instruccin using EEPROM. Su primer argumento es la direccin del primer byte en la lista
de datos. Declaraciones EEPROM mltiples pueden ser utilizados para llenar en diferentes
reas de la memoria EEPROM, si es necesario. Por ejemplo:
EEPROM 0, 0x55
EEPROM 253, 0x01, 0x02, 0x03
La sentencia GOTO utiliza la lnea nombre de la etiqueta como argumento. Etiquetas de
lnea deben ser seguidos por el signo de dos puntos ":". He aqu un ejemplo:
DIM A AS WORD
A = 0
bucle: A = A + 1
Bucle GOTO
Declaraciones Waitms y WAITUS se pueden utilizar para forzar el programa a esperar a
que el nmero especificado de milisegundos o microsegundos. Tambin es posible utilizar
argumentos variable de Byte o tipo de datos de Word. Estas rutinas utilizan Reloj
parmetro de frecuencia que puede ser cambiado en el men Opciones. Rutina WAITUS
tiene un retraso mnimo y el paso que tambin depende del parmetro de frecuencia de
reloj.
DIM A AS WORD
A = 100
Waitms A
WAITUS 50
NOTA: Cuando se escriben programas para dispositivos PIC reales se quiere intervalos
uso de retardo ms probables que son comparables a 1 segundo o 1.000 milisegundos.
Muchos ejemplos de este archivo de ayuda tambin utilizan intervalos que 'en tiempo real'.
Pero, si desea simular los programas que tienes que ser muy paciente para ver que algo
suceda, incluso en los ordenadores muy potentes disponibles en la actualidad. Para la
simulacin de 'Waitms 1000' declaracin sobre 4MHz tienes que esperar el simulador para
simular 1.000.000 instrucciones y se necesitar una considerable cantidad de tiempo,
incluso si se ha seleccionado la tasa de simulacin 'muy rpido'. As que, slo con el
propsito de la simulacin debe recompilar los programas con intervalos de retardo
ajustado, que no debe exceder de 1-10ms. Pero, asegrese de volver a compilar el programa
con retrasos originales antes de descargarlo a un dispositivo real.
Tres declaraciones BSICOS estndar son compatibles: FOR-A-PASO SIGUIENTE,
CUANDO-WEND e IF-THEN-ELSE-ENDIF. Aqu hay varios ejemplos:
DIM A AS BYTE
TRISB = 0
A = 255
MIENTRAS A> 0
PORTB = A
A = A - 1
Waitms 100
WEND
PORTB = A

TRISB = 0
loop:
SI ENTONCES PORTA.0
PORTB.0 = 1
ELSE
PORTB.0 = 0
ENDIF
Bucle GOTO

DIM A AS WORD
TRISB = 0
PARA A = 0 A 10000 PASO 10
PORTB = A.LB
SIGUIENTE A

DIM A AS BYTE
DIM B AS BYTE
DIM X AS BYTE
B = 255
X = 2
TRISB = 0
PARA A = B A 0 STEP-X
PORTB = A
SIGUIENTE A
Despus de instruccin IF-THEN en la misma lnea se puede colocar casi cualquier otra
declaracin posible y luego ENDIF no se utiliza. No hay lmites para el nmero de
instrucciones anidadas de ningn tipo.
Funcin de bsqueda puede ser utilizado para seleccionar uno de la lista de constantes
de Byte, basado en el valor en la variable de ndice de byte, que se suministra como el
ltimo argumento separada de la funcin. La primera constante en la lista tiene un valor de
ndice 0. La constante seleccionado se cargar en la variable de tipo de datos resultante de
bytes. Si el valor en la variable de ndice va ms all del nmero de constantes en la lista, la
variable de resultado no se ver afectada por la funcin. He aqu un pequeo ejemplo de
una pantalla LED de 7 segmentos:
DIGIT DIM AS BYTE
MSCARA DIM AS BYTE
loop:
TRISB =% 00000000
PARA DIGIT = 0 a 9
MASK = BUSCAR (0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D,
0x07, 0x7F, 0x6F), DIGIT
PORTB = MSCARA
Waitms 1000
Siguiente dgito
Bucle GOTO
Si todas las constantes en la lista (o parte de ellos) son los valores ASCII, entonces la
forma ms corta de la lista se puede crear mediante el uso de argumentos de cadena. Por
ejemplo:
MASK = BUSCAR ("ABCDEFGHIJK"), INDEX
SHIFTLEFT y funciones SHIFTRIGHT se pueden utilizar para cambiar la
representacin a nivel de bit de una variable de izquierda y derecha. El primer argumento es
la variable de entrada y el segundo argumento es el nmero de cambios que se deben
realizar. He aqu dos ejemplos:
TRISB = 0x00
PORTB =% 00000011
goLeft:
Waitms 250
PORTB = SHIFTLEFT (PORTB, 1)
SI PORTB =% 11000000 THEN GOTO goRight
GOTO goLeft
goRight:
Waitms 250
PORTB = SHIFTRIGHT (PORTB, 1)
SI PORTB =% 00000011 THEN GOTO goLeft
GOTO goRight

TRISB = 0x00
PORTB =% 00000001
goLeft:
Waitms 250
PORTB = SHIFTLEFT (PORTB, 1)
SI ENTONCES PORTB.7 goRight
GOTO goLeft
goRight:
Waitms 250
PORTB = SHIFTRIGHT (PORTB, 1)
SI ENTONCES PORTB.0 goLeft
GOTO goRight
Programas estructurados se pueden escribir con llamadas a subrutinas con GOSUB que
utiliza lnea de nombre de la etiqueta como argumento. Retorno desde una subrutina se
realiza mediante la instruccin RETURN. Usuario necesita tener cuidado de que la
estructura del programa es consistente. Al utilizar subrutinas, principal necesidad de rutina
que se termin con la declaracin END. Instruccin END se compila como un bucle
infinito. He aqu un ejemplo:
Ad_action SMBOLO = ADCON0.GO_DONE
Pantalla SMBOLO = PORTB
TRISB =% 00000000
TRISA =% 111111
ADCON0 = 0xC0
ADCON1 = 0
ALTA ADCON0.ADON
principal:
GOSUB getadresult
display = ADRESH
GOTO principal
FIN
getadresult:
ALTA ad_action
Ad_action MIENTRAS
WEND
RETORNO
Es posible utilizar los comentarios en programas de cdigo bsicas. Los comentarios
deben comenzar con el smbolo de comilla simple (') y se puede poner en cualquier parte
del programa.
Lneas de cdigo fuente ensamblador se pueden colocar en cualquier lugar en el
programa fuente bsica y deben comenzar con ASM: prefijo. Por ejemplo:
ASM: NOP
ASM: LABEL1: MOVLW 0xFF
Los nombres simblicos de las variables declaradas se pueden utilizar en las rutinas en
ensamblador porque direccin de la variable adecuada ser asignado a esos nombres por la
directiva EQU:
DIM VARIABLE AS BYTE
ASM: MOVLW 0xFF
ASM: MOVWF VARIABLE
El uso de la memoria EEPROM interna
El acceso a la memoria de datos EEPROM se puede programar mediante declaraciones
leer y escribir. El primer argumento es la direccin de un byte en la memoria EEPROM y
puede ser una variable constante o byte. El segundo argumento es un dato que se lee o se
escribe (por sentencia READ debe ser una variable Byte). Se sugiere mantener las
interrupciones deshabilitadas durante la ejecucin de instruccin WRITE.
DIM A AS BYTE
DIM B AS BYTE
A = 10
LEER A, B
ESCRIBA 11, B
Utilizando el mdulo convertidor A / D interno
Declaracin ADCIN est disponible como un apoyo para el convertidor A / D interno.
Su primer argumento es el nmero de canal ADC y el segundo argumento es una variable
que se utiliza para almacenar el resultado desde la conversin A / D. Declaracin ADCIN
utiliza dos parmetros ADC_CLOCK y ADC_SAMPLEUS que tienen valores por defecto
3 y 20. Estos valores predeterminados se pueden cambiar usando DEFINE Directiva.
ADC_CLOCK parmetro determina la eleccin de la fuente de reloj ADC (rango permitido
es 0-3 o 0-7 dependiendo del dispositivo que se utiliza). Parmetro ADC_SAMPLEUS
establece el tiempo de adquisicin de ADC deseada en microsegundos (0-255). Declaracin
ADCIN presupone que el pin correspondiente se configura como una entrada analgica
(TRIS, registro ADCON1 y en algn registro ANSEL dispositivos). He aqu un ejemplo:
DIM V (5) AS BYTE
DIM VM COMO PALABRA
Dim I As Byte
DEFINE ADC_CLOCK = 3
DEFINE ADC_SAMPLEUS = 50
TRISA = 0xFF
TRISB = 0
ADCON1 = 0
FOR I = 0 TO 4
ADCIN 0, V (I)
SIGUIENTE I
VM = 0
FOR I = 0 TO 4
VM = VM + V (I)
SIGUIENTE I
VM = VM / 5
PORTB = VM.LB
El uso de interrupciones
Rutina de interrupcin debe ser colocado como todos los subprogramas despus de la
instruccin END. Se debe comenzar con ON INTERRUPT y terminar con la declaracin
RESUME. Si las operaciones aritmticas, arreglos o cualquier otra declaracin complejos
se utilizan en una rutina de interrupcin, entonces la declaracin salvar el sistema debe ser
colocado justo despus de la declaracin ON INTERRUPT para guardar el contenido de los
registros utilizados por el sistema. Activar y desactivar las declaraciones se pueden utilizar
en el programa principal para controlar bit GIE en el registro INTCON. Declaracin
RESUME establecer el bit GIE y habilitar nuevas interrupciones. Por ejemplo:
DIM A AS BYTE
A = 255
TRISA = 0
PORTA = Un
INTCON.INTE = 1
HABILITAR
FIN
ON INTERRUPT
A = A - 1
PORTA = Un
INTCON.INTF = 0
RESUME

DIM T AS WORD
T = 0
TRISA = 0xFF
ADCON1 = 0
TRISB = 0
OPTION_REG.T0CS = 0
INTCON.T0IE = 1
HABILITAR
loop:
ADCIN 0, PORTB
Bucle GOTO
FIN
ON INTERRUPT
SISTEMA DE AHORRO
T = T + 1
INTCON.T0IF = 0
RESUME
Comunicacin serie utilizando UART hardware interno
El soporte para el hardware y el software de comunicacin de serie tambin est
disponible. Declaraciones HSEROPEN, HSEROUT, HSERIN y HSERGET se pueden
utilizar con dispositivos PIC que tienen UART hardware interno. Declaracin HSEROPEN
configura el hardware UART. Su nico argumento es baudios tasa y los valores permitidos
son: 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 31250, 38400 y 57600. Si se
omite el argumento UART se crear para 9600 baudios. Si el parmetro
ALLOW_MULTIPLE_HSEROPEN se establece en 1 mediante DEFINE Directiva, ser
posible utilizar la declaracin HSEROPEN ms de una vez en el programa, por ejemplo
para cambiar la velocidad de transmisin seleccionada. Si el parmetro
ALLOW_ALL_BAUDRATES se establece en 1 mediante DEFINE Directiva todas las
velocidades de transmisin en la gama de 100 a 57600 sern permitidos. Declaracin
HSEROUT se utiliza para la transmisin en serie. Declaracin HSEROUT puede tener
varios argumentos separados por ','. Usted puede utilizar cadenas, LF palabra clave para la
lnea de alimentacin o de carcter CRLF palabra clave para el retorno de carro - avance de
lnea de secuencia, constantes y variables. Si signo '#' se utiliza antes de que el nombre de
una variable, entonces su representacin decimal se enva al puerto serie. Declaracin
HSERIN se puede utilizar para cargar una lista de byte y las variables de Word con los
valores recibidos en el puerto en serie. Esta declaracin va a esperar hasta que se reciba el
nmero necesario de bytes en el puerto serie. Declaracin HSERGET tiene un argumento
que debe ser una variable de Byte. Si hay un ter CHARC esperando en el bfer de
recepcin se cargar en la variable, de lo contrario se cargar el valor 0. He aqu algunos
ejemplos:
Dim I As Byte
HSEROPEN 38400
Waitms 1000
FOR I = 20 A 0 PASO -1
HSEROUT "los nmeros:", # I, CrLf
Waitms 500
SIGUIENTE I

Dim I As Byte
HSEROPEN 19200
loop:
HSERIN I
HSEROUT "los nmeros:", # I, CrLf
Bucle GOTO

Dim I As Byte
HSEROPEN 19200
loop:
HSERGET I
IF I> 0 ENTONCES
HSEROUT "los nmeros:", # I, CrLf
Waitms 50
ENDIF
Bucle GOTO
aplicacin UART Software
En todos los dispositivos PIC soportados puede utilizar software rutinas de
comunicacin serial con declaraciones SEROUT y SERIN. El primer argumento de las dos
declaraciones debe ser uno de los pines del microcontrolador, y el segundo argumento es la
velocidad de transmisin: 300, 600, 1200, 2400, 4800 o 9600. Por declaracin SEROUT
luego sigue la lista de argumentos para ser enviados al puerto serial. Usted puede utilizar
cadenas, LF palabra clave para la lnea de alimentacin o de carcter CRLF palabra clave
para el retorno de carro - avance de lnea de secuencia, constantes y variables. Si signo '#'
se utiliza antes de que el nombre de una variable, entonces su representacin decimal se
enva al puerto serie. Declaracin SEROUT usa parmetro SEROUT_DELAYUS que se
puede establecer mediante directiva DEFINE y tiene un valor por defecto de 1000
microsegundos. Esto define el intervalo de retardo antes de un carcter se enva realmente
al puerto y que se utiliza para aumentar la fiabilidad de la rutina de software SEROUT. Por
declaracin SERIN luego sigue la lista de Byte y las variables de palabras para ser cargados
con los valores recibidos por el puerto serie. Esta declaracin va a esperar hasta que se
reciba el nmero necesario de bytes en el puerto serie. Para la interfaz serial con niveles
lgicos invertidas hay declaraciones SERININV y SEROUTINV disponibles. Algunos
ejemplos:
DEFINE SEROUT_DELAYUS = 5000
SEROUT PORTC.6, 1200, "Hola, mundo!", CrLf

Dim I As Byte
loop:
SERIN PORTC.7, 9600, I
SEROUT PORTC.6, 9600, "los nmeros:", # I, CrLf
Bucle GOTO
Comunicacin I2C con dispositivos I2C externos
Comunicacin I2C se puede implementar en programas bsicos mediante instrucciones
I2CWRITE y I2CREAD. El primer argumento de las dos declaraciones debe ser uno de los
pines del microcontrolador que se conecta a la lnea SDA del dispositivo I2C externa. El
segundo argumento de los dos estados debe ser uno de los pines del microcontrolador que
se conecta a la lnea SCL. El tercer argumento de los dos estados debe ser un valor
constante o variable Byte llamada "direccin de esclavo '. Su formato se describe en la hoja
de datos del dispositivo utilizado. Por ejemplo, para memorias EEPROM de 24C de la
familia (con entradas de direcciones de dispositivos conectados a tierra) del 0xA0 valor se
debe utilizar para el parmetro de direccin del esclavo. Ambas declaraciones tendrn
control sobre el bit 0 de la direccin del esclavo durante la comunicacin. El cuarto
argumento de las dos declaraciones debe ser un byte o variable Palabra (esto depende del
dispositivo utilizado) que contiene la direccin del lugar al que se acceder. Si un valor
constante se utiliza para el parmetro de direccin debe estar en el rango de valor Byte. El
ltimo (quinto) alegato de declaracin I2CWRITE es un Byte constante o variable que se
escribir en la direccin indicada, y para la declaracin I2CREAD debe ser una variable de
Byte para almacenar el valor que se lee de la direccin especificada. Est permitido el uso
de ms de uno argumento 'data'. Para los dispositivos I2C que no admiten discusin
direccin de datos no es la forma corta de declaraciones I2C (I2CWRITE1 y I2CREAD1)
disponibles en el argumento de la direccin del esclavo se sigue con uno o ms argumentos
de datos directamente. Para algunos dispositivos esclavos I2C es necesario hacer un retardo
para asegurarse de que el dispositivo est listo para responder a I2CREAD comunicado.
Para ello hay parmetro I2CREAD_DELAYUS que se pueden configurar por directiva
DEFINE y tiene un valor por defecto de 0 microsegundos. He aqu un ejemplo combinado
con el mdulo LCD y 24C64 EEPROM (SDA conectado a RC2; SCL conectado a RC3):
DEFINE LCD_BITS = 8
DEFINE LCD_DREG = PORTB
DEFINE LCD_DBIT = 0
DEFINE LCD_RSREG = PORTD
DEFINE LCD_RSBIT = 1
DEFINE LCD_EREG = PORTD
DEFINE LCD_EBIT = 3
DEFINE LCD_RWREG = PORTD
DEFINE LCD_RWBIT = 2
DIM ADDR COMO PALABRA
DATOS DIM AS BYTE
SMBOLO SDA = PORTC.2
SMBOLO SCL = PORTC.3
LCDINIT 3
Waitms 1000
PARA ADDR = 0 a 31
LCDCMDOUT LcdClear
DATA = 255 - ADDR
I2CWRITE SDA, SCL, 0xA0, DIRECCIN, DE DATOS
LCDOUT "escribir en EEPROM"
LCDCMDOUT LcdLine2Home
LCDOUT "(", # ADDR ") =", # DATOS
Waitms 1000
SIGUIENTE DIRECCIN
PARA ADDR = 0 a 31
LCDCMDOUT LcdClear
I2CREAD SDA, SCL, 0xA0, DIRECCIN, DE DATOS
LCDOUT "Leer del EEPROM"
LCDCMDOUT LcdLine2Home
LCDOUT "(", # ADDR ") =", # DATOS
Waitms 1000
SIGUIENTE DIRECCIN
Hay un conjunto de estados de comunicacin I2C de bajo nivel disponibles, si el usuario
necesita para conseguir un mayor control sobre el proceso de comunicacin I2C.
I2CPREPARE declaracin tiene dos argumentos que deben ser uno de los pines del
microcontrolador. El primer argumento define la lnea SDA y el segundo argumento define
la lnea SCL. Esta declaracin ser preparar estas lneas para la comunicacin I2C.
I2CSTART sentencia generar condicin de arranque, y declaracin I2CSTOP generar
condicin de parada. Un byte puede ser enviada al esclavo I2C utilizando I2CSEND
comunicado. Despus de la sentencia se ejecuta C bit del registro STATUS celebrar la
copia del estado en la lnea SDA durante el ciclo de acuse de recibo. Hay dos estados que
se pueden utilizar para recibir un byte desde el esclavo I2C. I2CRECA o
I2CRECEIVEACK generarn seal de reconocimiento durante el ciclo acknowlegde
despus de recibir el byte. I2CRECN o I2CRECEIVENACK generarn no reconocer la
seal durante el ciclo acknowlegde despus de recibir el byte. Un ejemplo:
DIM ADDR COMO PALABRA
DATOS DIM (31) AS BYTE
SMBOLO SDA = PORTC.4
SMBOLO SCL = PORTC.3
DIR = 0
I2CPREPARE SDA, SCL
I2CSTART
I2CSEND 0xA0
I2CSEND ADDR.HB
I2CSEND ADDR.LB
I2CSTOP
I2CSTART
I2CSEND 0xA1
PARA ADDR = 0 a 30
I2CRECEIVEACK DATA (DIR)
SIGUIENTE DIRECCIN
I2CRECN DATA (31)
I2CSTOP
Interfaz LCDs de caracteres
Compilador bsico tambin cuenta con el soporte para mdulos LCD basados en
HD44780 o chip controlador compatible. Antes de utilizar declaraciones relacionada LCD,
el usuario debe configurar la interfaz LCD usando DEFINE directivas. Aqu est la lista de
los parmetros disponibles:
LCD_BITS - define el nmero de lneas de interfaz de datos (los valores permitidos son 4 y
8; predeterminado es 4)
LCD_DREG - define el puerto en el que las lneas de datos estn conectados (por defecto
es PORTB)
LCD_DBIT - define la posicin de las lneas de datos de la interfaz de 4 bits (0 4;
predeterminado es 4), ignorado para la interfaz de 8 bits
LCD_RSREG - define el puerto donde RS lnea se conecta a (por defecto es PORTB)
LCD_RSBIT - define el pin donde RS lnea est conectada (por defecto es 3)
LCD_EREG - define el puerto en el que la lnea E est conectado a (por defecto es
PORTB)
LCD_EBIT - define el pin donde la lnea E est conectado a (por defecto es 2)
LCD_RWREG - define el puerto en el que R / W lnea est conectada a (se establece en 0
si no se utiliza; 0 es por defecto)
LCD_RWBIT - define el pin donde R / W lnea est conectada a (se establece en 0 si no se
utiliza; 0 es por defecto)
LCD_COMMANDUS - define el retardo despus de la declaracin LCDCMDOUT (valor
por defecto es 5000)
LCD_DATAUS - define el retardo despus de la declaracin LCDOUT (valor por defecto
es 100)
LCD_INITMS - Define la demora para la declaracin LCDINIT (valor por defecto es 100)
Los tres ltimos parmetros se deben ajustar a valores bajos cuando se utiliza el simulador
mdulo integrado LCD. Si R / W lnea est conectada al microcontrolador y el parmetro
LCD_READ_BUSY_FLAG se establece en 1 mediante DEFINE Directiva, estos
parmetros de retardo sern ignorados por el compilador y el momento correcto se llevarn
a cabo mediante la lectura del estado de la bandera de ocupado en la pantalla LCD.
Declaracin LCDINIT debe ser colocado en el programa antes de cualquiera de
LCDOUT (utilizado para el envo de datos) y LCDCMDOUT (utilizado para el envo de
comandos) declaraciones. Su argumento se utiliza para definir el tipo de cursor: 0 =sin
cursor (por defecto), 1 =abrir y cerrar, 2 =subrayado, 3 =Parpadea +subrayado.
Declaraciones LCDOUT y LCDCMDOUT pueden tener varios argumentos separados por
','. Cuerdas, constantes y variables se pueden utilizar como argumentos de declaracin
LCDOUT. Si signo '#' se utiliza antes de que el nombre de una variable, entonces su
representacin decimal se enva al mdulo LCD. Constantes y variables pueden utilizarse
como argumentos de declaracin LCDCMDOUT y las siguientes palabras clave tambin
estn disponibles: LcdClear, LcdHome, LcdLine2Home, LcdLeft, LcdRight, LcdShiftLeft,
LcdShiftRight, LcdLine1Clear, LcdLine2Clear, LcdLine1Pos () y LcdLine2Pos ().
Argumento de LcdLine1Pos () y LcdLine2Pos () puede ser un nmero en el rango (1-40)
Byte o variable de tipo de datos. El valor contenido en esa variable debe estar en el mismo
rango. He aqu algunos ejemplos:
DEFINE LCD_BITS = 8
DEFINE LCD_DREG = PORTB
DEFINE LCD_DBIT = 0
DEFINE LCD_RSREG = PORTD
DEFINE LCD_RSBIT = 1
DEFINE LCD_EREG = PORTD
DEFINE LCD_EBIT = 3
DEFINE LCD_RWREG = PORTD
DEFINE LCD_RWBIT = 2
LCDINIT
loop:
LCDOUT "Hola, mundo!"
Waitms 1000
LCDCMDOUT LcdClear
Waitms 1000
Bucle GOTO

DEFINE LCD_BITS = 8
DEFINE LCD_DREG = PORTB
DEFINE LCD_DBIT = 0
DEFINE LCD_RSREG = PORTD
DEFINE LCD_RSBIT = 1
DEFINE LCD_EREG = PORTD
DEFINE LCD_EBIT = 3
DEFINE LCD_RWREG = PORTD
DEFINE LCD_RWBIT = 2
DIM A AS WORD
A = 65,535
LCDINIT 3
Waitms 1000
loop:
LCDOUT "Estoy contando!"
LCDCMDOUT LcdLine2Home
LCDOUT # Un
A = A - 1
Waitms 250
LCDCMDOUT LcdClear
Bucle GOTO
Declaraciones relacionadas con LCD tendrn control sobre TRIS registra conectado con
alfileres utilizados para la interfaz LCD, pero si usa los pins PORTA o PORTE en
dispositivos con A / D Converter Module entonces usted debe tomar el control sobre el
registro ADCON1 establecer pins usados como E / O.
Usted puede configurar hasta ocho charcters definidos por el usuario que se utilizarn en
la pantalla LCD. Esto se puede hacer fcilmente con la declaracin LCDDEFCHAR. El
primer argumento de esta declaracin es el nmero de caracteres y debe estar en el rango de
0-7. Siguiente 8 argumentos forman patrn caracteres de 8 lneas (desde la parte superior
hasta la parte inferior) y deben estar en el rango de 0 a 31 (5-bits de ancho). Estos 8
caracteres usuario se asignan a char cdigos 0-7 y 8-15 y se pueden mostrar using
LCDOUT. Despus de la declaracin LCDDEFCHAR el cursor se situar en la posicin
HOME. Por ejemplo:
LCDDEFCHAR 0, 10, 10, 10, 10, 10, 10, 10, 10
LCDDEFCHAR 1,% 11111,% 10101,% 10101,% 10101,% 10101,
% 10101,% 10101, 11111%
LCDOUT 0, 1, "Hola!", 1, 0
Caso de las LCD con cuatro lneas de caracteres simblicos argumentos adicionales de
declaracin LCDCMDOUT pueden utilizarse: LcdLine3Home, LcdLine4Home,
LcdLine3Clear, LcdLine4Clear, LcdLine3Pos () y LcdLine4Pos (). Argumento de
LcdLine3Pos () y LcdLine4Pos () puede ser un nmero en el rango (1-40) Byte o variable
de tipo de datos. El valor contenido en esa variable debe estar en el mismo rango. Antes de
usar estos elementos del lenguaje, valores correctos que determinan el tipo LCD deben ser
asignados a LCD_LINES y parmetros LCD_CHARS usando DEFINE directivas.
DEFINE LCD_LINES = 4
DEFINE LCD_CHARS = 16
DEFINE LCD_BITS = 8
DEFINE LCD_DREG = PORTB
DEFINE LCD_DBIT = 0
DEFINE LCD_RSREG = PORTD
DEFINE LCD_RSBIT = 1
DEFINE LCD_EREG = PORTD
DEFINE LCD_EBIT = 3
DEFINE LCD_RWREG = PORTD
DEFINE LCD_RWBIT = 2
LCDINIT 3
loop:
LCDCMDOUT LcdClear
LCDCMDOUT LcdLine1Home
LCDOUT "Esta es la lnea 1"
LCDCMDOUT LcdLine2Home
LCDOUT "Esta es la lnea 2"
LCDCMDOUT LcdLine3Home
LCDOUT "Esta es la lnea 3"
LCDCMDOUT LcdLine4Home
LCDOUT "Esta es la lnea de 4"
Waitms 1000
LCDCMDOUT LcdLine1Clear
LCDCMDOUT LcdLine2Clear
LCDCMDOUT LcdLine3Clear
LCDCMDOUT LcdLine4Clear
LcdLine1Pos LCDCMDOUT (1)
LCDOUT "Lnea 1"
LcdLine2Pos LCDCMDOUT (2)
LCDOUT "Lnea 2"
LcdLine3Pos LCDCMDOUT (3)
LCDOUT "Lnea 3"
LcdLine4Pos LCDCMDOUT (4)
LCDOUT "Lnea 4"
Waitms 1000
Bucle GOTO
Interfaz grfica LCD con 128x64 matriz de puntos
Interfaz grfica LCD con una resolucin de matriz de puntos 128x64 controlado por
KS0107 o chip compatible con el apoyo con la siguiente lista de elementos del lenguaje
Basic: GLCDINIT, GLCDCLEAR, GLCDPSET, GLCDPRESET, GLCDPOSITION,
GLCDWRITE, GLCDCLEAN, GLCDOUT, GLCDIN, GLCDCMDOUT. Antes de utilizar
LCDs grficas declaraciones relacionadas, el usuario debe configurar la interfaz con el
mdulo LCD grfica usando DEFINE directivas. Aqu est la lista de los parmetros
disponibles:
GLCD_DREG - define el puerto en el que las lneas de datos estn conectados (tiene que
ser un puerto de 8 pins completo)
GLCD_RSREG - define el puerto donde RS lnea est conectada a
GLCD_RSBIT - define el pin donde RS lnea est conectada a
GLCD_EREG - define el puerto en el que la lnea E est conectado a
GLCD_EBIT - define el pin donde la lnea E est conectado a
GLCD_RWREG - define el puerto en el que R / W lnea est conectada a
GLCD_RWBIT - define el pin donde R / W lnea est conectada a
GLCD_CS1REG - define el puerto en el que la lnea CS1 est conectado a
GLCD_CS1BIT - define el pin donde la lnea CS1 est conectado a
GLCD_CS2REG - define el puerto en el que la lnea CS2 est conectado a
GLCD_CS2BIT - define el pin donde la lnea CS2 est conectado a
Declaracin GLCDINIT debe ser colocado en algn lugar en el inicio del programa
bsico antes de utilizar cualquier otro stetements LCD relacionados grficas. Declaraciones
grficos relacionados LCD tendrn control sobre TRIS registra conectado con alfileres
utilizados para la interfaz LCD, pero si se utiliza pines que se configuran como entradas
analgicas en el arranque de los dispositivos con un convertidor A / D y / o mdulos de
comparadores, usted debe tomar el control sobre el registro correspondiente (s) (ADCON1,
ANSEL, CMCON) para establecer los pins usados como E / S digitales
Declaracin GLCDCLEAR borrar toda la pantalla. Se puede utilizar con un argumento
constante opcional en el rango 0-255 que se colocan en cada posicin de byte en la pantalla
(128x64 pantallas grficas se internaly divididos en dos mitades 64x64; ambas mitades se
dividen en ocho 64x8 pginas horizontales; cada pgina tiene su nmero de
direccionamiento en el rango de 0 a 15; pgina en la esquina superior izquierda tiene el
nmero 0; pgina en la esquina inferior izquierda del nmero 7 ha; pgina en la esquina
superior derecha tiene el nmero 8; pgina en la esquina inferior derecha tiene el nmero
15 ; cada pgina tiene 64 posiciones de bytes abordados con los nmeros en el rango de 0 a
63, cada posicin de byte tiene 8 bits, el bit ms alto es LSB y el bit ms baja es MSB). Por
ejemplo:
GLCDINIT
loop:
GLCDCLEAR 0xAA
Waitms 1000
GLCDCLEAR 0x55
Waitms 1000
Bucle GOTO
Declaraciones GLCDPSET y GLCDPRESET se utilizan para activar y desactivar uno de
los puntos en la pantalla grfica. El primer argumento es la coordenada horizontal y debe
ser un tipo de datos byte variable o constante en el rango de 0-127. El segundo argumento
es la coordenada vertical y debe ser un tipo de datos byte variable o constante en el rango
de 0 a 63. El punto en la esquina superior izquierda de la pantalla se encuentra el origen de
coordenadas 0,0. Por ejemplo:
Dim I As Byte
DIM J AS BYTE
GLCDINIT
FOR I = 0 a 127
Para j = 0 a 63
GLCDPSET I, J
SIGUIENTE J
SIGUIENTE I
Declaracin GLCDCLEAN se utiliza para borrar una seccin de la pgina en la pantalla.
Cuenta con tres argumentos. El primer argumento es la direccin de la pgina y debe ser un
tipo de datos byte variable o constante en el rango de 0 a 15. El segundo argumento es la
primera posicin de byte en la pgina que se limpia y se debe ser un tipo de datos byte
variable o constante en el rango de 0 a 63. El tercer argumento es la ltima posicin de byte
en la pgina que se limpia y se debe ser un tipo de datos byte variable o constante en el
rango de 0 a 63. Si se omiten los dos ltimos argumentos se borrar toda la pgina. Por
ejemplo:
Dim I As Byte
GLCDINIT
GLCDCLEAR 0xFF
FOR I = 0 A 15
GLCDCLEAN I
Waitms 500
SIGUIENTE I
Declaracin GLCDPOSITION se utiliza para hacer frente a una posicin de byte en la
pantalla. Debe ser utilizado antes de cualquiera de los GLCDWRITE, GLCDIN,
GLCDOUT y declaraciones GLCDCMDOUT. El primer argumento es la direccin de la
pgina y debe ser un tipo de datos byte variable o constante en el rango de 0 a 15. El
segundo argumento es la posicin del byte de destino en la pgina y que debe ser un tipo de
datos byte variable o constante en el rango de 0 a 63. Si se omite el segundo argumento, se
utilizar la posicin cero bytes.
Declaracin GLCDWRITE se utiliza para escribir el texto en la pantalla. Se iniciar la
escritura de la posicin del byte actual en la pantalla. Debe ser utilizado con cuidado,
porque cuando se alcanza la posicin de byte (63) de la pgina, la escritura continuar
desde la posicin del byte 0 permanecer en la misma pgina. El ancho de cada carcter
escrito es 5 posiciones de bytes ms un byte posicin clara. Despus de que se ejecuta la
sentencia la posicin del byte actual ser al final del texto escrito. Declaracin
GLCDWRITE puede tener varios argumentos separados por ','. Cuerdas, constantes y
variables byte pueden ser usados como sus argumentos. Constantes y valores de las
variables se interpretan como cdigos ASCII. Si signo '#' se utiliza antes de que el nombre
de una variable (byte o palabra tipo de datos), entonces su representacin decimal se
escribe. Por ejemplo:
Dim I As Byte
GLCDINIT
FOR I = 0 A 15
GLCDPOSITION I, 0
GLCDWRITE "de la pgina:", # I
Waitms 250
SIGUIENTE I
Declaracin GLCDOUT se utiliza para escribir el valor del byte variable o constante en
la posicin de byte actual en la pantalla. La posicin de byte actual se incrementa en uno.
GLCDIN declaracin leer el valor de la posicin de byte actual en la pantalla y lo puso en
la variable de bytes especificada como argumento. Declaracin GLCDCMDOUT se utiliza
para enviar comandos de bajo nivel para la pantalla LCD grfica. Su argumento puede ser
una variable de tipo de datos constante o byte. Todas estas tres afirmaciones se pueden
utilizar con varios argumentos, separados por ','.
El uso de los mdulos PWM internos
Mdulos PWM internos (ms concretamente: modos PWM de mdulos CCP) se activan
mediante declaracin PWMON. Esta declaracin tiene dos argumentos. El primer
argumento es el nmero del mdulo y que debe ser una constante en el rango de 1-2. El
segundo argumento se utiliza para la seleccin de modo. Mdulo de PWM interna se puede
utilizar en tres frecuencias de salida diferentes para cada uno de cuatro resoluciones de
ciclo de trabajo apoyados por declaracin PWMON (10 bits, 9 bits, 8 bits y 7 bits). As, el
mdulo de PWM se puede activar con la declaracin PWMON en 12 modos. Aqu est la
lista de todos los modos de 4 MHz de frecuencia de reloj (para otras frecuencias de reloj,
los valores deben ser ajustados proporcionalmente):
Modo 1: 10 bits, 244Hz
modo 2: 10 bits, 977Hz
Modo 3: 10 bits, 3906Hz
Modo 4: 9 bits, 488Hz
Modo 5: 9 bits, 1953Hz
Modo 6: 9 bits, 7813Hz
el modo 7: 8 bits, 977Hz
el modo de 8: 8 bits, 3906Hz
el modo 9: 8 bits, 15625Hz
Modo 10: 7 bits, 1953Hz
Modo 11: 7 bits, 7813Hz
Modo 12: 7 bits, 31250Hz
El mdulo PWM se inicia en principio con 0 del ciclo de trabajo, por lo que la produccin
se mantendr baja hasta que el ciclo de trabajo se cambia. Mdulo PWM se puede apagar
con la declaracin PWMOFF. Tiene un nico argumento - nmero de mdulo.
El ciclo de trabajo de la seal PWM se puede cambiar con la declaracin PWMDUTY.
Su primer argumento es el nmero de mdulos. El segundo argumento es el ciclo de trabajo
y puede ser una constante en el rango 0-1023 o byte o palabra variable de tipo de datos. El
usuario debe tener cuidado de usar los rangos de los valores adecuados para todos los
modos PWM (0-1023 para la resolucin de 10 bits, 0 a 511 para la resolucin de 9 bits, 0-
255 para una resolucin de 8 bits y 0-127 para la resolucin de 7 bits ). He aqu un ejemplo
ejemplo:
Deber DIM AS BYTE
PWMON 1, 9
loop:
ADCIN 0, deber
PWMDUTY 1, el deber
Bucle GOTO
Las funciones avanzadas
Si se utiliza la directiva STARTFROMZERO el compilador se iniciar el programa de
flash de ubicacin de la memoria del programa de cero (reset vector) y el uso de la
memoria de programa disponible de forma continua. Rutina de interrupcin si se utiliza
debe ser implementada mediante el uso de cdigo ensamblador. El compilador tambin
dejar el control de registro PCLATH al usuario suponiendo que todo el cdigo se coloca
en la misma pgina de la memoria de programa. Esta funcin avanzada puede ser utilizado
en el desarrollo de aplicaciones del gestor de arranque, por ejemplo.

Anda mungkin juga menyukai