Está en la página 1de 10

Cómo Programar un PIC 2

Introducción funcionales; de hecho, son muchos los cir-
cuitos decodificadores de señales de TV
En la actualidad es muy fácil construir construidos con pequeños controladores
productos electrónicos con bajo costo, programables integrados que contienen
espacio reducido y con características programas sencillos. Nuestro objetivo es
multifuncionales; de hecho, son muchos que pueda programar un PIC con la ayu-
los circuitos decodificadores de señales da de una computadora, sin que para ello
de TV construidos con pequeños contro- se necesiten complicados circuitos adicio-
ladores programables integrados que nales. Se necesita un dispositivo de progra-
contienen programas sencillos. En este mación para incorporar el software de los
capítulo, explicaremos cómo se progra- chips que venimos describiendo desde ha-
ma un PIC con la ayuda de una compu- ce varios números (nos referimos a los
tadora, sin que para ello se necesiten PICs). El costo de un dispositivo de estas
complicados circuitos adicionales. Tam- características suele ser muy alto, razón
bién daremos las direcciones de Internet por la cual el lector le "huye" al diseño de
para recabar información sobre la forma sistemas electrónicos con estos compo-
de "leer" el programa contenido en un nentes. Obviamente, el programador PIC
PIC y la forma de obtener prestaciones presentado en este libro necesita algunos
especiales. componentes accesorios para ser construi-
En la creación y diseño de un nuevo do pero resulta una solución ideal para
producto electrónico, la tendencia actual quienes poseen computadora o puedan
es tratar de respetar los términos descripti- emplear la de un amigo o técnico conoci-
vos "bajos costos", "ultra-compacto" y do. El rasgo más importante de esta uni-
"multifuncional". Lograr un producto con dad es que no necesita partes especializa-
todas estas características era sumamente das y es un circuito muy simple.
difícil. Afortunadamente, en los últimos Luego de armado se lo conecta al port
años, diseñar un producto con esos atribu- (puerto) de la impresora de cualquier PC
tos se ha tornado más fácil gracias al de- (el puerto no necesita ser bi-direccional), y
sarrollo de dispositivos programables como ejecutar un software (programa) para ini-
la familia de microcontroladores PIC de ciar la programación de los microcontrola-
Tecnologías Microchip. dores.

Har emos r efer encia a la serie PIC
Estructura de un Programador de PICs 16F84, 16F83 y 16C84, por ser compo -
nentes de bajo costo que se consi -
En la actualidad es muy fácil construir guen con facilidad .
productos electrónicos con bajo costo, es-
pacio reducido y con características multi- La información que aquí damos fue re-

Todo sobre PICs 23

