MANUAL PIC BASIC EN ESPAÑOL

29
PIC BÁSICO COMPILADOR REFERENCE MANUAL LA LISTA DE TODAS LAS PALABRAS CLAVE DEL COMPILADOR DE BASE: 1WIRE_REG, 1WIRE_BIT, 1WIREINIT, 1WIRESENDBIT, 1WIREGETBIT, 1WIRESENDBYTE, 1WIREGETBYTE, ADCIN, ADC_CLOCK, ADC_SAMPLEUS, ALLDIGITAL, ALLOW_ALL_BAUDRATES, ALLOW_MULTIPLE_HSEROPEN, AND, AS, ASM, BIT, BREAK, BYTE, CALL, CASE, CLOCK_FREQUENCY, CONF_WORD, CONF_WORD_2, CONFIG, CONST, COUNT, COUNT_MODE, CRLF, DEFINE, DIM, DISABLE, DS18S20START, DS18S20READT, EEPROM, ELSE, ENABLE, END, END FUNCTION, END PROC, ENDIF, ENDSELECT, EXIT, FALSE, FOR, FREQOUT, FUNCTION, 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, GOSUB, GOTO, HALT, HIGH, HSERGET, HSERIN, HSEROUT, HSEROPEN, I2CWRITE, I2CREAD, I2CREAD_DELAYUS, I2CCLOCK_STRETCH, I2CWRITE1, I2CREAD1, I2CPREPARE, I2CSTART, I2CSTOP, I2CSEND, I2CRECA, I2CRECEIVEACK, I2CRECN, I2CRECEIVENACK, IF, INPUT, 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, LCDDISPLAYON, LCDDISPLAYOFF, LCDCUROFF, LCDCURBLINK, LCDCURUNDERLINE, LCDCURBLINKUNDERLINE, LCDLEFT, LCDRIGHT, LCDSHIFTLEFT, LCDSHIFTRIGHT, LCDLINE1HOME, LCDLINE2HOME, LCDLINE3HOME, LCDLINE4HOME, LCDLINE1CLEAR, LCDLINE2CLEAR, LCDLINE3CLEAR, LCDLINE4CLEAR, LCDLINE1POS, LCDLINE2POS, LCDLINE3POS, LCDLINE4POS, LCDDEFCHAR, LF, LONG, LOOKUP, LOW, MOD, NAND, NEXT, NOR, NOT, NXOR, ON INTERRUPT, OR, OUTPUT, POINTER, PROC, PWMON, PWMDUTY, PWMOFF, READ, RESERVE, RESUME, RETURN, SAVE SYSTEM, SELECT CASE, SERIN, SERININV, SEROUT, SEROUTINV, SEROUT_DELAYUS, SERVOIN, SERVOOUT, SHIFTLEFT, SHIFTRIGHT, SIMULATION_WAITMS_VALUE, SPI_CS_REG, SPI_CS_BIT, SPI_SCK_REG, SPI_SCK_BIT, SPI_SDI_REG, SPI_SDI_BIT, SPI_SDO_REG, SPI_SDO_BIT, SPICS_INVERT, SPICLOCK_INVERT, SPICLOCK_STRETCH, SPICSON, SPICSOFF, SPIPREPARE, SPISEND, SPISENDBITS, SPIRECEIVE, SQR, STARTFROMZERO, STEP, STEP_A_REG, STEP_A_BIT, STEP_B_REG, STEP_B_BIT, STEP_C_REG, STEP_C_BIT, STEP_D_REG, STEP_D_BIT, STEP_MODE, STEPHOLD, STEPCW, STEPCCW, SYMBOL, THEN, TO, TOGGLE, TRUE, WAITMS, WAITUS, WEND, WHILE, WORD, WREG, WRITE, XOR. ● Elementos del lenguaje Standard Extensión por defecto para archivos de código fuente básica es BAS. La salida del compilador es archivo de código fuente en ensamblador (con extensión ASM) que puede ser traducido al código binario usando el ensamblador integrado. Editor de todas las marcas Smart reservados palabras clave en diferentes colores, que simplifica el proceso de depuración. BÁSICO ensamblador de salida compilador tiene todas las líneas de comentario necesario, que lo hace muy útil para fines educativos, también. www.myspace.com/dahauser

Transcript of MANUAL PIC BASIC EN ESPAÑOL

Page 1: MANUAL PIC BASIC EN ESPAÑOL

PIC BÁSICO COMPILADOR REFERENCE MANUAL

LA LISTA DE TODAS LAS PALABRAS CLAVE DEL COMPILADOR DE BASE:

1WIRE_REG, 1WIRE_BIT, 1WIREINIT, 1WIRESENDBIT, 1WIREGETBIT,1WIRESENDBYTE, 1WIREGETBYTE, ADCIN, ADC_CLOCK, ADC_SAMPLEUS,ALLDIGITAL, ALLOW_ALL_BAUDRATES, ALLOW_MULTIPLE_HSEROPEN, AND,AS, ASM, BIT, BREAK, BYTE, CALL, CASE, CLOCK_FREQUENCY, CONF_WORD,CONF_WORD_2, CONFIG, CONST, COUNT, COUNT_MODE, CRLF, DEFINE, DIM,DISABLE, DS18S20START, DS18S20READT, EEPROM, ELSE, ENABLE, END, ENDFUNCTION, END PROC, ENDIF, ENDSELECT, EXIT, FALSE, FOR, FREQOUT,FUNCTION, 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, GOSUB, GOTO, HALT, HIGH, HSERGET, HSERIN, HSEROUT,HSEROPEN, I2CWRITE, I2CREAD, I2CREAD_DELAYUS, I2CCLOCK_STRETCH,I2CWRITE1, I2CREAD1, I2CPREPARE, I2CSTART, I2CSTOP, I2CSEND, I2CRECA,I2CRECEIVEACK, I2CRECN, I2CRECEIVENACK, IF, INPUT, 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, LCDDISPLAYON, LCDDISPLAYOFF,LCDCUROFF, LCDCURBLINK, LCDCURUNDERLINE, LCDCURBLINKUNDERLINE,LCDLEFT, LCDRIGHT, LCDSHIFTLEFT, LCDSHIFTRIGHT, LCDLINE1HOME,LCDLINE2HOME, LCDLINE3HOME, LCDLINE4HOME, LCDLINE1CLEAR,LCDLINE2CLEAR, LCDLINE3CLEAR, LCDLINE4CLEAR, LCDLINE1POS,LCDLINE2POS, LCDLINE3POS, LCDLINE4POS, LCDDEFCHAR, LF, LONG,LOOKUP, LOW, MOD, NAND, NEXT, NOR, NOT, NXOR, ON INTERRUPT, OR,OUTPUT, POINTER, PROC, PWMON, PWMDUTY, PWMOFF, READ, RESERVE,RESUME, RETURN, SAVE SYSTEM, SELECT CASE, SERIN, SERININV, SEROUT,SEROUTINV, SEROUT_DELAYUS, SERVOIN, SERVOOUT, SHIFTLEFT,SHIFTRIGHT, SIMULATION_WAITMS_VALUE, SPI_CS_REG, SPI_CS_BIT,SPI_SCK_REG, SPI_SCK_BIT, SPI_SDI_REG, SPI_SDI_BIT, SPI_SDO_REG,SPI_SDO_BIT, SPICS_INVERT, SPICLOCK_INVERT, SPICLOCK_STRETCH,SPICSON, SPICSOFF, SPIPREPARE, SPISEND, SPISENDBITS, SPIRECEIVE,SQR, STARTFROMZERO, STEP, STEP_A_REG, STEP_A_BIT, STEP_B_REG,STEP_B_BIT, STEP_C_REG, STEP_C_BIT, STEP_D_REG, STEP_D_BIT,STEP_MODE, STEPHOLD, STEPCW, STEPCCW, SYMBOL, THEN, TO, TOGGLE,TRUE, WAITMS, WAITUS, WEND, WHILE, WORD, WREG, WRITE, XOR.

● Elementos del lenguaje Standard

Extensión por defecto para archivos de código fuente básica es BAS. La salida delcompilador es archivo de código fuente en ensamblador (con extensión ASM) quepuede ser traducido al código binario usando el ensamblador integrado. Editor detodas las marcas Smart reservados palabras clave en diferentes colores, que simplificael proceso de depuración. BÁSICO ensamblador de salida compilador tiene todas laslíneas de comentario necesario, que lo hace muy útil para fines educativos, también.

www.myspace.com/dahauser

Page 2: MANUAL PIC BASIC EN ESPAÑOL

Cuatro tipos de datos son compatibles:- Bit (1-bit, 0 o 1)- Byte (1-byte enteros en el rango de 0 a 255)- Word (enteros de 2 bytes en el rango de 0 a 65.535)- Long (enteros de 4 bytes en el rango de 0 a 4.294.967.295) - módulo opcional

Las declaraciones se pueden colocar en cualquier lugar en el programa. Todas lasvariables son considera mundial. El número total de variables está limitado por ladisponible de memoria RAM del microcontrolador. Las variables son declaradasutilizando Instrucción DIM:

DIM A AS BITDIM B AS BYTEDIM X AS WORDDIM Y AS LONG

Si es necesario, la dirección variable puede ser especificado en la declaración:DIM x As Byte @ 0x050

También es posible usar matrices unidimensionales. Por ejemplo:DIM A (10) As Byte

declara una matriz de 10 variables con el índice de la matriz Byte en el rango de [0-9].Declaración de reserva permite el uso avanzado de la reserva algunos de los Lugaresde memoria RAM para ser utilizado por las rutinas en ensamblador de código oMPLAB In-Circuit Debugger. Por ejemplo:

RESERVE 0x70

De alto y byte bajo de una variable de palabra se puede abordar. HB y. LBextensiones. Bits individuales pueden ser abordadas por .0, .1,..., .14 y .15extensiones. Es posible hacer conversiones entre Byte y Word Los tipos de datosutilizando. LB y. extensiones de HB o directamente:

DIM A AS BYTEDIM B AS WORDA = B.HBA = B.LB 'es equivalente a A = BB.HB = AB.LB = AB = A 'This statement will also clear the high byte of B variable

Palabra alta (compuesto por bytes 3 y 2) y la palabra baja (compuesta por bytes 1 y 0)de una variable de tiempo puede ser dirigida por. HW y. extensiones LW. Byte 0 puedeser dirigida por. LB y por byte 1. Extensiones de HB. Por ejemplo:

DIM A AS BYTEDIM B AS WORDDIM x As Long

www.myspace.com/dahauser

Page 3: MANUAL PIC BASIC EN ESPAÑOL

A = X LBB = X. HW

Todos los registros de funciones especiales (SFRs) están disponibles como variablesByte en programas básicos. Los bits de una variable Byte pueden ser abordadas por.0, .1, .2, .3, .4, .5, .6 Y .7 extensiones o utilizando los nombres oficiales de los bits:

DIM A AS BITDIM B AS BYTEA = B.7B.6 = 1TRISA.1 = 0TRISB = 0PORTA.1 = 1PORTB = 255STATUS.RP0 = 1INTCON.INTF = 0

Formularios estándar de corto para los registros de acceso a puerto y los pernos dechips individuales también están disponibles (RA, RB, RC, RD, RE se puede utilizarcomo variables Byte; RA0, RA1, RA2,..., Te6, RE7 están disponibles como variablesBit):

RA = 0xFFRB0 = 1

Los puertos del microcontrolador y los pernos se pueden configurar como entradas osalidas de la asignación de valores adecuados a los registros de TRISx o sus bits. Esatarea también puede se consigue mediante un comunicado CONFIG. Su sintaxis sedesprende de los siguientes ejemplos:

CONFIG PORTB = OUTPUTCONFIG RA0 = OUTPUTCONFIG PORTC.3 = INPUTCONFIG RD = INPUT

Cualquier variable que se declara como un byte o variable Word utilizando instrucciónDim puede ser utilizado como un puntero a la memoria de usuario de la memoria RAMcuando se utiliza como un argumento de La función de puntero. El valor contenido enla variable que se utiliza como un puntero debe estar en el rango 0-511. He aquí unejemplo:

DIM X AS WORDDIM Y AS BYTEX = 0x3FY = POINTER(X)Y = Y + 0x55X = X - 1POINTER(X) = YY = 0xAA

www.myspace.com/dahauser

Page 4: MANUAL PIC BASIC EN ESPAÑOL

X = X - 1POINTER(X) = Y

También es posible utilizar nombres simbólicos (símbolos) en los programas:

SYMBOL LED1 = PORTB.0LED1 = 1SYMBOL AD_ACTION = ADCON0.GO_DONE

Constantes pueden ser usadas en el sistema de numeración decimal, sin especialesmarcas, en el sistema de número hexadecimal con 0x notación (o con H al final) y enel sistema binario con la marca líder% (o con B en el final). Palabras clave deverdadero y falso también están disponibles para las constantes de tipo bit. Porejemplo:

DIM A AS BITDIM B AS BYTEA = TRUEB = 0x55B = %01010101

Las constantes también pueden ser asignadas a los nombres simbólicos utilizandoCONST Directiva:

DIM A AS WORDCONST PI = 314A = PI

Hay tres estados que se utilizan para la manipulación de bits - ALTA, BAJA y alternar.Si el argumento de estas declaraciones es un poco en un de los registros PORT, acontinuación, el mismo bit en el TRIS correspondiente registro se borraautomáticamente, ajuste el pasador afectados como una salida PIN. Algunosejemplos:

HIGH PORTB.0LOW ADCON0.ADONTOGGLE OPTION_REG.INTEDG

Todos los microcontroladores PIC que incorporan características analógicas(conversores A / D y / o comparadores analógicos) están configurados en el poderpara usar los pines complicado para estos efectos análogos. Para poder utilizar lospines como entrada / salidas digitales, que debe ser el programa de instalación para eluso digital cambiando los valores en algunas de las registros de funciones especialescomo se especifica en las fichas técnicas. Para configurar todos los pines para finesdigitales, la declaración ALLDIGITAL puede ser utilizado al comienzo del programabásico.

Cinco operaciones aritméticas (+, -, *, /, MOD) están disponibles para Byte, Word yTipos de datos Long. El compilador es capaz de compilar todos los complejos posiblesexpresiones aritméticas. Por ejemplo:

www.myspace.com/dahauser

Page 5: MANUAL PIC BASIC EN ESPAÑOL

DIM A AS WORDDIM B AS WORDDIM X AS WORDA = 123B = A * 234X = 2X = (B * X - 12345) / (A + X)

La raíz cuadrada de un número (0-65535 rango) puede ser calculada usando lafunción SQR:DIM A AS WORDA = 3600A = SQR(A)

Para las variables de tipo bit de datos de siete operaciones lógicas disponibles. Esposible hacer sólo una operación lógica en una sola declaración. Las operacioneslógicas también están disponibles para Byte y las variables de Word. Para ejemplo:

DIM A AS BITDIM B AS BITDIM X AS BITX = NOT AX = A AND BX = A OR BX = A XOR BX = A NAND BX = A NOR BX = A NXOR B

DIM A AS WORDDIM B AS WORDA = A OR BPORTB = PORTC AND %11110000

Hay dos parámetros de configuración CONF_WORD y CONF_WORD_2 (nodisponible para todos los dispositivos) que se puede establecer mediante Directivadefinen a reemplazar los valores por defecto. La frecuencia de reloj del dispositivo dedestino puede ser especificado por el parámetro de configuraciónCLOCK_FREQUENCY (el valor es expresada en MHz). Estos parámetros pueden serde instalación al principio del programa básico. Por ejemplo:

DEFINE CONF_WORD = 0x3F72DEFINE CLOCK_FREQUENCY = 20

Contenido de la memoria EEPROM se puede definir en los programas básicosmediante declaración EEPROM. Su primer argumento es la dirección del primer bytede la lista de datos. Múltiples Declaraciones EEPROM se puede utilizar para rellenarlas diferentes áreas de la memoria EEPROM, si es necesario. Por ejemplo:

www.myspace.com/dahauser

Page 6: MANUAL PIC BASIC EN ESPAÑOL

EEPROM 0, 0x55EEPROM 253, 0x01, 0x02, 0x03

La declaración GOTO usa el nombre de etiqueta de línea como argumento. Lasetiquetas de línea debe ser seguido por la marca de dos puntos ":". He aquí unejemplo:

DIM A AS WORDA = 0loop: A = A + 1GOTO loop

WAITMS y declaraciones WAITUS puede ser usado para forzar al programa deesperar a que el número especificado de milisegundos o microsegundos. También esposible utilizar el argumento de variable de bytes de datos de Word o de tipo. Estos lasrutinas de uso de frecuencia de reloj de parámetros que se pueden cambiar desde elMenú Opciones. Rutina WAITUS tiene un retraso mínimo y de paso que tambiéndependerá de los parámetros de la frecuencia de reloj.

DIM A AS WORDA = 100WAITMS AWAITUS 50

NOTA: Al escribir programas para dispositivos PIC real que se la mayoría de losintervalos de demora probable uso que son comparables a 1 segundo o 1000milisegundos. Hay muchos ejemplos en este archivo de ayuda también el uso deltiempo como 'real' intervalos. Pero, si se desea simular los programas que tienen queser mucha paciencia para ver que suceda algo, incluso en equipos muy potentesdisponibles en la actualidad. Para la simulación de 'WaitMs 1000' declaración sobre la4MHz que tienen que esperar el simulador para simular 1000000 instrucciones y setomar mucho tiempo, incluso si "extremadamente rápido" velocidad de simulación estáseleccionado. Así que, sólo con el propósito de la simulación se debería recompilar desus programas con intervalos de retardo ajustado, que no deberá exceder de 1-10ms.Sin embargo, asegúrese de volver a compilar el programa con retrasos original antesde descargarlo a un dispositivo real. Hay una forma fácil de cambiar los argumentos detodas las declaraciones WAITMS en un gran programa básico con un valor en el rangode 1-10 para fines de simulación. Con una línea de código de ajuste de parámetroscon SIMULATION_WAITMS_VALUE DEFINE Directiva, los argumentos de todas lasdeclaraciones WAITMS en el programa serán ignorados y el valor especificado sulugar se utilizará durante la compilación. Establecer el valor 0 (por defecto) para esteparámetro (o la omisión de toda la línea), se cancelará su efecto y el código compiladoestará listo de nuevo para el hardware real.

