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.