que puede ser reescrito dustria electrónica (existen PICs en decodi. mano menor". Se puede considerar el microcontrola. cargando de memoria. o una llave lógica. que soporta nuestro programador. aunque tiene a su favor que el programa en el área ROM del micro.).024 palabras de memo- y salida) en un solo chip. ROM. es muy simple de ope- rar. Cualquier in- ficadores de señales de TV por cable. La familia PIC de la empresa Mi- crochip Inc. trabajar. lava. tiene 68 CPU. es de bajo costo y gran parte del software utilizado para crear el código de programa necesario pa- ra la programación del PIC está disponible en el website de Micro- chip. do que no necesita una luz ultravioleta pa- como la mayoría de los microcontrolado. nido al navegar por Internet.com En la figura 1 damos una mues- tra de la pantalla que hemos obte. Los Microcontroladores constituyen el La memoria de programa es un EE- segmento de mayor crecimiento en la in. seño y construcción de circuitos a partir de Cuestan menos de $10 cada uno. Algunas veces el programa está dise. Estos PICs no requieren cristales de cuar- grado específico para nuestras necesida. equipos de música. según el resultado de mi búsque- Cabe aclarar que en las páginas de In. RAM y circuitos I/O (de entrada bytes de RAM y 1. zo o resonadores para los circuitos de reloj.microchip. da (vea la figura 2) son el 16F83. por más de cuarenta años. de ser "personalizado" si se escribe un El 16F83 puede ser considerado "el her - programa en lenguaje de máquina (as.CÓMO PROGRAMAR UN PIC dactada a partir del "websitie" de Micro. Figura 1 24 Todo sobre PICs . un PIC. el 16F84 y ternet de Microchip Inc. formación almacenada será preservada jes. De los tipos chip Inc. los más fáciles para componentes. y su microcontroladores PIC de la serie 16XXX. po de EEPROM más viejo. Emplea un resistor o un capacitador para ñado para ser algo más que un oscilador fijar la frecuencia de oscilación. de mo- Tal como diimos en el capítulo 1. cuya dirección es la siguiente: www. des. etc. ROM es eléctricamente borrable. Dicho de otra manera. es el de costo más bajo costo. Estos modelos particulares son los toda la información necesaria para el di. puede encontrar el 16C84. pero lo impor- tante es que el PIC realizará exac- tamente lo que usted le indique. PROM tipo flash. ra borrar y reprogramar los dispositivos. relo. sin alimenta- rropas. res. más de un millón de veces. ción alguna o señal de refresco. es una computadora pequeña con El 16F84 es el más empleado. pero utiliza un ti- dor como un circuito integrado que pue.. menor" ya que tiene sólo la mitad sembly). ria de programa. El 16C84 es muy similar. controlador. obtendremos un circuito inte. microondas. empresa fabricante de estos de PICs disponibles.

CÓMO PROGRAMAR UN PIC Figura 2 tor 13 y en el momento de ser gra- bado. de la programación de los chips PIC. se muestra en la figura 3. El circuito está diseñado para adaptarse al Cómo Programar un port de la impresora de cualquier PC.1µs antes de ser bajado de nuevo a ni- vel tierra. Los datos Figura 3 serán enviados al conec- Todo sobre PICs 25 . con 2V. dichos da- tos serán enviados a la ROM de a un bit por vez en concordancia con la señal de reloj. individualmente para que sea una salida o El diagrama esquemático del Progra- una entrada mador para PIC que menciona la empre- sa fabricante. em- Programar los chips PIC mencionados es muy sencillo: 1º) Se debe aplicar 5V a la pata 14 (con la pata 5 conectada a tierra). PIC de Microchip Inc. se eleva la tensión de la pa- ta 12 a 5V durante al menos 0. 2º) Eleve la tensión de la pata 4 a 12V). cada especificaciones para la programación y uno de los cuales puede ser configurado su verificación las veremos más adelante. las Tiene 13 pines de entrada/salida. Los datos que se dirigen al chip contienen comandos que especifi- can los numerosos pasos del proce- so de programación y los datos que serán guardados en la ROM del chip. 3º) Coloque los datos en la pata 13. Para verificar que el PIC ha sido programado correctamente. com- pruebe que el PIC también pueda enviar los datos contenidos hacia La tensión de alimentación para el el exterior a través de la pata 13. 16F84 puede ser de 4 a 6V pero existe una Para aquellos que estén interesados en versión de este integrado que puede ope.conocer los detalles técnicos completos rar inclusive. En la figura 4 mostramos el circuito con el cual hemos realizado varios diseños.