Si es necesario contar el número de impulsos que llegan a un de los pines delMICROCNTROLADOR durante un cierto período de tiempo, no es COUNTdeclaración disponibles para ese fin. Tiene tres argumentos. La primera es el pin quese conecta a la fuente de pulsos. Que previamente debe ser de configuración comopin de entrada digital. El segundo argumento se define de la duración de laobservación expresada en milisegundos y debe ser un numérico constante en el rango1-10000. El último argumento de esta declaración es un byte o palabra variable, donde

www.myspace.com/dahauser

Page 7: MANUAL PIC BASIC EN ESPAÑOL

el número contado de pulsos serán almacenados después de su ejecución.Declaración CONTAR utiliza el módulo timer0 interior periférica. Hay COUNT_MODEde parámetros disponibles que pueden ser de configuración con Directiva definen. Sise establece en el valor 1 (valor predeterminado) cuentan declaración se cuentan elnúmero de aristas de pulso en aumento. Si COUNT_MODE = 2, el número de aristascaída será contado.

DEFINE COUNT_MODE = 1DIM num_of_pulses AS WORDCOUNT PORTB.0, 1000, num_of_pulses

FREQOUT declaración puede ser utilizada para generar un tren de pulsos (tono desonido) en el pin especificado con frecuencia constante y de duración determinada.Tiene tres argumentos. El primer argumento es el pin que el tono se se generará en.Que previamente deben ser configurados como pines de salida digital. El segundoargumento especifica la frecuencia de tono y debe ser una constante en la rango de 1-10000Hz. El tercer argumento define el tono y la duración también se debe unaconstante numérica en el rango de 1-10000ms. Selección de frecuencias más altastono con baja frecuencia de reloj del microcontrolador puede resultar un tantoimprecisos en la frecuencia de los timbres que generan. Declaración FREQOUTalternativamente, puede ser utilizado en modo 'variable' con datos de Word variablesde tipo de cambio de las constantes durante los dos últimos argumentos. En estemodo del uso de la segunda alegación se supone que debe mantener el período demedia de la señal de (en microsegundos) y el tercer argumento debe contener elnúmero total de pulsos de que se generarán. El siguiente código generará un tonolargo segundo en el pin RB0 con 600Hz de frecuencia:

TRISB.0 = 0FREQOUT PORTB.0, 600, 1000

Estándar de cuatro estructuras básicas son compatibles: FOR-TO-STEP-NEXT,WHILE-WEND, IF-THEN-ELSE-ENDIF y SELECT CASE-CASE-ENDSELECT. Heaquí varios ejemplos:

DIM A AS BYTETRISB = 0A = 255WHILE A > 0

PORTB = AA = A - 1WAITMS 100

WENDPORTB = A

TRISB = 0loop:IF PORTA.0 THEN

PORTB.0 = 1

www.myspace.com/dahauser

Page 8: MANUAL PIC BASIC EN ESPAÑOL

ELSEPORTB.0 = 0

ENDIFGOTO loop

DIM A AS WORDTRISB = 0FOR A = 0 TO 10000 STEP 10

PORTB = A.LBNEXT A

DIM A AS BYTEDIM B AS BYTEDIM X AS BYTEB = 255X = 2TRISB = 0FOR A = B TO 0 STEP -X

PORTB = ANEXT A

DIM A AS BYTEloop:SELECT CASE ACASE 255

A = 1CASE <= 127

A = A + 1CASE ELSE

A = 255ENDSELECTGOTO loop

Después de IF-entonces en la misma línea se pueden colocar casi todos los posibledeclaración de otros y, a continuación ENDIF no se utiliza. No hay límites para elnúmero de declaraciones anidadas de ningún tipo. En las expresiones de prueba deIF-THEN y WHILE es posible las condiciones de uso múltiple AND OR y múltiples.Condiciones separadas por comas múltiples puede ser utilizado con las declaracionescaso, también.

Función de búsqueda puede ser utilizada para seleccionar uno de la lista de Byteconstantes, basados en el valor de la variable índice del byte, es decir suministradocomo argumento separado de la última función. La primera constante en la lista tieneun valor de índice 0. Las constantes seleccionadas serán cargadas en la variableresultado Byte tipo de datos. Si el valor en el índice variable va más allá del número delas constantes en la lista, el resultado variable no se verá afectada por la función. Heaquí un pequeño ejemplo: de 7-segment LED display:

DIM DIGIT AS BYTEDIM MASK AS BYTE

www.myspace.com/dahauser

Page 9: MANUAL PIC BASIC EN ESPAÑOL

loop:TRISB = %00000000FOR DIGIT = 0 TO 9

MASK = LOOKUP(0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F),DIGIT

PORTB = MASKWAITMS 1000

NEXT DIGITGOTO loop

Si todas las constantes en la lista (o parte de ellos) son los valores ASCII, acontinuación, forma más corta de la lista puede ser creada mediante el uso deargumentos de la cadena. Para ejemplo:

MASK = LOOKUP("ABCDEFGHIJK"), INDEX

SHIFTLEFT y funciones SHIFTRIGHT se puede utilizar para cambiar a nivel de bits larepresentación de una variable a la izquierda y la derecha. El primer argumento es laentrada de variable y el segundo argumento es el número de cambios a realizar. Heaquí dos ejemplos:

TRISB = 0x00PORTB = %00000011goleft:WAITMS 250PORTB = SHIFTLEFT(PORTB, 1)IF PORTB = %11000000 THEN GOTO gorightGOTO goleftgoright:WAITMS 250PORTB = SHIFTRIGHT(PORTB, 1)IF PORTB = %00000011 THEN GOTO goleftGOTO goright

TRISB = 0x00PORTB = %00000001goleft:WAITMS 250PORTB = SHIFTLEFT(PORTB, 1)IF PORTB.7 THEN GOTO gorightGOTO goleftgoright:WAITMS 250PORTB = SHIFTRIGHT(PORTB, 1)IF PORTB.0 THEN GOTO goleftGOTO goright

Programas estructurados se pueden escribir con llamadas de subrutina con GOSUBdeclaración de que usa el nombre de etiqueta de línea como argumento. Regreso deuna subrutina se realiza por instrucción de devolución. Usuario necesidad de cuidarque la estructura del programa es coherente. Al utilizar subrutinas, principal necesidad

www.myspace.com/dahauser

Page 10: MANUAL PIC BASIC EN ESPAÑOL

de rutina que terminó con la declaración de END. Declaración de END es compiladocomo un bucle infinito. Aquí está un ejemplo:

SYMBOL ad_action = ADCON0.GO_DONESYMBOL display = PORTBTRISB = %00000000TRISA = %111111ADCON0 = 0xC0ADCON1 = 0HIGH ADCON0.ADONmain:GOSUB getadresultdisplay = ADRESHGOTO mainENDgetadresult:HIGH ad_actionWHILE ad_actionWENDRETURN

