Codigos de Pic Basic
Codigos de Pic Basic
Codigos de Pic Basic
Hagamos una breve descripción de los pines:
VDD: Alimentacion 5 VDC.
GND o VSS: Tierra.
MCLR: es el pin que resetea el pic. Si este recibe una señal 0 o de cero voltios, el pic se resetea. Si recibe una señal
alta o de 5 voltios, el pic no se resetea.
OSC1 y OSC2: Son los pines de conexión del reloj u oscilador externo, que, por lo general es de 4 Mhz.
RA0 al RA4: Son los pines del puerto A.
RB0 al RB7: Son los pines de conexión del puerto B.
1.2. DESCRIPCION DE LOS PINES DE UN PIC 16F877
SENA REGIONAL SUCRE 2 ING ANTONIO FAVIO OSPINO
[email protected]
Hagamos una breve descripción de los pines:
VDD: Alimentacion 5 VDC.
GND o VSS: Tierra.
OSC1 y OSC2: Son los pines de conexión del reloj u oscilador externo, que, por lo general es de 4 Mhz.
RA0/AN0 al RA5: Son los pines del puerto A, que pueden ser configurados como puertos análogos.
RE0/AN0 al RE1: Son los pines del puerto E, que pueden ser configurados como puertos análogos.
RB0 al RB7: Son los pines de conexión del puerto B.
RC0 al RC7: Son los pines de conexión del puerto B.
RD0 al RD7: Son los pines de conexión del puerto B, muy utilizados en la conexión de pantallas lcd.
1.3. COMANDOS BASICOS DEL PIC BASIC
Una programación cualquiera tiene un encabezamiento, cuerpo y fin del programa. El primer comendo básico que
va en el encabezamiento de todo programa es el comando DEVICE.
1.3.1. COMANDO DEVICE
Es el comando que nos indica el tipo de microcontrolador que se va a emplear o usar en la programación. Su
sintaxis es:
DEVICE 16F84
SENA REGIONAL SUCRE 3 ING ANTONIO FAVIO OSPINO
[email protected]
DEVICE 16F877
1.3.2. COMANDO XTAL
Indica la velocidad del reloj en megahertz. Su sintaxis es:
XTAL VELOCIDAD EN MHZ
XTAL 4
1.3.3. ASIGNACION DE ENTRADAS Y SALIDAS A LOS DISTINTOS PUERTOS DEL MICROCONTROLADOR
Esta asignación de un puerto como entrada de datos se puede hacer de dos formas: con los comandos TRIS e
INPUT. Veamos a sintaxis de cada uno:
1.3.3.1. COMANDO INPUT
Para designar un puerto como entrada de datos. Su sintaxis es:
INPUT PORTPUERTO.PIN
Por ejemplo:
INPUT PORTA.0
Cuando se desea configurar todo un grupo de pines como entrada, basta con solo designar el puerto sin ubicar
ningún pin. Ejemplo:
INPUT PORTA
COMANDO OUTPUT
Para designar un puerto como salida de datos. Su sintaxis es:
OUTPUT PORTPUERTO.PIN
Por ejemplo:
OUTPUT PORTA.0
Cuando se desea configurar todo un grupo de pines como salidas, basta con solo designar el puerto sin ubicar
ningún pin. Ejemplo:
OUTPUT PORTA
1.3.3.2. COMANDO TRIS
Los comandos TRIS también se emplean para designar los puertos del pic como entradas o salidas. Para
determinar un puerto como salida la sintaxis es:
TRISPUERTO.PIN = 0
Por ejemplo:
SENA REGIONAL SUCRE 4 ING ANTONIO FAVIO OSPINO
[email protected]
TRISB.1 = 0
Si se desea configurar un bloque como salidas la sintaxis es:
TRISPUERTO = %00000000
Ejemplo:
TRISB = %00000000
Para determinar un puerto como entrada la sintaxis es:
TRISPUERTO.PIN = 1
Por ejemplo:
TRISB.1 = 1
Si se desea configurar un bloque como salidas la sintaxis es:
TRISPUERTO = %11111111
Ejemplo:
TRISB = %11111111
1.3.4. COMANDO SYMBOL
Para designar un nombre a una constante, puerto, variable, constante o registro. Su sintaxis es:
SYMBOL NOMBRE A DESIGNAR = PORTPUERTO.PIN
por ejemplo:
SYMBOL MOTOR = PORTB.1
SYMBOL PI =3.1416
SYMBOL CIEN = 100
SYMBOL AREA = PI*9
1.3.5. ASIGNACION DE VALORES DE ESTADO A PUERTOS
En la programación, muchas veces es requerido asignar estado a las entradas o salidas de los puertos del pic. Este
se pude hacer de dos formas:
PORTA.0 = 1 HIGT PORTA.0
MOTOR = 0 LOW MOTOR
1.3.6. COMANDO DELAYMS Y DELAYUS
SENA REGIONAL SUCRE 5 ING ANTONIO FAVIO OSPINO
[email protected]
Establecen un retardo en la ejecución del programa. El comando DELAYMS establece el retardo en milisegundos y
el comando DELAYUS en microsegundos. Por ejemplo:
DELAYMS 5
DELAYUS CIEN
Establece una demora en la ejecución del programa de 5 milisegundos y la otra es de 100 microsegundos.
1.3.7. BUCLE CON GOTO
Un bucle son instrucciones que se repiten dentro de un contexto establecido o delimitado. Para el caso de un
bucle sencillo, lo primero que se establece es el hito donde manda el comando GOTO al programa para que se
siga ejecutando. El hito puede ser una letra como la V. X. Y o Z. Su sintaxis es:
HITO :
INSTRUCCIÓN 1
INSTRUCCIÓN 2
..
INSTRUCCIÓN N
GOTO HITO
Por ejemplo
X :
INSTRUCCIÓN 1
INSTRUCCIÓN 2
..
INSTRUCCIÓN N
GOTO X
1.3.8. COMANDO IF – THEN – ENDIF
Se emplea cuando existe un condicionado. Su traducción es si – luego – fin si. En cuanto a su sintaxis es:
IF COMPARACION THEN
INSTRUCCIÓN 1
…..
INSTRUCCION N
ENDIF
SENA REGIONAL SUCRE 6 ING ANTONIO FAVIO OSPINO
[email protected]
Por ejemplo:
IF ENTRADA = 1 THEN
MOTOR = 1
ENDIF
1.3.9. COMANDO IF – THEN – ESLEIF – ELSE IF – ELSE – END IF
Se emplea cuando existen varios condicionadores. Su traducción es si – sino si – sino si – sino – fin si. Su sintaxis
es:
IF COMPARACION THEN
INSTRUCCIÓN
ELSEIF COMPARACION THEN
INSTRUCCIÓN
ELSEIF COMPARACION THEN
ELSE
INSTRUCCIÓN
ENDIF
Por ejemplo:
IF BOTON = 1 THEN
HIGT LED
ELSEIF BOTON = 0 THEN
LOW LED
ELSEIF BOTON =2 THEN
HIGT LED
LOW LED2
ELSE
LOW LED2
ENDIF
1.3.10. DENOMINACION DE VARIABLES
Para denominar variables, se emplea el comando DIM…..AS TIPO VARIABLE. Su sintaxis es:
SENA REGIONAL SUCRE 7 ING ANTONIO FAVIO OSPINO
[email protected]
DIM NOMBRE VARIABLE AS TIPO DE VARIABLE
Entre los tipos de variables se tienen:
BIT: Cuando la variable es 0 o 1.
BYTE: Cuando la variable esta entre 0 y 255.
WORD: Cuando la variable esta entre 0 y 65535
DWORD: Cuando la variable esta entre ‐2147483647 y 2147483647
FLOAT: Cuando la variable posea hasta 32 digitos o decimales.
Por ejemplo:
DIM LONGITUD AS WORD
El commando DIM también es útil a la hora de determinar constantes; su estructra es:
DIM NOMBRE DE LA VARIABLE AS EXPRESION CONSTANTE
Por ejemplo:
DIM PI AS 3.1416
1.3.11. COMANDO WHILE ….WEND
Ejecuta acciones o instrucciones siempre y cuando la condición WHILE sea verdadera. Su sintaxis es:
WHILE
INSTRUCCIÓN
WEND
Por ejemplo:
I = 1
WHILE I <= 10
PRINT @I, “ “
I=I + 1
WEND
1.3.12. COMANDO REPEAT …UNTIL
1.3.13. COMANDO FOR…TO…STEP….NEXT
SENA REGIONAL SUCRE 8 ING ANTONIO FAVIO OSPINO
[email protected]
Con este comendo, también se puede realizar o ejecutar un bucle. Su traducción es PARA……A O HASTA ….POR
PASO O INCREMENTO…….RETROCEDA O PROXIMO. SU estructura es:
FOR VARIABLE = INICIO CONTEO TO FIN CONTEO STEP INCREMENTO O DECREMENTO D ELA VARIABLE
INTRUCCION
INSTRUCCIÓN
NEXT
OBS: Cuando se trata de un incremento, este mismo valor es positivo; pero si es un decremento, este valor es
negativo. Por otro lado no olvide dimensionar o nombrar la variable con el comando DIM. Ejemplo:
DIM I AS WORD DIM I AS WORD
FOR I = 0 TO 10 STEP 1 FOR I = 10 TO 0 STEP ‐1
PRINT “ I “ PRINT “ I “
NEXT NEXT
1.3.14. COMANDO RANDOM
Este comando genera un número aleatorio, a excepcion del 0. Su estructura es:
NOMBRE VARIABLE = RANDOM
RANDOM NOMBRE VARIABLE
1.3.15. COMANDO GOSUB ….RETURN
Este comando es para enviar el programa de la línea donde esta el GOSUB hasta la línea donde esta el nombre de
la subrutina; después de terminado la lectura de las instrucciones de la subrutina, el comando RETURN, envía
nuevamente el programa a la línea siguiente donde esta el comando GOSUB. Su sintaxis es:
GOSUB NOMBRE DE LA SUBRUTINA
…
…
NOMBRE SUBRUTINA
INSTRUCCIÓN
INSTRUCCIÓN
RETURN
SENA REGIONAL SUCRE 9 ING ANTONIO FAVIO OSPINO
[email protected]
1.3.16. CONFIGURACION PANTALLA LCD
Antes que todo hay que entender que, por lo general, el voltaje de alimentación de la pantalla es de 5 vdc. Por
otro lado, la misma esta compuesta de filas y columnas, siendo mas comunes los de 2 filas por 16 columnas.
También posee unos pines de conexión que son:
Vss: Para ser conectado con la tierra. Por lo general este es el pin 1.
Vdd: Para ser conectado a 5 vdc. Por lo general es el pin 2.
Vee/A: Pin de entrada de voltaje para los leds de iluminación del display. El pin va conectado a una resistencia de
220 ohmios y de allí a 5 vdc, para la iluminación de la pantalla. Por lo general este pin es el numero 15.
Vo: Constraste de pantalla. Por lo general conectado con un resistencia de 10kohmio o de 2,2Kohmios y de alli a
tierra. Si desea un contraste ajustable, este pin se conecta a un reostato. Por lo general es el pin 3.
E: Va conectado al pin del micro especificado en DECLARE LCD_ENPIN PUERTO.
Rs: Va conectado al pin del micro especificado en DECLARE LCD_RSPIN PUERTO. Por lo general es el pin 4.
R/W: Va conectado al tierra. Si el pin recibe una señal alta entonces la pantalla esta configurada para lectura de
datos. Si recibe una señal baja esta configurada para escritura de datos. Por lo general es el pin 5.
K: Este pin va conectado a tierra para cerrar el circuito de la iluminación de la pantalla. Por lo general este pin es
el número 16.
D0 al D7: Puntos de entradas de bits lógicos. Van del pin 7 al pin 14.
NOTA:
Cuando se especifican el numero de vez, como por ejemplo 4, entonces se comienza a contar estos bits desde el
puerto señalada en DECLARE LCD_DTPIN PUERTO . por ejemplo si usted configuró:
DECLARE LCD_DTPIN PORTD.4
Los pines a conectar son es D.4, D.5, D.6 y D.7, comenzando desde de D.4.
SENA REGIONAL SUCRE 10 ING ANTONIO FAVIO OSPINO
[email protected]
En el programa hay que configurar el lcd de la siguiente forma:
DECLARE LCD_INTERFACE NUMERO DE BITS
DECLARE LCD_DTPIN PUERTO
DECLARE LCD_ENPIN PUERTO
DECLARE LCD_RSPIN PUERTO
Ejemplo:
DECLARE LCD_INTERFACE 4
DECLARE LCD_DTPIN PORTD.4
DECLARE LCD_ENPIN PORTD.2
DECLARE LCD_RSPIN PORTD.1
Para el caso de tener un micro 16f84, para emplear una pantalla de lcd, se le recomienda hacer la siguiente
configuración:
DECLARE LCD_INTERFACE 4
DECLARE LCD_DTPIN PORTB.4
DECLARE LCD_ENPIN PORTB.3
DECLARE LCD_RSPIN PORTB.2
Para que queden libres los puertos B.1 y B.2; por otro lado haga las conexiones:
B.4 Î D4
B.5 Î D5
B.6 Î D6
B.7 Î D7
1.3.17. COMANDO PRINT
Es el comando para enviar un mensaje a una pantalla de lcd. Su sintaxis es:
PRINT AT FILA,COLUMNA, “ TEXTO A APARECER “, @ VAR, “ TEXTO “
Cuando se desea mostrar en pantalla el valor de una variable, va antecedido del carácter @.
1.3.18. CONFIGURACION PARA LECTURA DE DATOS ANALOGOS EN PICS
SENA REGIONAL SUCRE 11 ING ANTONIO FAVIO OSPINO
[email protected]
Para estos datos recomiendo que trabaje con el PIC 16F877A que ya posee un conversor análogo‐digital interno.
en este pic, los puertos convertibles a entradas análogos son el puerto A ( 0 al 4 ) y el puerto E ( 0 al 3 ), para un
total de 8 pines disponibles.
Como usted pude analizar, no siempre es requerido emplear todos los pines como entradas de datos análogos; si
se desea escoger unos cuantos de ellos, para lograr esto, es necesario modificar el registro ADCON1 del pic. El
registro ADCON1, tiene los siguientes campos:
Si se configuran los 4 primeros bits ( 0 al 3 ) con valores de 0, entonces se le indica al ppic, que todos los puertos
son entradas análogas. Ejemplo:
Si se desea tener 5 entradas análogas, la configuración es:
En los campos marcados con “ – “, se les da valor de 0:
‐ ‐
0 0
En el campo ADCS2 se le da un valor de 0, para indicarle al pic que el oscilador o reloj es interno y no externo; al
campo ADFM se le da un valor de 1, para indicarle que los bits se cuentan de derecha a izquierda. El código que se
va a emplear entonces es:
Antes de entrar en detalle, analice el comendo ADIN, para configurar los datos de entradas análogos del pic:
ADIN_RES NUM
En el NUM se le da un numero que expresa la resolución del dato. Si coloca 10, la resolución del dato de ede 4
bits.
ADIN_TAD FRC
Indica el tipo de oscilador, que para el caso es interno.
ADIN_STIM VALOR EN MS
SENA REGIONAL SUCRE 12 ING ANTONIO FAVIO OSPINO
[email protected]
Este valor en milisegundo del intervalo de tiempo entre medida y medida.
ADIN NUM
Colocado después de la denominación de un puerto análogo, preferiblemente con el comando TRIS, indica al
programa donde va a comenzar la lectura del dato análogo. Ejemplo:
TRISA.0 = 1
ADIN 0
CONVERSION DEL DATO POR FORMULA.
Como es sabido, el dato análogo que se lee, es por lo general un voltaje DC de máximo 5, el cual, por conversiones
matemáticas es expresado en temperatura, presión, luminosidad, etc. Para hacer esto, la configuración es la
siguiente:
VARIABLE A LEER = ADIN NUM ‘ AQUÍ SE ASIGNA EL VALOR DEL DATO ENTRADA EN BITS ‘
VARIABLE A LEER EN VOLTIOS = ( VARIABLE A LEER * VOLTAJE MAX ENTRADA )/1024
DATO1 = ( VARIABLE A LEER EN VOLTIOS * ( VALOR MAXIMO UNIDAD ‐ VALOR MINIMO UNIDAD ))/ VALOR
MAXIMO VOLTAJE ENTRADA.
VALOR VARIABLE EN SUS UNIDADES = DATO1 + VALOR MINIMO UNIDAD
Ejemplo se tiene una termocupla cuyo valor máximo de temperatura es de 100 grados y minimo de ‐ 20 grados. El
programa seria:
LEE = ADIN 0
RED = ( LEE * 5 )/*1024
DATO 1= ( RED * 120 )/5
DATOFINAL = DATO 1 – 20
PRINT AR 1,1,” TEMP = “, @DATOFINAL
Ahora se hara la estructura de un programa para leer datos análogos:
DEVICE 16F877
XTAL 4
SENA REGIONAL SUCRE 13 ING ANTONIO FAVIO OSPINO
[email protected]
'CONFIGURACION DE LOS DATOS DE ENTRADA ANALOGOS'
ADIN_RES 10
ADIN_TAD FRC
ADIN_STIME 200
'CONFIGURACION VARIABLES'
DIM LEE AS WORD
DIM RED AS FLOAT
DIM DATO AS FLOAT
DIM DATO1 AS FLOAT
TRISA.1 = 1
CLEAR LEE
CLEAR RED
CLEAR DATO
RETORNO:
DELAYMS 100
LEE = ADIN 0 ' SELECCIONA EL CANAL DE LECTURA ANALOGA'
RED = (LEE * 5 )/1024
PRINT AT 1,1,"RED = ",@RED
DATO1 = ( RED * 120 )/5)
DATO = DATO1 - 20
PRINT AT 2,1,"TEMP = ",@DATO
GOTO RETORNO
END
1.3.19. CONEXIONES ELECTRONICAS A LOS PINES DEL LOS PIC
Como ya se había establecido, los pics son tecnología TTL, por tanto no trabajan a voltajes mayores de 5 vdc.
Muchas veces es requerido suministrar a los pics información o señales digitales ya sea de 5 vdc o 0 vdc. Para
ejecutar esto pude emplear cualquiera de los siguientes circuitos:
1.3.19.1 EMPLEANDO CONTACTOS ABIERTOS O CERRADOS PARA ENTRADAS DIGITALES.
SENA REGIONAL SUCRE 14 ING ANTONIO FAVIO OSPINO
[email protected]
EMPLEANDO SEÑALES BAJAS CON TRANSISTORES
En cuanto a las salidas digitales, muchas veces es requerido operar con reles de 12 vdc, para hacer este montaje,
se recomienda el siguiente circuito:
SENA REGIONAL SUCRE 15 ING ANTONIO FAVIO OSPINO
[email protected]
Uno de los pines importantes en conectar en un pic, además de los de alimentación, es el MCLR. Este se pude
conectar de dos formas:
CON BOTON RESET HABILITADO SIN BOTON DE RESET