externa. R1 y D2 se encargan de 12V para la pata 4.do en la figura 5. El áno. La tensión a aplicar en la pata 4 do de D2 es bajado a tierra para bloquear debe estar comprendida entre 12V y 14V. 5V para la pata 14 y De este modo. detener la señal de datos. Se requieren dos suminis- datos desde la pata 13 del PIC a través de tros de tensión para poner en marcha el la pata 11 del conector de la impresora. tor del cable hace que te DC. Figura 4 gido de 120MB (también realizamos las pruebas en otra compatible con Pentium 2 de 350MHz y 64MB de RAM). El circuito del programador es tan sim- mador está conectado al port de la im. re de programación detecte si el progra. Si desea port de la impresora. sim- produzca la progra. Programador PIC. Figura 5 de la PC con un multica- vés del pin 2 del port ble de 30 cm de largo. La conexión que emplear fuentes externas puede utilizar el crea D1 entre las patas 11 y 17 del conec. El chip PIC estará libre Asegúrese de que la línea de 12V tenga para recibir datos desde la pata 14 del realmente 12V como mínimo. Estas tensiones pueden ser tomadas Cuando la pata 11 del conector de la desde la misma PC o desde una fuente impresora está bajo. 26 Todo sobre PICs . plemente se lo conecta mación es coman. D2 y el resistor R1 dejan que el pin 13 del PIC pueda ser utili- zado como una entrada para la programación y una salida para la verificación (recuerde que una mis- ma pata de I/O puede ser emplea- do tanto como entrada o salida). la PC puede leer los de la impresora.CÓMO PROGRAMAR UN PIC pleamos como computadora una AT 486 con 4MB de RAM y disco rí. ple que puede ser construido fácilmente presora. D1 conduce. Los datos de programación y las señales de sincronismo se aplican al PIC a través de R2 y R3. la señal de datos. en una pequeña placa de circuito impre- Los capacitores so con uso de técnicas C1 y C2 eliminan el de construcción estan- ruido que pueden darizadas.esquema de suministro de tensión mostra- tor de la impresora permite que el softwa. La tensión ne. Los dio- dos D1. el Programador PIC sea cesaria para que se más fácil de utilizar. al port de la impresora dada por Q1 a tra. El montaje producir los cables por separado del conec- que llevan la corrien. Cuando la pata 17 del conector en el port de la impresora está en estado alto.

16f84 include <p16f84. PIC se muestra en tes. escrito físico para contener todos sus componen. esto no es difícil. Con un PIC. el programa. Las primeras tres instruc- ciones son: pr ocessor. del programador. Si bien este circuito puede costar más con un período que podemos fijar noso- caro que un circuito digital tradicional. deberá progra- Si embargo. tal como se muestra da y hacer que cada una de estas patas en la figura 6. CÓMO PROGRAMAR UN PIC Programación del PIC den generar diferentes modelos o selec- cionar múltiples modelos con la adición de La manera más fácil de aprender a utili. Para progra- software. tenga un estado alto en forma secuencial. más pequeño y no necesita tanto espacio De esta manera.componentes discretos. Figura 6 Estas son instrucciones pa- Todo sobre PICs 27 . mediante un montador que convierte el texto del programa en números bina- rios que el PIC reconoce co- mo instrucciones. programa y conocer el set de instruccio- mar un circuito que enciende un LED des. inteligencia Se pue.ser descartado y rediseñado para adap- te modo de aprender las características tarse a este tipo de cambios. también podemos hacer el mar que todas las patas I/O sean de sali- circuito con un PIC. en secuencias sucesivas.en lenguaje Assembly PIC. estas notas aparecen en cualquier ren- glón que se inicie con punto y coma. En el programa. oportunidad de verificar su hardware y borrar el PIC y reprogramarlo. Con zar el Programador PIC es escribir un pro. De todos modos. pero no se asus- pués de otro. Este te.nes de microcontrolador. mar un PIC desde una PC hace falta un Como ejemplo. características: su inteligencia. es tros.un simple mecanismo interruptor. prenda leds en secuencia. Si deja notas en el programa. Es. también le brindará la sólo es cuestión de modificar el programa. recordará qué es lo que estaba inten- tando hacer cuando revise el programa. Estos renglones se- rán ignorados por el softwa- re. la vez siguiente.inc>L _config. hay otro argumento la Tabla 1. circuito podría hacerlo con un oscilador y Para hacer que nuestro controlador un CD4017. el circuito debiera grama simple e incorporarlo a un chip. veamos cómo progra. La parte más importante de para utilizar el PIC en una tarea de estas cualquier programa es la documentación.

