Está en la página 1de 15

SENA 

REGIONAL SUCRE    1  ING ANTONIO FAVIO OSPINO 


                                                  FOXMANCOL@HOTMAIL.COM 
 
1. CODIGOS DE PIC BASIC, ESTRUCTIRAS Y PERIFERICOS EMPLEADOS EN LA PROGRAMACION DE PIC 
 
1.1. DESCRIPCION DE LOS PINES DE UN MICROPIC 16F84 

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 
                                                  FOXMANCOL@HOTMAIL.COM 
 

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 
                                                  FOXMANCOL@HOTMAIL.COM 
 
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 
                                                  FOXMANCOL@HOTMAIL.COM 
 
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 
                                                  FOXMANCOL@HOTMAIL.COM 
 
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 
                                                  FOXMANCOL@HOTMAIL.COM 
 
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 
                                                  FOXMANCOL@HOTMAIL.COM 
 
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 
                                                  FOXMANCOL@HOTMAIL.COM 
 
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 
                                                  FOXMANCOL@HOTMAIL.COM 
 
 

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 
                                                  FOXMANCOL@HOTMAIL.COM 
 
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 
                                                  FOXMANCOL@HOTMAIL.COM 
 
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: 

ADFM  ADCS2  ‐  ‐  PCFG3  PCFG2  PCFG1  PCFG0 


BIT 7  BIT 6  BIT 5  BIT 4  BIT 3  BIT 2  BIT 1  BIT 0 
 

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: 

PCFG3  PCFG2  PCFG1  PCFG0 


0  0  0  0 
 

Si se desea tener 5 entradas análogas, la configuración es: 

PCFG3  PCFG2  PCFG1  PCFG0 


0  0  1  0 
 

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: 

ADFM  ADCS2  ‐  ‐  PCFG3  PCFG2  PCFG1  PCFG0 


1  0  0  0  0  0  0  0 
 

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 
                                                  FOXMANCOL@HOTMAIL.COM 
 
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

'CONFIGURACION PANTALLA LCD'


DECLARE LCD_INTERFACE 4
DECLARE LCD_DTPIN PORTD.4
DECLARE LCD_ENPIN PORTD.2
DECLARE LCD_RSPIN PORTD.3

 
 
SENA REGIONAL SUCRE    13  ING ANTONIO FAVIO OSPINO 
                                                  FOXMANCOL@HOTMAIL.COM 
 
'CONFIGURACION DE LOS DATOS DE ENTRADA ANALOGOS'
ADIN_RES 10
ADIN_TAD FRC
ADIN_STIME 200

'DEFINICION DEL NUMERO DE PINES ANALOGOS'


ADCON1=%10000000

'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 
                                                  FOXMANCOL@HOTMAIL.COM 
 

 
 
 

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 
                                                  FOXMANCOL@HOTMAIL.COM 
 
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 

 
 

 
 

También podría gustarte