Si hay una necesidad de insertar un bucle infinito en el programa básico, que que sepuede hacer con la declaración de HALT. Es posible insertar puntos de interrupciónpara el simulador directamente en la base utilizando programas de instrucción break.Está compilado como código de operación reservados 0x0001 y el simuladorinterpretará este código de operación como un punto de interrupción y el interruptor lavelocidad de simulación de paso a paso. Es posible utilizar los comentarios en losprogramas de fuente básica. Los comentarios debe comenzar con el símbolo decomilla simple ( ') y se puede poner en cualquier lugar de el programa. Las líneas decódigo fuente en ensamblador se puede colocar en cualquier parte de base programade origen y debe comenzar con ASM: prefijo. Por ejemplo:

ASM: NOPASM:LABEL1: MOVLW 0xFF

Los nombres simbólicos de variables declaradas se pueden utilizar en ensambladorrutinas de dirección variable adecuada, porque se le asignará a los nombres por laDirectiva EQU:

DIM VARNAME AS BYTEASM: MOVLW 0xFFASM: MOVWF VARNAME

Cuando se trabaja con el código ensamblador, podría ser útil usar registro de trabajocomo origen o destino en asignar declaraciones. Para esa palabra clave WREGpropósito debe ser utilizada y el compilador se encargará del control del banco:

DIM VARNAME AS BYTEASM: MOVLW 0xFFVARNAME = WREG

www.myspace.com/dahauser

Page 11: MANUAL PIC BASIC EN ESPAÑOL

● apoyo lenguaje estructurado (procedimientos y funciones) - Módulo opcional

Procedimientos pueden ser declarados con la declaración PROC. Pueden contenerhasta 5 argumentos (lista separada por comas) y todos los tipos de datos disponiblesse pueden utilizar para las variables de argumentos. El argumento se declara lasvariables a nivel local, por lo que no es necesario tener únicos los nombres en relacióncon el resto de los usuarios básicos del programa, que hace muy fácil de reutilizaciónde los procedimientos, una vez por escrito en otros programas de base. Losprocedimientos pueden ser salido con la declaración de EXIT. Se debe terminar con lainstrucción End PROC y debe ser colocado después de la declaración END en elprograma. Las llamadas a los procedimientos se apliquen con la instrucción CALL. Lalista de argumentos pasados puede contener variables y constantes numéricas. Porejemplo:

DIM A AS BYTEFOR A = 0 TO 255

CALL portb_display(A)WAITMS 100

NEXT AEND

PROC portb_display(arg1 AS BYTE)PORTB = arg1END PROC

Todos los hechos establecidos para los procedimientos son válidos para las funciones,también. Funciones puede ser declarada con la declaración de FUNCTION. Puedencontener hasta 5 argumentos y las variables de la alegación se declaran a nivel local.Las funciones se pueden salir con Declaración EXIT y debe terminar con EndFunction. El nombre de la función de se declara como una variable global, de modoque si la función se llama con CALL declaración, después de su ejecución función dela variable contendrá el resultado. Forma estándar de llamadas a funciones eninstrucciones de asignación se puede utilizar, también. Un ejemplo simple:

DIM A AS BYTEDIM B AS WORDFOR A = 0 TO 255

B = square(A)NEXT AEND

FUNCTION square(arg1 AS WORD) AS WORDsquare = arg1 * arg1END FUNCTION

● Uso de la memoria EEPROM interna

El acceso a los datos de la memoria EEPROM se pueden programar con LEA yEscribir instrucciones. El primer argumento es la dirección de un byte en la Dememoria EEPROM y puede ser una variable continua o Byte. La segunda argumentoes un dato que se lee o escribe (para la declaración LEA debe ser un Variable debytes). Se sugiere mantener las interrupciones con discapacidad durante el laejecución del comando WRITE.

www.myspace.com/dahauser

Page 12: MANUAL PIC BASIC EN ESPAÑOL

DIM A AS BYTEDIM B AS BYTEA = 10READ A, BWRITE 11, B

● Un internos utilizando / módulo convertidor D

ADCIN declaración está disponible como un apoyo a un interno de convertidor A / D.Su el primer argumento es el número de canal ADC y el segundo argumento es unvariable que se utiliza para almacenar el resultado de la conversión A / D. ADCINinstrucción utiliza dos parámetros ADC_CLOCK y ADC_SAMPLEUS que tienenvalores por defecto 3 y 20. Estos valores por defecto puede ser cambiar medianteDirectiva definen. Parámetro determina ADC_CLOCK la elección de la fuente de relojADC (rango permitido es de 0-3 o 0-7 dependiendo de en el dispositivo utilizado).ADC_SAMPLEUS parámetro establece el ADC deseado tiempo de adquisición enmicrosegundos (0-255). ADCIN afirmación presupone que el pin correspondiente seconfigura como una entrada analógica (TRIS, Registro ADCON1 y en algunosdispositivos de registro ANSEL). Aquí está UN ejemplo:

DIM V(5) AS BYTEDIM VM AS WORDDIM I AS BYTEDEFINE ADC_CLOCK = 3DEFINE ADC_SAMPLEUS = 50TRISA = 0xFFTRISB = 0ADCON1 = 0FOR I = 0 TO 4

ADCIN 0, V(I)NEXT IVM = 0FOR I = 0 TO 4

VM = VM + V(I)NEXT IVM = VM / 5PORTB = VM.LB

● Uso de las interrupciones

La rutina de interrupción debe ser colocado como todas las otras subrutinas despuésde la END declaración. Se debe comenzar con en la interrupción y terminar conResume. Si las operaciones aritméticas, matrices o cualquier otro instruccionescomplejas se utilizan en la rutina de interrupción, entonces salvar el sistema dedeclaración debe ser colocado inmediatamente después de la declaración sobreinterrupción para guardar el contenido de los registros utilizados por el sistema.Habilitar y deshabilitar declaraciones pueden ser utilizadas en el programa principalpara el control de bits GIE en INTCON registro. Instrucción Resume se establece el bitGIE y permitir que los nuevos interrupciones. Por ejemplo:

DIM A AS BYTE

www.myspace.com/dahauser

Page 13: MANUAL PIC BASIC EN ESPAÑOL

A = 255TRISA = 0PORTA = AINTCON.INTE = 1ENABLEENDON INTERRUPT

A = A - 1PORTA = AINTCON.INTF = 0

RESUME

DIM T AS WORDT = 0TRISA = 0xFFADCON1 = 0TRISB = 0OPTION_REG.T0CS = 0INTCON.T0IE = 1ENABLEloop:

ADCIN 0, PORTBGOTO loopENDON INTERRUPT

SAVE SYSTEMT = T + 1INTCON.T0IF = 0

RESUME

Comunicación serie ● utilizando hardware interno UART

El soporte para el hardware y el software de comunicación en serie es también estádisponible. HSEROPEN, HSEROUT, HSERIN y HSERGET las declaraciones sepueden utilizar con dispositivos PIC que han de hardware interno UART. HSEROPENdeclaración establece el hardware UART. Su única argumento es Baud Rate y losvalores permitidos son: 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800,31250, 38400, 56000 y 57600. Si el argumento se omite UART se creará para 9600baudios. Si ALLOW_MULTIPLE_HSEROPEN parámetro se establece en 1, utilizandoDEFINE Directiva, será posible utilizar HSEROPEN declaración de más de , una vezen el programa, por ejemplo, para el cambio, seleccione la velocidad en baudios. SiALLOW_ALL_BAUDRATES parámetro se establece en 1, utilizando DEFINE Todaslas tarifas Directiva baudios en el rango de 100-57600 será permitido. HSEROUTcomando se usa para la transmisión en serie. HSEROUT declaración puede tenervarios argumentos separados por ','. Usted puede utilizar cadenas, LF palabra clavepara la Línea carácter de avance o una palabra clave para la CRLF Carriage Return -Line Feed secuencia, las constantes y variables. Si '#' el signo se utiliza antes de queel nombre de una variable, entonces su decimal la representación se envía al puertoserie. Declaración HSERIN puede ser utilizado para cargar una lista de Byte y lasvariables de Word con los valores recibidos en puerto serie. Esta declaración seráesperar hasta que el número necesario de bytes es reciben en el puerto de serie.Declaración HSERGET con un argumento que debe ser una variable Byte. Si hay uncarácter de espera en recibir la tampón será cargado en la variable, de lo contrario elvalor 0 se cargará. Éstos son algunos ejemplos:

www.myspace.com/dahauser

Page 14: MANUAL PIC BASIC EN ESPAÑOL

DIM I AS BYTEHSEROPEN 38400WAITMS 1000FOR I = 20 TO 0 STEP -1

HSEROUT "Number: ", #I, CrLfWAITMS 500

NEXT I

DIM I AS BYTEHSEROPEN 19200loop:

HSERIN IHSEROUT "Number: ", #I, CrLf

GOTO loop

DIM I AS BYTEHSEROPEN 19200loop:

HSERGET IIF I > 0 THEN

HSEROUT "Number: ", #I, CrLfWAITMS 50

ENDIFGOTO loop

● Software UART aplicación

En todos los dispositivos de serie de software de PIC la comunicación puede serimplementada con serout y declaraciones SERIN. La primera argumento de los dosestados debe ser uno de los pines del microcontrolador, y el segundo argumento esBaud Rate: 300, 600, 1200, 2400, 4800, 9600 o 19200. Uso de las tasas de baudioscon baja frecuencia de reloj puede causar errores de encuadre. Para la declaraciónserout luego sigue la lista de argumentos que se enviados al puerto serie. Usted puedeutilizar cadenas, LF palabra clave para la línea de alimentación carácter o palabraclave para CRLF Carriage Return - Line Feed secuencia, las constantes y variables. Si'#' signo se utiliza antes de que el nombre de una variable entonces su representacióndecimal se envía al puerto serie. Serout declaración SEROUT_DELAYUS usa elparámetro que se puede establecer por el DEFINE Directiva y tiene un valorpredeterminado de 1000 microsegundos. Esto define el intervalo de demora antes deque un personaje sea enviado al puerto de y se utiliza para aumentar la fiabilidad delsoftware serout rutina. Para SERIN declaración luego sigue la lista de Byte y lasvariables de Word que se cargado con los valores recibidos en el puerto de serie. Estadeclaración será esperar hasta el número necesario de bytes se reciben en el puertode serie. Para serie interfaz con los niveles de lógica invertida que hay SERININV y deDeclaraciones SEROUTINV disponibles. Algunos ejemplos:

DEFINE SEROUT_DELAYUS = 5000SEROUT PORTC.6, 1200, "Hello world!", CrLf

www.myspace.com/dahauser

Page 15: MANUAL PIC BASIC EN ESPAÑOL

DIM I AS BYTEloop:

SERIN PORTC.7, 9600, ISEROUT PORTC.6, 9600, "Number: ", #I, CrLf

GOTO loop

● Comunicación I2C con dispositivos externos de I2C

Comunicación I2C se pueden implementar en los programas básicos con I2CWRITE ydeclaraciones I2CREAD. El primer argumento de los dos las declaraciones deben seruno de los pines del microcontrolador que se conecta a la línea SDA del dispositivoI2C externos. El segundo argumento de ambos comandos deben ser uno de los pinesdel microcontrolador que se conectado a la línea SCL. El tercer argumento de amboscomandos debe ser un valor constante o variable Byte llamada "dirección de esclavo".Su formato es se describe en la hoja de datos del dispositivo utilizado. Por ejemplo,para EEPROM 24C de la familia (con entradas de dirección del dispositivo conectadoa suelo), el 0xA0 valor debe utilizarse para el parámetro de esclavos dirección. Enambas declaraciones se tomarán el control sobre el bit 0 de la dirección de esclavosdurante comunicación. El cuarto argumento de ambos comandos deben ser un byteWord o variable (depende del dispositivo utilizado) que contiene el la dirección de laubicación que se tendrá acceso. Si un valor constante se utilizado para el parámetrode dirección debe estar en el rango de valor Byte. La última (quinta) El argumento dela declaración de I2CWRITE Byte es una constante o variable que será escrito a ladirección especificada, y para la declaración I2CREAD debe ser una variable de bytespara almacenar el valor que se leerá de la dirección especificada. Se permite utilizarmás de un argumento de 'datos'. Para los dispositivos I2C que no admiten datos de ladirección argumento hay forma abreviada de las declaraciones I2C (I2CWRITE1 yI2CREAD1) disponibles donde el argumento dirección del esclavo es seguido con unoo más datos argumentos directamente. Para algunos dispositivos esclavos I2C esnecesario hacer un retraso para que el dispositivo esté listo para responder a ladeclaración de I2CREAD. Para ello hay I2CREAD_DELAYUS parámetro que se puedefijados por la Directiva DEFINE y tiene un valor predeterminado de 0 microsegundos.Además, para dispositivos más lentos I2C, podría ser necesario utilizar más pulsos dereloj. Eso se puede hacer mediante el establecimiento de parámetrosI2CCLOCK_STRETCH utilizando Directiva definen. Este parámetro se establecealargamiento del reloj. Su valor predeterminado es 1. He aquí un ejemplo encombinación con el módulo LCD y 24C64 EEPROM (SDA conectado a RC2, SCLconectado a RC3):

DEFINE LCD_BITS = 8DEFINE LCD_DREG = PORTBDEFINE LCD_DBIT = 0DEFINE LCD_RSREG = PORTDDEFINE LCD_RSBIT = 1DEFINE LCD_EREG = PORTDDEFINE LCD_EBIT = 3DEFINE LCD_RWREG = PORTDDEFINE LCD_RWBIT = 2DIM ADDR AS WORDDIM DATA AS BYTESYMBOL SDA = PORTC.2SYMBOL SCL = PORTC.3LCDINIT 3

www.myspace.com/dahauser

Page 16: MANUAL PIC BASIC EN ESPAÑOL

WAITMS 1000FOR ADDR = 0 TO 31

LCDCMDOUT LcdClearDATA = 255 - ADDRI2CWRITE SDA, SCL, 0xA0, ADDR, DATALCDOUT "Write To EEPROM"LCDCMDOUT LcdLine2HomeLCDOUT "(", #ADDR, ") = ", #DATAWAITMS 1000

NEXT ADDRFOR ADDR = 0 TO 31

LCDCMDOUT LcdClearI2CREAD SDA, SCL, 0xA0, ADDR, DATALCDOUT "Read From EEPROM"LCDCMDOUT LcdLine2HomeLCDOUT "(", #ADDR, ") = ", #DATAWAITMS 1000

NEXT ADDR

Hay un conjunto de declaraciones de bajo nivel de I2C de comunicación disponibles, sies necesario para tener más control sobre el proceso de comunicación I2C.Declaración I2CPREPARE tiene dos argumentos que deben ser uno de los alfileresmicrocontrolador. El primer argumento define la línea SDA y el segundo argumentodefine la línea SCL. Esta declaración será preparar estas líneas para ComunicaciónI2C. Declaración I2CSTART generará condición de arranque, y la declaración dei2cstop generará condición de paro. Un byte puede ser envió al esclavo I2C usingI2CSEND. Después de la declaración es bit C ejecutado en registro de estadomantendrá la copia del estado de la Línea SDA durante el ciclo de reconocer. Hay dosafirmaciones que puede ser utilizado para recibir un byte de esclavo I2C. I2CRECA oI2CRECEIVEACK generará señal de reconocimiento durante el ciclo de acknowlegdedespués de recibir el byte. I2CRECN o I2CRECEIVENACK generará no reconocer laseñal durante la ciclo de acknowlegde después de recibir el byte. Un ejemplo:

DIM ADDR AS WORDDIM DATA(31) AS BYTESYMBOL SDA = PORTC.4SYMBOL SCL = PORTC.3ADDR = 0I2CPREPARE SDA, SCLI2CSTARTI2CSEND 0xA0I2CSEND ADDR.HBI2CSEND ADDR.LBI2CSTOPI2CSTARTI2CSEND 0xA1FOR ADDR = 0 TO 30

I2CRECEIVEACK DATA(ADDR)NEXT ADDRI2CRECN DATA(31)I2CSTOP

● Apoyo de Serial Peripheral Interface (SPI) comunicación

www.myspace.com/dahauser

Page 17: MANUAL PIC BASIC EN ESPAÑOL

Antes de utilizar las declaraciones relacionadas con SPI, la interfaz de SPI debecrearse el uso de directivas DEFINE. Hay ocho parámetros disponibles para definir dela conexión de SCK, SDI, SDO y (opcionalmente) las líneas de CS:

SPI_SCK_REG - define el puerto donde la línea SCK está conectado aSPI_SCK_BIT - define el pin en la línea SCK está conectado aSPI_SDI_REG - define el puerto donde la línea IDE está conectado aSPI_SDI_BIT - define el pin donde la línea IDE está conectado aSPI_SDO_REG - define el puerto donde la línea SDO está conectado aSPI_SDO_BIT - define el pin donde la línea SDO está conectado aSPI_CS_REG - define el puerto en línea de CA está conectado aSPI_CS_BIT - define el pin donde la línea CS está conectado aLa configuración de la hipótesis se activa alta de la línea del reloj y la activa baja parala línea ChipSelect. Que puede ser cambiado por asignar el valor 1 aSPICLOCK_INVERT y / o parámetros SPICS_INVERT por la Directiva DEFINE. Paralos dispositivos más lentos SPI, podría ser necesario utilizar más tiempo del relojpulsos. El valor por defecto factor de estiramiento de reloj (1) se puede cambiarmediante el establecimiento de Parámetro SPICLOCK_STRETCH.

Declaración de SPIPREPARE (sin argumentos) preparará las líneas de interfaz depara la comunicación SPI. SPICSON y declaraciones SPICSOFF permitirá /deshabilitar la línea de ChipSelect de la interfaz. Un byte se pueden enviar a ladeclaración periféricos SPI SPISEND utilizando. Para recibir un byte de la declaraciónSPIRECEIVE periférica deben ser utilizados. Para enviar el especificado número debits que hay SPISENDBITS declaración disponible. Su primer argumento debe ser elnúmero de bits que se enviarán [1-8] y el segundo argumento es una variable oconstante de bytes. He aquí un ejemplo para el uso de 25C040 SPI EEPROM:

AllDigital

Define SPI_CS_REG = PORTCDefine SPI_CS_BIT = 0Define SPI_SCK_REG = PORTCDefine SPI_SCK_BIT = 3Define SPI_SDI_REG = PORTCDefine SPI_SDI_BIT = 4Define SPI_SDO_REG = PORTCDefine SPI_SDO_BIT = 5SPIPrepare

Define LCD_BITS = 8Define LCD_DREG = PORTDDefine LCD_DBIT = 0Define LCD_RSREG = PORTEDefine LCD_RSBIT = 0Define LCD_RWREG = PORTEDefine LCD_RWBIT = 1Define LCD_EREG = PORTEDefine LCD_EBIT = 2Define LCD_READ_BUSY_FLAG = 1Lcdinit

Dim addr As Byte

www.myspace.com/dahauser

Page 18: MANUAL PIC BASIC EN ESPAÑOL

Dim data As Byte

For addr = 0 To 10data = 200 - addrSPICSOnSPISend 0x06SPICSOffSPICSOnSPISend 0x02SPISend addrSPISend dataSPICSOffLcdcmdout LcdClearLcdout "Write To EEPROM"Lcdcmdout LcdLine2HomeLcdout "(", #addr, ") = ", #dataWaitMs 500

Next addr

For addr = 0 To 10SPICSOnSPISend 0x03SPISend addrSPIReceive dataSPICSOffLcdcmdout LcdClearLcdout "Read From EEPROM"Lcdcmdout LcdLine2HomeLcdout "(", #addr, ") = ", #dataWaitMs 500

Next addr

Aquí está el ejemplo mismo escrito para 93C86 Microwire EEPROM:

AllDigital

Define SPI_CS_REG = PORTCDefine SPI_CS_BIT = 0Define SPICS_INVERT = 1Define SPI_SCK_REG = PORTCDefine SPI_SCK_BIT = 3Define SPI_SDI_REG = PORTCDefine SPI_SDI_BIT = 4Define SPI_SDO_REG = PORTCDefine SPI_SDO_BIT = 5SPIPrepare

Define LCD_BITS = 8Define LCD_DREG = PORTDDefine LCD_DBIT = 0Define LCD_RSREG = PORTEDefine LCD_RSBIT = 0

www.myspace.com/dahauser

Page 19: MANUAL PIC BASIC EN ESPAÑOL

Define LCD_RWREG = PORTEDefine LCD_RWBIT = 1Define LCD_EREG = PORTEDefine LCD_EBIT = 2Define LCD_READ_BUSY_FLAG = 1Lcdinit

Dim addr As ByteDim data As Byte

SPICSOnSPISendBits 6, %100110SPISendBits 8, %00000000SPICSOff

For addr = 0 To 10data = 200 - addrSPICSOnSPISendBits 6, %101000SPISendBits 8, addrSPISend dataSPICSOffSPICSOnSPISend 0x00SPICSOffLcdcmdout LcdClearLcdout "Write To EEPROM"Lcdcmdout LcdLine2HomeLcdout "(", #addr, ") = ", #dataWaitMs 500

Next addr

For addr = 0 To 10SPICSOnSPISendBits 6, %110000SPISendBits 8, addrSPIReceive dataSPICSOffLcdcmdout LcdClearLcdout "Read From EEPROM"Lcdcmdout LcdLine2HomeLcdout "(", #addr, ") = ", #dataWaitMs 500

Next addr

● Interfaz de carácter LCD

Compilador Basic también cuenta con el apoyo de módulos basados en LCD HD44780o el chip controlador compatible. Antes de utilizar las declaraciones relacionadas conLCD, el usuario debe crear la interfaz de cristal líquido mediante directivas DEFINE.Esta es la lista de la parámetros disponibles:LCD_BITS - define el número de líneas de datos de interfaz (los valores permitidosson de 4 y 8, por defecto es 4)LCD_DREG - define el puerto en el que las líneas de datos están conectados a (pordefecto es PORTB)

www.myspace.com/dahauser

Page 20: MANUAL PIC BASIC EN ESPAÑOL

LCD_DBIT - define la posición de las líneas de datos para la interfaz de 4-bit (0 o 4;por defecto es 4), ignorado por 8-bit de interfaz deLCD_RSREG - define el puerto donde se conecta la línea RS (por defecto es PORTB)LCD_RSBIT - define el pin RS cuando está conectado a la línea (por defecto es 3)LCD_EREG - define el puerto donde se conecta la línea E (por defecto es PORTB)LCD_EBIT - define el pin donde se conecta la línea E (por defecto es 2)LCD_RWREG - define el puerto en el R / W es la línea conectada (en conjunto a la 0 sino se utiliza; 0 es por defecto)LCD_RWBIT - define el pin en R / W es la línea conectada a (a 0 si no se utiliza, 0 pordefecto)LCD_COMMANDUS - define el retraso después de la declaración LCDCMDOUT (valorpor defecto es 5000)LCD_DATAUS - define el retraso después de la declaración LCDOUT (por defecto elvalor es 100)LCD_INITMS - define el retraso de la declaración LCDINIT (valor por defecto es 100)

Los tres últimos parámetros pueden ser fijados a los valores bajos cuando se utilizasimulador de LCD integrada módulo. Si R / W es la línea conectada almicrocontrolador y LCD_READ_BUSY_FLAG parámetro se establece en 1, utilizandoDEFINE Directiva, a continuación, estos parámetros de demora será ignorado por elcompilador y el momento correcto será llevarse a cabo mediante la lectura de lasituación de la bandera de ocupado en la pantalla LCD.

Declaración LCDINIT debe ser colocado en el programa antes de cualquiera deLCDOUT (utilizado para el envío de datos) y LCDCMDOUT (utilizado para el envío decomandos) las declaraciones. Argumento numérico constante de LCDINIT se utilizapara definir el tipo de cursor: 0 = No cursor (por defecto), 1 = abrir y cerrar, 2 =subrayado, parpadeo + 3 = subrayado. LCDOUT y declaraciones LCDCMDOUT puedetener varios argumentos separados por ','. Cadenas, constantes y variables puedenser utilizados como los argumentos de la declaración de LCDOUT. Si '#' signo seutiliza antes de que el nombre de una variable, entonces su representación decimal seenvía al módulo LCD. Las constantes y las variables pueden ser utilizados comoargumentos de LCDCMDOUT declaración y las siguientes palabras también estándisponibles: LcdClear, LcdHome, LcdLine2Home, LcdDisplayOn, LcdDisplayOff,LcdCurOff, LcdCurBlink, LcdCurUnderline, LcdCurBlinkUnderline, LcdLeft, LcdRight,LcdShiftLeft, LcdShiftRight, LcdLine1Clear, LcdLine2Clear, LcdLine1Pos () yLcdLine2Pos (). Argumento de LcdLine1Pos () y LcdLine2Pos () puede ser un númeroen el rango (1-40) o datos de tipo Byte variable. El valor contenido en esa variabledebe estar en el mismo rango. LcdDisplayOn y LcdDisplayOff será desactivar elcursor. Cursor relacionados simbólico comandos pueden ser utilizados comoargumentos de LCDINIT. Éstos son algunos ejemplos:

DEFINE LCD_BITS = 8DEFINE LCD_DREG = PORTBDEFINE LCD_DBIT = 0DEFINE LCD_RSREG = PORTDDEFINE LCD_RSBIT = 1DEFINE LCD_EREG = PORTDDEFINE LCD_EBIT = 3DEFINE LCD_RWREG = PORTDDEFINE LCD_RWBIT = 2LCDINIT LcdCurBlinkloop:

www.myspace.com/dahauser

Page 21: MANUAL PIC BASIC EN ESPAÑOL

LCDOUT "Hello world!"WAITMS 1000LCDCMDOUT LcdClearWAITMS 1000

GOTO loop

DEFINE LCD_BITS = 8DEFINE LCD_DREG = PORTBDEFINE LCD_DBIT = 0DEFINE LCD_RSREG = PORTDDEFINE LCD_RSBIT = 1DEFINE LCD_EREG = PORTDDEFINE LCD_EBIT = 3DEFINE LCD_RWREG = PORTDDEFINE LCD_RWBIT = 2DIM A AS WORDA = 65535LCDINIT 3WAITMS 1000loop:

LCDOUT "I am counting!"LCDCMDOUT LcdLine2HomeLCDOUT #AA = A - 1WAITMS 250LCDCMDOUT LcdClear

GOTO loop

Declaraciones relacionadas con LCD tendrá el control de los registros TRISconectados con clavos utilizados para la interfase LCD, pero si se utiliza PORTA oPorte pins en dispositivos con A / D Converter Módulo entonces usted debería tomar elcontrol sobre el registro ADCON1 utilizados para establecer los pines como E / Sdigital

Puedes configurar hasta ocho caracteres definidos por el usuario que se utilizará en lapantalla LCD. Esto puede hacerse fácilmente con la declaración de LCDDEFCHAR. Laprimera el argumento de esta afirmación es el número de caracteres y debe estar en elrango de 0-7. El próximo 8 de argumentos el Formulario 8-char patrón de línea (dearriba hacia abajo) y debe estar en el rango 0-31 (5-bits de ancho). Estos personajes 8de usuario se asignados a los códigos de caracteres 0-7 y 8-15 y se pueden mostrarutilizando LCDOUT declaración. Después de la declaración LCDDEFCHAR el cursorestará en Posición inicial. Por ejemplo:

LCDDEFCHAR 0, 10, 10, 10, 10, 10, 10, 10, 10LCDDEFCHAR 1, %11111, %10101, %10101, %10101, %10101,%10101, %10101, %11111LCDOUT 0, 1, "Hello!", 1, 0

Para LCD con cuatro líneas de caracteres adicionales argumentos simbólico deLCDCMDOUT declaración puede ser utilizada: LcdLine3Home, LcdLine4Home,LcdLine3Clear, LcdLine4Clear, LcdLine3Pos () y LcdLine4Pos (). Argumento deLcdLine3Pos () y LcdLine4Pos () puede ser un número en el rango (1-40) o datos de

www.myspace.com/dahauser

Page 22: MANUAL PIC BASIC EN ESPAÑOL

tipo Byte variable. El valor contenido en esa variable debe estar en la misma gama.Antes de utilizar estos elementos el idioma, los valores correctos determinar el tipo deLCD debe ser asignado a LCD_LINES y parámetros LCD_CHARS mediante directivasDEFINE.

DEFINE LCD_LINES = 4DEFINE LCD_CHARS = 16DEFINE LCD_BITS = 8DEFINE LCD_DREG = PORTBDEFINE LCD_DBIT = 0DEFINE LCD_RSREG = PORTDDEFINE LCD_RSBIT = 1DEFINE LCD_EREG = PORTDDEFINE LCD_EBIT = 3DEFINE LCD_RWREG = PORTDDEFINE LCD_RWBIT = 2LCDINIT 3loop:

LCDCMDOUT LcdClearLCDCMDOUT LcdLine1HomeLCDOUT "This is line 1"LCDCMDOUT LcdLine2HomeLCDOUT "This is line 2"LCDCMDOUT LcdLine3HomeLCDOUT "This is line 3"LCDCMDOUT LcdLine4HomeLCDOUT "This is line 4"WAITMS 1000LCDCMDOUT LcdLine1ClearLCDCMDOUT LcdLine2ClearLCDCMDOUT LcdLine3ClearLCDCMDOUT LcdLine4ClearLCDCMDOUT LcdLine1Pos(1)LCDOUT "Line 1"LCDCMDOUT LcdLine2Pos(2)LCDOUT "Line 2"LCDCMDOUT LcdLine3Pos(3)LCDOUT "Line 3"LCDCMDOUT LcdLine4Pos(4)LCDOUT "Line 4"WAITMS 1000

GOTO loop

● Interfaz gráfica LCD con matriz de puntos de 128x64

Interfaz gráfica de LCD con resolución de 128x64 puntos controlada por la matrizKS0108 o chip compatible es compatible con la siguiente lista de elementos delenguaje de base: GLCDINIT, GLCDCLEAR, GLCDPSET, GLCDPRESET,GLCDPOSITION, GLCDWRITE, GLCDCLEAN, GLCDOUT, GLCDIN, GLCDCMDOUT.Antes de utilizar gráficos declaraciones relacionadas con LCD, el usuario debeconfigurar la interfaz con el módulo LCD gráfica usando las directivas establecen. Aquíestá la lista de parámetros disponibles:

www.myspace.com/dahauser

Page 23: MANUAL PIC BASIC EN ESPAÑOL

GLCD_DREG - define el puerto en el que las líneas de datos están conectados a (seha ser completos de 8 pines del puerto)GLCD_RSREG - define el puerto en el RS línea está conectada aGLCD_RSBIT - define el pin RS en línea está conectada aGLCD_EREG - define el puerto en la línea E se conecta aGLCD_EBIT - define el pin en la línea E se conecta aGLCD_RWREG - define el puerto en el R / W en línea está conectada aGLCD_RWBIT - define el pin en R / W línea está conectada aGLCD_CS1REG - define el puerto donde la línea CS1 está conectado aGLCD_CS1BIT - define el pin donde la línea CS1 está conectado aGLCD_CS2REG - define el puerto donde la línea está conectada a CS2GLCD_CS2BIT - define el pin donde la línea CS2 está conectado a

Declaración GLCDINIT debe ser colocado en algún lugar del comienzo de la programade base antes de que los gráficos se stetements LCD relacionadas que se utilicen.LCD gráfica de las declaraciones relacionadas a tomar el control de los registros TRISrelacionados con alfileres utilizados para la interfase LCD, pero si usted usa pines quese de configuración como entradas analógicas en el encendido de los dispositivos conun convertidor D / A y / o El comparador de módulos, usted debe tomar el controlsobre el registro correspondiente (s) (ADCON1, Ansel, CMCON) para fijar pernosusados como digital I / O.

GLCDCLEAR declaración de voluntad clara toda la pantalla. Se puede utilizar con unaargumento constante opcional en el rango 0-255, que se pondrán en cada la posiciónde byte en la pantalla (128x64 muestra gráfica se divide internaly 64x64 en dosmitades, las dos mitades se dividen en ocho páginas 64x8 horizontal; cada páginatiene su número de abordar en el rango 0-15, página en la parte superior izquierdaRincón tiene el número 0; página en la esquina inferior izquierda tiene el número 7,página en la la esquina superior derecha tiene el número 8, página en la esquinainferior derecha tiene el número 15; Cada página tiene 64 posiciones de byte deabordarse con números en el rango 0-63; todas las posiciones de byte tiene 8 bits, elbit superior es LSB y la más baja poco es MSB). Por ejemplo:

GLCDINITloop:

GLCDCLEAR 0xAAWAITMS 1000GLCDCLEAR 0x55WAITMS 1000

GOTO loop

GLCDPSET y declaraciones GLCDPRESET se utilizan para encender y apagar uno delos puntos en la pantalla gráfica. El primer argumento es el coordenada horizontal ydebe ser un tipo de byte de datos constante o variable en el rango de 0-127. Elsegundo argumento es la coordenada vertical y es debe ser un tipo de datos bytevariable o constante en el rango de 0-63. El punto en la esquina superior izquierda dela pantalla es el origen de coordenadas 0,0. Por ejemplo:

DIM I AS BYTEDIM J AS BYTEGLCDINIT

www.myspace.com/dahauser

Page 24: MANUAL PIC BASIC EN ESPAÑOL

FOR I = 0 TO 127FOR J = 0 TO 63

GLCDPSET I, JNEXT JNEXT I

GLCDCLEAN comando se usa para borrar una sección de la página en la pantalla.Tiene tres argumentos. El primer argumento es la dirección de la página y debe ser unbyte de datos de tipo variable o constante en el rango de 0-15. El segundo argumentoes la posición de primer byte de la página que será limpiado y debe ser un byte dedatos de tipo variable o constante en el rango de 0-63. El tercer argumento es laposición de último byte de la página que será limpiado y debe ser un byte de datos detipo variable o constante en el rango de 0-63. Si los dos últimos argumentos Se hanomitido toda la página se borrará. Por ejemplo:

DIM I AS BYTEGLCDINITGLCDCLEAR 0xFFFOR I = 0 TO 15

GLCDCLEAN IWAITMS 500

NEXT

I Declaración GLCDPOSITION se utiliza para tratar una posición de byte en lapantalla. Debe ser usado antes de cualquiera de los GLCDWRITE, GLCDIN,GLCDOUT y GLCDCMDOUT declaraciones. El primer argumento es la dirección de lapágina y debe ser un tipo de datos de byte variable o constante en el rango de 0-15. Elsegundo argumento es el byte de destino posición en la página y debe ser un tipo dedatos byte variable o constante en la rango 0-63. Si se omite el segundo argumento,se utiliza en posición cero bytes.

GLCDWRITE comando se usa para escribir texto en la pantalla. Se empieza a escribirde la posición de byte actual en la pantalla. Debe usarse con cuidado, porque cuandose alcanza la posición de byte (63) de la página, la escritura continuará a partir de laposición de byte 0 mantenerse en la misma página. El ancho de cada carácter escritoes de 5 posiciones de byte más una posición de byte claro. Después de la instrucciónse ejecuta la posición de byte actual será al final del texto escrito. GLCDWRITEdeclaración puede tener varios argumentos separados por ','. Cadenas, constantes yvariables byte se puede utilizar como sus argumentos. Constantes y valores de lasvariables son interpretadas como códigos ASCII. Si '#' signo se utiliza antes de que elnombre de una variable (byte o palabra de datos de tipo), su representación decimalestá escrito. Por ejemplo:

DIM I AS BYTEGLCDINITFOR I = 0 TO 15

GLCDPOSITION I, 0GLCDWRITE "Page: ", #IWAITMS 250

NEXT I

www.myspace.com/dahauser

Page 25: MANUAL PIC BASIC EN ESPAÑOL

GLCDOUT comando se usa para escribir el valor de la variable o constante de bytesen la posición de byte actual en la pantalla. La posición de byte actual se incrementaen uno. Declaración de GLCDIN leerá el valor de la posición de byte actual en elmostrar y poner en la variable de bytes especificado como argumento. GLCDCMDOUTcomando se usa para enviar comandos de bajo nivel a la pantalla LCD gráfica. Suargumento puede ser una variable constante o byte de tipo de datos. Estos tresestados se puede utilizar con varios argumentos separados por ','.

● Uso de los módulos de PWM internos

Interior módulos de PWM (con más precisión: los modos PWM de los módulos CCP)se convierten en la declaración de PWMON utilizando. Esta declaración tiene dosargumentos. El primer argumento es el número de módulo y debe ser una constanteen el rango de 1-3. El segundo argumento se utiliza para la selección de modo. Interiormódulo PWM se puede utilizar en tres diferentes frecuencias de salida para cada unade las cuatro resoluciones ciclo de trabajo con el apoyo de la declaración PWMON(10-bit, 9-bit, 8-bit y de 7-bit). Así, el módulo PWM se puede activar con PWMONdeclaración de 12 modos. Esta es la lista de todos los modos de frecuencia de reloj de4MHz (para las frecuencias de reloj, el valor debe ser ajustado proporcionalmente):

mode 1: 10-bit, 244Hzmode 2: 10-bit, 977Hzmode 3: 10-bit, 3906Hzmode 4: 9-bit, 488Hzmode 5: 9-bit, 1953Hzmode 6: 9-bit, 7813Hzmode 7: 8-bit, 977Hzmode 8: 8-bit, 3906Hzmode 9: 8-bit, 15625Hzmode 10: 7-bit, 1953Hzmode 11: 7-bit, 7813Hzmode 12: 7-bit, 31250Hz

El módulo PWM es inicialmente comenzó con 0 ciclo de trabajo, por lo que la salida sepermanecer bajo hasta que el ciclo de trabajo ha cambiado. Módulo PWM se puededesactivar con Declaración PWMOFF. Tiene un solo argumento - el número demódulo.

El ciclo de trabajo de la señal PWM se puede cambiar con la declaración dePWMDUTY. Su primera es el argumento de número de módulo. El segundoargumento es ciclo de trabajo y puede ser un constante en el rango 0-1023 o byte dedatos o variables de tipo palabra. El usuario debe tener cuidado de usar los rangos devalores adecuados para todos los modos PWM (0-1023 de 10-bits de resolución, 0-511 de 9-bits de resolución, 0-255 de 8-bits de resolución y 0-127 de 7-bit deresolución). He aquí un ejemplo:

DIM duty AS BYTEPWMON 1, 9loop:

ADCIN 0, dutyPWMDUTY 1, duty

GOTO loop

www.myspace.com/dahauser

Page 26: MANUAL PIC BASIC EN ESPAÑOL

● Interfaz de Radio Control (R / C) servos de

Para las solicitudes por escrito a la interfaz R / C servos hay dos declaracionesdisponibles: SERVOIN y SERVOOUT. R / C servo es controlado por un tren de pulsos(15-20 pulsos por segundo), cuya longitud definir la posición del brazo del servo. Lalongitud de los pulsos es válida en el rango de 1-2ms. Estos dos estados tienen dosargumentos. El primer argumento de las dos declaraciones es el pin delmicrocontrolador donde la señal del servo se recibe o se transmiten. Para SERVOINdeclaración que el pin debe ser previamente preparada como un pin de entrada y parala declaración de SERVOOUT El PIN debe tener la configuración para la salida. Elsegundo argumento de SERVOIN declaración debe ser una variable Byte donde laduración del pulso se guardarán. Los pulsos se miden en unidades de 10us, por lo quees posible medir los pulsos en el rango de 0.01-2.55ms. El valor almacenado en lavariable de servos normales debe estar en el rango 100-200. El segundo argumentode la declaración SERVOOUT debe ser una variable o constante byte que determinala la duración del impulso generado. Para un correcto funcionamiento del servo dedestino Declaración SERVOOUT debe ser ejecutado 15-20 veces durante un segundo.Aquí está un ejemplo de la operación inversa servo:

DIM length AS BYTETRISB.0 = 1TRISB.1 = 0loop:

SERVOIN PORTB.0, lengthIF length < 100 THEN length = 100IF length > 200 THEN length = 200length = length - 100length = 100 - lengthlength = length + 100SERVOOUT PORTB.1, length

GOTO loop

● Interfaz de Motores paso a paso

Antes de usar el motor de pasos relacionados con las declaraciones, su conexión ydeseada el modo de unidad debe ser configurada usando directivas DEFINE. Hayocho disponibles parámetros para definir la conexión de A, B, C y D de bobinas:STEP_A_REG - define el puerto en el que una bobina se conecta aSTEP_A_BIT - define el pin en una bobina se conecta aSTEP_B_REG - define el puerto en el que la bobina B está conectado aSTEP_B_BIT - define el pin en la bobina B está conectado aSTEP_C_REG - define el puerto en el que la bobina está conectado a CSTEP_C_BIT - define el pin en la bobina está conectado a CSTEP_D_REG - define el puerto donde la bobina D se conecta aSTEP_D_BIT - define el pin en una bobina se conecta a

Bobinas A y C son de hecho parte de una sola bobina con conexión común. Lo mismoes válido para conexiones de la bobina B y D. También hay STEP_MODE parámetroutilizado para definir el modo de unidad. Si se establece en 1 (por defecto), el motorserá impulsado por en modo de paso. El valor 2 se debe utilizar para el modo demedio paso. La afirmación fundamental primero que se debe utilizar es STEPHOLD.Se configurará utilizados como salidas de pines y también energizar A y B, bobinas

www.myspace.com/dahauser

Page 27: MANUAL PIC BASIC EN ESPAÑOL

para fijar el rotor en su posición inicial. Para el rotor se mueve en direcciones hacia laderecha y la izquierda hay STEPCW y declaraciones STEPCCW disponibles. Suprimer argumento es el número de pasos del rotor que se llevará a cabo y se puedeByte tipo de datos constante o variable. El segundo argumento se define el tiempotranscurrido entre dos pasos consecutivos expresó en microsegundos por un byte dedatos de Word o de tipo variable o constante. Si se utiliza STEPCW resultados de lainstrucción en el movimiento del rotor en sentido contrario a continuación, la conexiónla configuración de las bobinas B y D deben ser intercambiados. He aquí dos ejemplos(el segundo ejemplo, se utiliza retrasos adecuados para la simulación en el simulador):

AllDigitalADCON1 = 0x0EDefine STEP_A_REG = PORTBDefine STEP_A_BIT = 7Define STEP_B_REG = PORTBDefine STEP_B_BIT = 6Define STEP_C_REG = PORTBDefine STEP_C_BIT = 5Define STEP_D_REG = PORTBDefine STEP_D_BIT = 4Define STEP_MODE = 2

WaitMs 1000StepHoldWaitMs 1000

Dim an0 As Word

loop:Adcin 0, an0an0 = an0 * 60an0 = an0 + 2000StepCW 1, an0

Goto loop

AllDigitalDefine STEP_A_REG = PORTBDefine STEP_A_BIT = 7Define STEP_B_REG = PORTBDefine STEP_B_BIT = 6Define STEP_C_REG = PORTBDefine STEP_C_BIT = 5Define STEP_D_REG = PORTBDefine STEP_D_BIT = 4Define STEP_MODE = 2

WaitUs 300StepHoldWaitUs 1000

loop:StepCCW 16, 300WaitUs 1000

www.myspace.com/dahauser

Page 28: MANUAL PIC BASIC EN ESPAÑOL

StepCW 24, 300WaitUs 1000

Goto loop

● Interfaz 1-WIRE dispositivos

Antes de utilizar 1-WIRE declaraciones relacionadas con, el usuario debe definir el PINcuando el dispositivo está conectado a la utilización de las directivas establecen. Losparámetros disponibles son 1WIRE_REG y 1WIRE_BIT. Por ejemplo:

DEFINE 1WIRE_REG = PORTBDEFINE 1WIRE_BIT = 0

Secuencia de inicialización se puede realizar por la declaración 1WIREINIT. Puedehaber un argumento opcional (datos de bits variable de tipo) que se se pone a 0 si lapresencia del dispositivo se ha detectado y puesto a 1 si no hay ningún dispositivo enla línea. Bits individuales (ranuras de tiempo) pueden ser enviados y recibidos desde eldispositivo utilizando 1WIRESENDBIT y declaraciones 1WIREGETBIT. Ambasafirmaciones pueden tienen múltiples argumentos - lista separada por comas de lasvariables de tipo bit de datos constantes de bits (o para la declaración1WIRESENDBIT). 1WIRESENDBYTE y declaraciones 1WIREGETBYTE se puedeutilizar para enviar y recibir bytes desde el dispositivo. Ambas afirmaciones puedentienen múltiples argumentos - lista separada por comas de los datos de las variablesde tipo Byte constantes Byte (o para la declaración 1WIRESENDBYTE). He aquí unejemplo para medir la temperatura utilizando el dispositivo DS18S20:

DIM finish AS BITDIM temp AS BYTEDIM sign AS BYTE1WIREINIT1WIRESENDBYTE 0xCC, 0x44WAITMS 1loop:

1WIREGETBIT finishIF finish = 0 THEN GOTO loop1WIREINIT1WIRESENDBYTE 0xCC, 0xBE1WIREGETBYTE temp, sign

Este ejemplo puede ser muy corto, utilizando dos DS18S20 de alto nivel específicaslos enunciados básicos. Declaración DS18S20START iniciará una sola temperaturaconversión. De acuerdo con la hoja de datos del dispositivo de conversión secompletará en en la mayoría de 750ms. Después de ese período el valor medidopuede ser leído por Declaración de DS18S20READT que requiere dos variables detipo Byte de datos como argumentos. El primer argumento contendrá el valor de latemperatura en 0,5 grados centígrados unidades (por ejemplo, el valor de 100representa la temperatura de 50 grados). El segundo argumento contendrá el valor0x00 si la temperatura es positivo y 0xFF valor si es negativo. Por ejemplo:

DIM temp AS BYTEDIM sign AS BYTE

www.myspace.com/dahauser

Page 29: MANUAL PIC BASIC EN ESPAÑOL

DS18S20STARTWAITMS 1000DS18S20READT temp, sign

● Las funciones avanzadas

Si la Directiva STARTFROMZERO se utiliza el compilador se iniciará el programa decero programa de ubicación de memoria flash (vector de reset) y utilizar el programadisponible memoria de forma continua. De rutina de interrupción si se usan deben seraplicadas por el uso código ensamblador en línea. El compilador también dejará elcontrol de registro PCLATH para el usuario el supuesto de que todo el código secoloca en la misma página del programa de la memoria. Esta función avanzada sepuede utilizar cuando el desarrollo de aplicaciones del gestor de arranque, paraejemplo.

www.myspace.com/dahauser