jloop: movwf K . Espere un tiempo para ejecutar nuevamente la subrutina o nes serán utilizadas para almacenar cal. la tercera esta. La segunda le indica que debe a13 (que son manejadas por el Port B) incluir un conjunto de constantes predeter. . w:= 00000001 binario "K". El programa del K equ H"1E . el pulso en estado alto) drá en marcha) con cualquier tensión procesor 16f84 que se le aplique.portB ctrl register := w movlw B'00000001' . (se trata de un 16F84 con oscilador RC mático de reseteado) será activado. Ese número es luego end 28 Todo sobre PICs . su WDT (cronómetro "vigilante") . sean terminales de salida en vez de serlo minadas en un archivo llamado p16F84. . . K := w kloop decfsz kKf .circuito secuencial.INC. . .K = K-1. Elijo al Port B como salida y la inicializo Las dos instrucciones que reservan es- pacio de memoria en el RAM de los PICs movlw B'00000000' . decfsz J. el PIC “rebooteará” (se pon.f so. port B itself . .= w bles en BASIC.lo hacemos nuevamente La primera instrucción real del PIC es goto mloop una instrucción movlw que borra el conte. Configuración de la CPU será desactivado y el PWRTE (reloj auto. movwf J . con la diferencia de que se deben determinar las ubicaciones físi. La primera instrucción le indi. das características del hardware. goto kloop dor que el programa se inicia en la ubica. y grabado con tensión positiva durante este modo.Programa sólo creará un archivo con los números que serán transferidos al chip PIC como org 0 . pero no “rebooteará” include <p16f84. En este ca. cada led permanecerá En este ejemplo. . loop culadores que registren la cantidad de movlw d'50' . . lador RC. K = dirección hexa 1E técnico no realizará la programación real. De .Con una frecuencia de 75kHz. El proceso es similar a estipular varia. . salte si K = 0 La instrucción org le indica al monta. . Tabla 1 nido del registro W.f .encendido durante 0. Finalmente. movwf PORTB . Estas ubicacio. J = dirección hexa 1F con el Programador PIC. copiado en el registrador de control TRIS ca al técnico que utilice las instrucciones para el Port B y establece que las patas 6 del 16F84. PIC para activar o desactivar determina.Encendido de Leds en secuencia rotativa. comienzo en la dirección 0 un segundo paso. Rote el bit del port B hacia la izquierda cas de RAM que se utilizarán. mloop: rif PORTB. _config _RC_osc & _WDT_OFF & _PWRTE_ON gundo. las ubicaciones (en una numeración hexadecimal) son 1E y 1F. w:= 00000000 binario para dos variables.J = J-1.Código Assembly para microcontrolador PIC16F84 como blece varios bits de configuración en el . w = 50 en decimal veces que una subrutina (loop) ha sido re. serán variables las dos direcciones de memoria Es importante darle uso a la instrucción _config en todos los programas utilizados J equ H'1F' .CÓMO PROGRAMAR UN PIC ra el técnico.inc> automáticamente muchas veces por se. que se llamarán "J" y tris PORTB . salte si J = 0 ción 0 de la memoria de programa y que goto jloop el programa real será el próximo. el chip utilizará su osci. . . J := w petida.5segundos.

en el port B la palabra "11111111" Volviendo a nuestro programa. luego 00001000. escribir pr ogramas útiles. Esta acción encen. Habría que progra- cirá 00000100. seguida. La repetición de la instrucción produ. muy sencillo. si sabe cómo es una señal 50 en las ubicaciones de memoria "J" y "K". Como puede ver a partir 00000001 en el registrador W y lo copia al del pr ograma simple que hemos cr ea - Port B. El de TV por cable. un decodificador con PIC cutará una instrucción rlf que rota los con- tenidos del Port B a la izquierda y cambia Ahora mire que fácil sería construir una los datos a 000000-10. Cómo obtener un Programa tina). ¿Por mentar y omitir la instrucción siguiente qué no doy el programa en este libro?. no debe dominarlas a todas para tado a la pata 6. El programa real utiliza dos loops (subru. de TV. nientes en construir un programa para su Las instrucciones condicionales del PIC PIC. Esta instrucción significa: "Decr e . ¿Le suena co- como para que no se la pueda apreciar. si la variable es igual a cer o". la subrutina (loop) se eje. el ter. cuta repetidamente hasta que K llega a cero. se preguntará. mar una pata I/O como entrada y otra vamente. y el descfsz no es una ex. minal Pata 0 pin 6. que es de salida. Pero an- tes de que tenga tiempo de visualizar la Cómo se Construye llegada del pulso al LED. es decir. luego el programa debiera se enciendan en secuencia. cirlo a que "ar me decodificador es con da. En el Website de Microchip podrá en- ción end no es una instrucción para el mi. esto es lo que hacen normal- Esa es la causa por la cual aparece en el mente los decodificadores de las señales programa una subrutina de demora. esto hará que los diferentes leds como salida. El 16F84 tiene 35 instrucciones CPU mente se introduce el número binario difer entes. contrar hojas de datos. programa almacena el número decimal Por lo tanto. activar la salida que se encargaría de po- de modo que la acción no es tan rápida ner en marcha un circuito. un nivel alto. o cuando se tor 7. el programa eje. nocido?. ir a mloop envía la ejecu- ción al comienzo del programa. no tendrá inconve- cuenta regresiva de 50 a 0. notas de aplica- Todo sobre PICs 29 . do. y así sucesi. Esta acción enciende el LED conec. La instruc. llave electrónica con PIC que se active derá el segundo LED conectado al conec. codificada y obtiene el set de instruccio- utilizando la instrucción decfsz para la nes del PIC de Internet. Seguramente Ud. recibe alguna señal. sólo le indica al fuesen entradas debiera haber copiado montador que el programa ha finalizado. tiene un nivel "1". una incrustada dentro de la otra. reconocer una señal presente en la pata Entre rotaciones. el resultado no es cero y herramientas para que aprenda y no indu- la parte "ir a" de la instrucción no es omiti. CÓMO PROGRAMAR UN PIC de entrada. con el objeto de decodificar señales son inusuales. Si hubiese querido que todas crocontrolador (CPU). el programa necesita fijada como entrada y luego de un tiempo esperar 1/2 segundo aproximadamente. cepción. fines comer ciales". dado que ahora. para "programar" nuestro PIC Finalmente. De tal modo. considero que debo darle las Normalmente. luego de un cierto tiempo.

luego deberá descompri. el MPLAB.htm utilizar otro chip con mayores recursos sin necesidad de reescribir el programa des- Cuando acceda a esta dirección.com/10/Tools/ con los cuales inició el programa. un pro.x o be hacer. Prepárese para recibir mensajes de error cuando compile el progra- Figura 7 ma. El uso del software de Microchip está muy bien documentado en las páginas de Internet.trucción tris. cho más complicada. De cualquier modo. Windows 95. EN/noppp. No debe asustarse si nunca manejó una del Website de Gernsback.zip). trarla. es GRATIS. De este modo. Desde la perspectiva del software. verá de el principio. Una vez hecho esto el mismo programa Otro programa más sencillo para "pro- le da toda la información necesaria para gramar" nuestro PIC se denomina NOPPP y conseguir su propósito (en el capítulo 3 de. debe bajar cada uno de ellos a su 16C84. El mismo está diseñado cesadores PIC del futuro podrían no regis- para ser ejecutado bajo Windows. obtuve el programa uno de los mejores rasgos del PIC es su lla- de la dirección: mada compatibilidad de código de fuen- te. Particularmente.CÓMO PROGRAMAR UN PIC llamados códigos de fuente). Una muestra de su pantalla.1.gernsback. com- pilarlos en un código de objeto y luego analizar el código binario re- sultante para ver qué acción reali- zará el microcontrolador. Si su diseño supera los recursos de chips http//www. Para nuestros propósitos. 16F84 y 16F83 trabaja de modo computadora.com/pub/ 7. la que el programa precisa de 6 disquetes y utilización de la instrucción tris en el Ud.puede obtenerlo de la dirección: tallamos el uso de este programa). se ve en la figura (ftp://ftp. y lo mejor.. trabajará El software MPLAB le permitirá editar mejor si lo ejecuta bajo la aplicación de programas en lenguaje Assembly (también "pantalla completa" que si lo hace en 30 Todo sobre PICs . podrá MPLAB/index. El MPASM se quejará modera- damente de que no utilizará la ins- ción y. aceptable. el programa le indica todo lo que de. lo mejor de todo. portancia a esta instrucción y algunos pro- car programas PIC.microchip. podrá localizar los errores ló- gicos en su programación antes de ejecutar cualquier código en el hardware. Además. la vía alternativa de mir los archivos y comenzar la instalación configurar el Puerto B para la salida es mu- (en total pesa unos 8MB). Microchip le ha restado im- grama de desarrollo para simular y verifi. si ejecuta el programa bajo Windows 3.ma MS-DOS se ejecuta bajo Windows 3. Este progra- PC.

desde una nectada al programador. progra- mar el software y luego verificar que el código fue correctamente pro- gramado en el chip. El menú de opciones es instrucciones del microcontolador y saber auto-explicativo. el software le indicará qué acciones debe ejecutar y una ventana (veremos cómo programar cuándo realizarlas. Una advertencia: Nunca inserte o remueva un PIC de un programador mientras la ten- sión enviada al programador se en- Figura 8 cuentra activada. debería car. el software no Cabe aclarar una vez más que para podrá detectar el diodo D1. no deben ser dema- asegúrese de configurar el HW_TIMER en siado largos. Si la línea de 5V XT a las últimas Pentium.programaciones.HEX en el nombre de archi. para la programación del PIC tienen que Si por alguna razón tiene dificultades en durar por lo menos 0. cables. son lo suficientemente largos como para dows 3. También es importante que el tiempo Para hacer la programación. En la práctica.1. seleccionar el ti- po de PIC que programará. El software fue port de la impresora de la PC e iniciar el escrito especialmente para ser ejecutado programa NOPPP sin ninguna tensión co. pantalla completa toman el control total Recuerde que los pulsos de medición de la computadora. si lo hace. debería mo se realiza el proceso de programación. cutar el programa bajo OS/2. ejecutar el programa NOPPP bajo Win. También podrá borrar un PIC que ya ha sido progra- mado para reutilizar o actualizar la programación. Todo sobre PICs 31 . También puede eje. De todos modos. el primer del pulso no dependa de la velocidad de paso es conectar el Programador PIC al la CPU de la computadora. ción. CÓMO PROGRAMAR UN PIC vo) en la memoria. en qué pata se introducen los datos y có- Si todo se encuentra en orden. ver una pantalla similar a la que se mues. y asumirá que programar o leer un PIC se debe tener la el programador no está conectado al port correspondiente hoja de datos. está conectada a tierra. software del programador requiere un ti- El timing es esencial para los pulsos de ming engañoso. En general. intente salir a un entorno DOS y superar cualquier señal de "r ebotes" ebotes en los ejecútelo desde allí. Dado que el con esta aplicación en el capítulo 6). Cuando progra- me un PIC. fue escrito para ejecutar- programación y las aplicaciones DOS de se como un programa DOS. para que no tornen extrema- "on" en las configuraciones DOS para el damente lento el proceso de programa- programa. también es necesario conocer el set de tra en la figura 8."pasar al papel" las ideas que uno tenga gar un archivo de código de objeto (con en la mente para realizar las diferentes una extensión . en cualquier IBM compatible.1µs. para saber de la impresora.

Para terminar. dado que en cada figura se detallan los elementos utilizados. en la figura 10 el correspondiente al circuito secuencial y en la 11. No damos lista de materiales. Aclaramos que en sucesivos capítulos da- remos ejemplos de pro- Figura 10 gramación de PICs. podrán retirar de esta editorial. hasta que Ud. el de la fuente de alimentación. se sienta Figura 11 lo suficientemente “ducho” como para realizar sus propios programas. También podrá bajar aplicaciones de nues- tra página web (vea el capítulo 1).CÓMO PROGRAMAR UN PIC Quienes tengan difi- cultad para "bajar pro- gramas de escrituras de PICs". en la figura 9 se da el impre- so del programador de la figura 4. un pro- grama aplicativo (debe presentar el pre- Figura 9 sente libro). ***** 32 Todo sobre PICs . con- tra entrega de un dis- quete virgen.