Está en la página 1de 32

Curso de PICs para

Estudiantes y Aficionados

Para un buen aprendizaje prctico, este manual se complementa con un CD y un video que le ensean los fundamentos sobre mi crocontroladores PIC y lo guan paso a paso para que arme su propio cargador universal y aprenda a realizar sus primeros programas. Presentando este manual en cualquiera de nuestros distribuidores autorizados en Amrica Latina (bsque el ms cerca de su zona en www.webelectronica.com.ar) puede adquirirlos a precio promocional. El costo del CD + el video (presentando este manual) es el si guiente: Argentina: $20; Mxico: $150; Otros Pases: U$S18. En Argentina llame al: (011) 4301-8804. En Mxico llame al: (0155) 5787-1779

Arquitectura de los PICs

Bases Generales
Sepa qu es un PIC, cmo se compone y para qu puede utilizarlo.

QU ES UN PIC?

Los circuitos integrados programables (Program mable Integrated Circuits = PIC) son componentes su mamente tiles en la Electrnica de Consumo. An cuan do son conocidos desde hace ms de veinte aos, exis ten en la actualidad nuevos tipos que cumplen con una serie de requisitos y caractersticas sumamente tiles. Como una primera aproximacin podemos definir a un PIC como un chip que me permite obtener un circuito in tegrado a mi medida, es decir puedo hacer que el PIC se comporte como un procesador de luminancia o un tempo rizador o cualquier otro sistema mediante un programa que le grabo en una memoria ROM interna. Los microcontroladores PIC son en el fondo procesa dores similares a otros tipos, como por ejemplo la familia de los microprocesadores X86, 80486, Pentium y muchos otros que usan una arquitectura interna del tipo Von Neu mann. En este tipo de arquitectura los datos y la memo ria del programa se encuentran en el mismo espacio de direcciones. En realidad un microprocesador y un microcon trolador no son la misma cosa. Los PICs son micro controladores, es decir, una unidad que posee en su interior al microprocesador y a los elementos indis pensables para que pueda funcionar como una mini computadora en un solo chip. Un microprocesador es solamente la unidad central de procesos o CPU, la memoria, los puertos y todos los Figura 1 dems perifricos son exteriores. La programacin de un microprocesador es, por lo tanto, una tarea compleja por que deben controlarse todos estos dispositivos externos. A los fines prcticos nos vamos a referir a los micro Un microcontrolador integra la CPU y todos los peri controladores como bloques que poseen una memoria de fricos en un mismo chip. El programador se desentiende

de una gran cantidad de dispositivos y se concentra en el programa de trabajo. Esta circunstancia da lugar a una gran prdida de tiempo porque los datos tienen que ser retirados de la memoria y llevados a la CPU (Central Pro cessor Unit) y viceversa. Esto significa que la computado ra dedica la mayor parte del tiempo al transporte de da tos de ida o de vuelta, en lugar de usar este tiempo para trabajar sobre los datos. Los PICs emplean un conjunto de instrucciones del tipo RISC (Reduced Instruction Set Computer). Con el RISC se suele ejecutar la mayora de las instrucciones con un solo pulso del clock. Con las instrucciones que se usan en otros equipos del tipo CISC (Complex Instruction Set Computer), se logran instrucciones ms poderosas, pero a costa de varios ciclos del clock. En el bien conoci do procesador 68HC11 de Motorola se requieren a veces hasta 5 ciclos del clock para ejecutar una instruccin.

PIC para Estudiantes y Aficionados

Estructura de un PIC
RA4 y RB0 al RB7. Estos puertos pueden ser programa dos como de entrada o de salida. El terminal 4 opera co mo reset pero tambin cumple funciones de carga de me moria de programa cuando es excitado con pulsos de 15V. El terminal RA4 (pata 3) tambin tiene funciones co mo entrada de un temporizador y RBO (pata 6) cumple tambin funciones como entrada de interrupcin. Ahora bien, la mayora de los microcontroladores (sean de Microchip, o de National, Motorola, Philips, etc.) se comportan de forma similar, por ello nos vamos a re ferir a los microcontroladores PIC16F84 cuya arquitectu ra interna puede observarse en la figura 3. Observe primero los bloques externos. Existe un cris tal que se conecta en OSC1 y OSC2 para generar el CLOCK del sistema. Luego una seal de entrada llamada MCLR negada, que es un nombre de fantasa para nues tro conocido RESET (debido a que esa pata tiene un do ble uso) y, por ltimo, dos puertos paralelos de I/O (entra da o salida) llamados puerto A y puerto B. Una de las pa tas del puerto A puede ser utilizada como entrada de in terrupciones (esta pata especial hace que el microproce sador deje de realizar la tarea que estaba ejecutando y pase a realizar otra tarea alternativa; cuando la termina vuelve a su programa original). Analicemos el bloque ms grande (temporizadores), en ste observamos un grupo de bloques dedicados a mejorar el funcionamiento pero sin influir directamente en el flujo de seales. Vemos un temporizador de encendido,

Fig. 2

programa que es el lugar donde deben alojarse los datos que le indiquen al chip qu es lo que debe hacer; una me moria de datos donde ingresen las seales que debe procesar el programa, una unida aritmtica y lgica donde se desarrollen todas las tareas, una unidad de control que se encargue de supervisar todos los procesos y puertos de entrada y salida para que el PIC tenga contacto con el ex terior (figura 1). Un microcontrolador como cualquier circuito integrado analgico tiene entradas, salidas y algunos compo nentes exteriores necesarios para procesar las seales de entrada y convertirlas en las seales de salida (figura 2). El 16F84 requiere un cristal con dos capacitores y co mo mnimo un resistor para el reset. Por supuesto nece sita una tensin de fuente de 5V (VDD) aplicada con res pecto al terminal de masa (VSS). Posee dos puertos de salida, el A y el B, cuyos terminales son marcados RA0 al

Fig. 3

PIC para Estudiantes y Aficionados

Estructura de un PIC
un temporizador de arranque del oscilador de CLOCK, un circuito de reset y un circuito llamado de vigilancia o WATCHDOG. Los dos primeros bloques procuran un arranque ordenado para no producir una carga al mismo tiempo sobre la fuente. Por ltimo, existe un circuito con un nombre curioso: perro guardin. Su funcin es estar vigilante el mximo de tiempo que tarda el microprocesa dor en completar su programa (o mejor sera decir, la de rivacin ms larga de su programa) y en caso de superar se ese tiempo, provocar un reset automtico porque el microprocesador se qued trabado en alguna parte de su programa. Tambin se dice que el microprocesador se qued colgado o congelado. Este bloque de circuitos no trabaja independiente mente sino que requiere conexiones al exterior y al inte rior del dispositivo. Por ejemplo, no siempre son utilizados y es el programa quien determina su utilizacin y adems ajusta sus parmetros. Esto se realiza a travs del bloque de control o decodificador de instrucciones. Analicemos ahora la seccin de arriba a la izquierda en donde observamos la memoria de programa, el conta dor de programa, el registro de instrucciones y la pila o STACK de 8 niveles. Cuando hablamos de registros nos referimos a pequeas unidades de memoria transitoria, construida por lo general con un registro de desplaza miento como los analizados en el rey micro. Son memo rias voltiles que se utilizan para guardar informacin por un tiempo mnimo, con el fin de realizar una operacin compleja de varios pasos. El contador de programa es el responsable de que el microprocesador vaya analizando las instrucciones en orden ascendente. Este guarda el nmero de instruccin en el STACK y la instruccin misma la pasa al registro de ins trucciones desde donde se enva al resto del microproce sador. El STACK es, en realidad, una pila de registros (en nuestro ejemplo hay 8), debido a que el programa puede tener derivaciones (en la jerga LOOPS, rulos o subpro gramas). Cuando se termina de ejecutar un loop se debe volver al mismo punto del programa en donde se haba producido la bifurcacin y eso es posible porque ese n mero de instruccin qued guardado en uno de los regis tros de la pila. Es comn que un loop tenga, a su vez, un loop secundario y cuando se ejecuta ese loop secundario se debe volver al mismo punto del loop primario, eso se consigue con guardar ese nmero de instruccin del loop secundario en otro registro de la pila. Analicemos ahora la seccin inferior derecha. En ese sector se ubican los bloques responsables de efectuar operaciones matemticas y lgicas binarias; recordemos que el nombre ALU proviene de Aritmetic Logic Unite (unidad arimtica y lgica). En este sector es imprescin dible utilizar un registro ya que una operacin aritmtica o lgica siempre se efecta entre dos nmeros. Los n meros binarios que deben procesarse se toman de la me moria de datos, el primero se acumula en el registro de trabajo o registro W (de Work = trabajo) el segundo es el presente en el instante en que se invoca la memoria de datos. Como las operaciones pueden ser encadenadas (cuando el resultado sirve como operando de la siguien te operacin, tal como el caso de un producto) el registro W tiene un retorno a la ALU. Vemos adems que la ALU est comandada por el bloque MUX (MUltipleXador). En efecto, la ALU requiere que se le enven nmeros para procesar que le lleguen desde la memoria de datos, pero antes se la debe predis poner para que efecte la operacin requerida (compara cin, rotacin de dgitos, etc.). El registro de estado o estatus colabora durante las operaciones matemticas. Piense cmo opera Ud. para realizar una resta: primero ubica el primer nmero, luego el segundo y despus comienza a analizar los bits menos significativos (las unidades), pero si el nmero de arriba es menor que el nmero de abajo, entonces toma presta do de la columna de las decenas, luego debe recordar esto porque el nmero de arriba en la columna de las dece nas se redujo en una unidad. En realidad, aunque se tra te de una operacin entre dos nmeros su ejecucin re quiere guardar lo que se llama acarreo en otro registro y ste no es otra cosa ms que el registro STATUS. El PIC16C84 contiene adems de todo lo visto una memoria RAM de registros que puede ser llamada desde el registro de instruccin a travs de un multiplexador de direcciones. Esta seccin slo se utiliza en desarrollos avanzados. Ahora bien, un microcontrolador sin programa no sabe hacer nada, es como un nio recin nacido; tiene algunos reflejos condicionados como el de succin que le permite alimentarse pero no sabe hacer ms que eso. Nosotros deberemos ensearle a realizar acciones y lo vamos a hacer como a un beb, paso a paso. Su capa cidad de aprendizaje es enorme y sumamente variada. Le vamos a ensear a llorar a intervalos regulares, a encen der luces, a sumar, a restar, etc. Ensearle significa programarlo y eso se realiza con una plaqueta de programacin que depende de cada marca y modelo de microcontrolador. Antiguamente los microprocesadores tenan una ventanita transparente y era necesario exponerlos a la luz ultravioleta para borrar su memoria e introducir un programa nuevo. Actualmente cuentan con memorias que no tienen este requisito. Bas ta con cargarlos con un programa para que se borre el

PIC para Estudiantes y Aficionados

Estructura de un PIC
procesador vuelve a la posi cin 000 del programa y cuan do se produce una interrup cin, a la posicin 004. Estos retornos forzados deben ser considerados al disear el programa del microprocesa dor; es decir que el reset se produce porque la seal exter na pone el contador de programa en 000 y todo el progra Fig. 4 ma se reinicia. En cambio, anterior. Esto significa que, con el mismo integrado, po cuando ingresa una seal por la pata de interrupcin el dremos construir diferentes dispositivos que realicen fun contador de programa va a 004 y la accin que, en gene ciones totalmente distintas unas de otras. ral ocurre, es que se comienza a leer un subprograma particular. Cuando este subprograma termina, el contador de programa recupera el nmero que tena en el momen LA MEMORIA DE PROGRAMA to de arribar la interrupcin. Es una memoria EEPROM, es decir, de lectura so lamente (ROM = Read Only Memory) que se programa LA MEMORIA DE DATOS por tensin (no necesita luz ultravioleta); es decir que basta con introducir los datos con cierto nivel de tensin La RAM (Random Acces Memory = memoria de ac para que stos borren el programa anterior y graben ceso aleatorio, figura 5) es una memoria de lectura y es uno nuevo. critura de 128 posiciones pero que slo tiene implemen tados las primeras 48 posiciones (desde 00 a 2F en he Por qu esta memoria se llama ROM, si se pueden xadecimal). De estos 48 registros, los primeros 12 son fi grabar datos sobre ella? jos y cumplen un propsito determinado, en tanto que Se llama ROM porque para grabarla se debe conec desde el 13 hasta el 48 son registros de propsito gene tar el PIC al programador; luego de que el PIC coloca es ral, en donde el programa puede indicar que se almace tos datos en la plaqueta del dispositivo, slo pueden ser ne un dato para ser tomado ms tarde. ledos, ya que entonces forman el programa del PIC. Esta memoria (figura 4) tiene una longitud de 1 Kbyte con palabras de 14 bits. Digamos que tiene un ancho de Los Puertos del PIC 14 bits y una altura de 1.000 Bytes o que es una memo ria de 1.000 x 14. Observe que los nmeros de instruc El PIC16C84 tiene dos puertos paralelos de entrada cin en hexadecimal van desde el 000 al 3FF, lo cual implica Figura 5 que existen 1.040 posiciones de memoria, valor obtenido em pleando la frmula: 3 x 162+16 x 161+16 x 160 Observe que dos de las po siciones de memoria tienen las indicaciones vector de reset y vector de interrupcin. Eso significa que, cuando se provoca un reset, el micro-

PIC para Estudiantes y Aficionados

Estructura de un PIC
La pata 3 perteneciente al puerto A puede ser configurada como de entrada/salida o como de arranque de un temporizador/contador (figura 8). Cuando se programa como entrada esta pata fun ciona como un disparador de SCHMITT o Schmitt trigger ideal para reconocer seales distorsionadas o con crecimien to lento. Esta misma pata tambin tiene una caracterstica distinta cuando opera como salida. Ella es la nica que trabaja a colector abierto, es decir, que no pue Fig. 6 de emplearse como fuente, en este caso o salida: el puerto A de 8 patas y el B de 5 patas. Ca- siempre se utilizar un resistor externo. da pata puede ser predispuesta por el programa para operar como de entrada o de salida. Cada pata tiene un resistor de pull-up (resistor conectado a fuente) interno que puede ser desconectado mediante el programa. Es tos resistores se desconectan automticamente si una pata se predispone como pata de salida debido a que las salidas ya tienen posibilidad de entregar corriente desde fuente con un transistor. Todos los resistores de pull-up se conectan o desconectan al mismo tiempo (no existe un Figura 8 comando que los conecte independientemente). Como puerto de salida, una pata puede tomar 25mA del circuito o entregar 20mA al mismo, sin embargo, en el puerto A slo se pueden consumir 80mA en total o en tregar 50mA, esto significa que slo algunas patas pue EL CLOCK den trabajar al mximo porque si todas lo hicieran (y son 8) el consumo total sera de 25 x 8 = 200mA. El puerto B Los PIC poseen un oscilador configurable por progra tiene otras caractersticas mximas, ya que en total pue ma de caractersticas muy amplias. Cuando no se requie de tomar 150mA o entregar 100mA. Como vemos, las sa re mucha precisin se puede trabajar con un oscilador a lidas admiten suficiente carga como para alimentar direc RC conectado segn la figura 9. tamente a un led (figura 6). Para circuitos que Figura 9 Los puertos no utilizados siempre se deben conectar requieran una gran a la fuente de 5V a travs de un resistor de 10k debido precisin se puede tra a que se trata de un dispositivo CMOS que, de otro mo bajar con un cristal de do, podra deteriorarse por captacin electrosttica (figu frecuencia baja, media ra 7). o alta (figura 10). Co mo mximo el Figura 7 PIC16C84 puede tra bajar con un cristal de 10MHz. Internamente la frecuencia del cristal se divide por 4, por lo tanto, es muy comn la utilizacin de un cristal de 4MHz para obtener un CLOCK interno de 1MHz que garantiza que cada instruccin dure exactamente 1mS. Para temporizadores de perodo largo se utilizan cristales de baja frecuencia.

PIC para Estudiantes y Aficionados

Estructura de un PIC
provee un retardo al encendido o posterior al pulsado de reset porque C1 se cargar lentamente a travs de R1 con una cons tante de tiempo de 22k x 10F = 220mS. El resistor R3 limi ta la corriente de descarga de C1 a valores compatibles con sus caractersticas de corriente de pico mxima. D1 descarga a C1 cuando la tensin de fuente decae para permitir un reset inmediato cuando la fuente se apa ga y se enciende en rpida sucesin. R2 limita la corrien te de reset, tomada desde el microprocesador. Este se gundo sistema se suele utilizar cuando se requiere un re seteado remoto a travs de varios metros de cable que podran captar zumbido (C1 reduce la impedancia del cir cuito de reset).
Figura 11 Fig. 12

Fig. 10

El Reset El PIC se resetea cuando la pata 4 (MCLR negada) se pone a potencial bajo. Para simplificar el circuito de re set el PIC posee un temporizador interno que permite realizar un reset automtico cuando se aplica tensin de 5V. En estos casos el circuito externo de reset slo impli ca el uso de un resistor de 10k entre la pata 4 y fuente tal como se muestra en la figura 11. En muchos circuitos es necesario realizar un reset manual y para ello existen dos posi bilidades, una es utilizar slo el temporizador in terno (por progra ma) y la otra es agregar una cons tante de tiempo exterior como se muestra en la fi gura 12. En el se gundo circuito C1

Programas Cargadores de PICs

Hardware y Software para Cargar Microcontroladores


Tenga circuitos gratuitos para cargar programas en la memoria de un PIC.

INTRODUCCIN
Para que un PIC funcione como nosotros queremos es preciso cargarle un programa en la memoria de programa. El programa debe estar en un lenguaje compren sible por el chip o sea un lenguaje de mquina en cdigo

binario aunque en realidad al PIC debemos introducirle un programa en cdigo hexadecimal e internamente lo convierte a binario para realizar su interpretacin. El programa que debemos cargarle al PIC en cdigo hexadecimal tiene que tener la terminacin hex. Sin embargo, normalmente se debe escribir editar el

PIC para Estudiantes y Aficionados

Los Cargadores de PICs


programa en un lenguaje entendible por el usuario, nor malmente conocido como assembler. Los PIC basan su programacin en un set reducido de instrucciones que permiten editar el programa generando un archivo con extensin asm. Existen programas que se encargan de traducir el programa escrito en lenguaje assembler (asm) a progra ma escrito en lenguaje de mquina (hex); a estos progra mas se los denomina traductores o ensambladores. Por lo tanto, para escribir un programa y cargarlo en un PIC precisamos: moria de programa del PIC. Tambin se puede emplear cualquier otro cargador, hasta iuncluso se podran cargar los datos manualmente, tal como veremos oportuname nte. Todos los programas cargadores precisarn de un circuito elctrico o hardware para poder realizar la fun cin de carga.

LOS CARGADORES DE PICS


Dijimos que un cargador de PIC debe poseer por un lado el circuito que permita cargar el programa desde una computadora (hardware) y el programa que permita ma nejar a dicho circuito para realizar la operacin de carga (software). El circuito debe ser muy simple. Vamos a suponer que no tenemos un dispositivo pro gramador a nuestra disposicin; es decir que deberemos armar tambin un dispositivo programador de nuestros PICs que se conecte al puerto paralelo de una PC (el puerto de impresora). Nuestra intencin es que construya un dispositivo pa ra programar PIC que sea muy sencillo de modo que se pueda armar en el mismo protoboard y que se conectar a la PC por intermedio de una manguera. Como todos sabemos, un dispositivo para una PC (hardware), siempre necesita un programa que lo contro le (software). Nuestra intencin es que Ud. no compre na da ms que lo imprescindible; as que vamos a usar un software gratuito llamado NOPPP que puede bajarse por Internet. Ud puede bajar este programa, el MPLAB, el MPASM y otros programas y utilitarios, siguiendo los pasos dados en la pgina de contenidos especiales de Sa ber Electrnica y, lo que es ms importante, en forma to talmente GRATUITA. Para ello dirjase a: www.webelectronica.com.ar (si no tiene Internet o no sabe cmo se hace, lleve este es crito a cualquier cybercaf y pdale al encargado que le baje los programas). Haga doble click sobre el cono password y luego digite la clave aiwa15. Recuerde que cuando decimos programar nos esta mos refiriendo a disear un programa para un PIC y a la persona que realiz ese trabajo la llamamos programa dor; cuando decimos cargar nos estaremos refiriendo a llenar con datos la memoria de un PIC y el dispositivo que realiza esta funcin lo llamaremos cargador de PICs. Aunque parezca increble nuestro amplio idioma no tiene una palabra precisa que diferenciara a la accin del apa rato y se suscitaban graves confusiones al leer, por algo tan simple. En realidad, s estaba acuado un trmino prctico para el dispositivo: quemador de PICs, pero el

Un utilitario o programa que nos permita escribir el juego de sentencias a cargar en la memoria de programa del PIC. Este utilitario es un editor y como ejemplo tene mos el MPLAB. Un utilitario o programa que nos permita traducir el programa escrito en assembler a lenguaje de mquina para que podamos cargarlo en el PIC. A ese programa se lo denomina ensamblador y como ejemplo tenemos al MPASM. Un utilitario para cargar el archivo que tiene el programa en lenguaje de mquina (archivo con extensin hex) en la memoria del PIC. A estos programas se los denomina cargadores y como ejemplo tenemos al NOPPP, al PIC PRO y a tantos otros, muchos de los cuales men cionaremos ms adelante.
Pero tambin existen otros utilitarios que permiten si mular y emular un programa para ver cmo se compor ta antes de cargarlo en el PIC. El simulador permite detectar errores en el programa (el MPLAB permite simular) para poder corregirlos. El emulador permite que una computadora se comporte co mo PIC siendo las patas del puerto, las correspondientes a las del PIC. Esto quiere decir que si queremos hacer circuitos con PICs, para poder predisponerlo adecuadamente precisa remos:

Programa MPLAB: Para editar (escribir) un progra ma en lenguaje assembler y as generar el archivo con extensin asm. El MPLAB tambin me permite simular el funcionamiento del programa para detectar errores y corregirlos. Programa MPASM: Para ensamblar o convertir el archivo asm en archivo hex con el objeto de cargarlo en el PIC. Programa NOPPP: O cualquier otro cargador que permita ingresar el archivo con extensin hex en la me-

PIC para Estudiantes y Aficionados

Los Cargadores de PICs


mismo slo se puede aplicar a aquellos PICs que slo se pueden grabar una sola vez. Por otro lado, el trmino se puede confundir con un dispositivo que funcionando mal quema a los PICs en lugar de cargarlos, tal como el autor mencionar con respecto a un programador comer cial. Navegando por Internet es posible encontrar gran cantidad de programas cargadores de PICs, nosotros ha remos referencia a los cargadores: * Cargador NOPPP * Cargador PROPIC * Cargador Universal de PICs y EEPROM * Cargador PIC800 * Cargador PP84 Obviamente, todos estos circuitos puede bajarlos li bremente pudiendo tener ms informacin y los enlaces a las pginas web de cada uno de estos cargadores en la pgina de contenidos especiales que hemos dado ante riormente. Estos cargadores sirven para ser utilizados en diferentes tipos de PICs a saber: NOPPP es un programa de uso libre ampliamente di fundido que sirve para cargar PICs del tipo 16C84, 16F83 y 16F84, pero tambin se dn otros cargadores con sus respectivos programas, que sirven para otros componen tes. PICPRO es un programador avanzado en relacin con el NOPPP y sirve para ser montado cuando no se quieren correr riesgos con la PC que se est utilizando para cargar PICs y cuando se desea tener un trabajo li bre de errores (el NOPPP es un programa para aprendi zaje). El Programador Universal sirve para programar: 12C508, 12C509, 12C67X, 16C55X, 16C61, 16C62X, 16C71, 16C71X, 16C8X, 16F8X, 16F873/4/6/7, 16C73/74/76/77. Tambin programa memorias EEPROM de la serie 24LCXX. PIC800 es un programador para 16C84, 16F84, 16F873/74/76/77. PP84 es un programador sencillo del tipo NOPPP de buenas prestaciones. Un circuito con PIC siempre se compone de dos sec ciones. El circuito del dispositivo deseado y los necesa rios componentes perifricos imprescindibles para que el PIC funcione, a saber clock y reset (la primer seccin cambia con cada proyecto, en tanto que la segunda pue de ser comn a muchos proyectos). Ambos circuitos peri fricos tienen diferentes opciones: el clock puede ser a cristal cuando se requiera precisin, o a RC (como en nuestro caso) cuando slo se requiere que la secuencia de encendido tenga un tiempo aproximado. En cuanto al reset, ste puede ser externo con un pulsador o interno y automtico, cada vez que se conecta la alimentacin de 5V. Una vez definidas estas cosas se puede dibujar el cir-

Fig. 13

cuito completo, tal como lo mostramos en la figura 13. Observemos primero la seccin perifrica imprescin dible. El clock est generado por un oscilador RC realiza do con el PIC, R1 y C1 (elegidos para obtener una se cuencia completa que dure un segundo aproximadamen te), en tanto que el reset se realiza en forma automtica, cada vez que se enciende el equipo, por intermedio de R6. Nuestro circuito de aplicacin no puede ser ms sen cillo, slo utilizamos cuatro LEDs sobre las patas RA0 a RA3 (puerto A tomado parcialmente) y sus correspon dientes resistores de pull up (resistores a fuente). Nada ms simple y fcil de armar en un panel protoboard. Qu ocurrira si compro los componentes, los armo y pruebo directamente el circuito? No va a funcionar porque como el PIC no est instrui do para realizar ninguna funcin y los LEDs van a perma necer todos encendidos. El PIC tiene una memoria interna que debe cargarse con nmeros binarios de 8 dgitos; exactamente tiene 48 posiciones de memoria (numera das desde el 0 hasta el 2F en nmeros hexadecimales), en donde se le indicar qu tarea debe realizar o qu da tos fijos debe cargar para ejecutar esas tareas. En nuestro caso activar transistores internos en algu nas patas del puerto A (predispuestas como salidas) de modo de generar cortocircuitos momentneos a masa en forma secuencial.

PIC para Estudiantes y Aficionados

Los Cargadores de PICs


El dispositivo con un zcalo para conectar el PIC e instruirlo (cargarle los datos en la memoria de programna) se llama genricamente Programador de PICs, pe ro nosotros en este artculo convenimos en llamarlo Car gador de PICs y es como un apndice de nuestra PC, conectado con un cable al puerto paralelo de la misma. Si la PC tiene dos puertos paralelos de salida se usa r uno para la impresora y el otro para nuestro programa dor, si slo tiene uno, se desconectar provisoriamente la impresora para conectar el programador, o mejor an, se conectarn ambos dispositivos a travs de una caja se lectora que se consigue en los negocios de computado ras y se usa para conectar dos impresoras a la misma PC. Si Ud. tiene un mnimo conocimiento sobre computa doras, sabr que un dispositivo conectado a la PC es to talmente intil si no est acompaado de un programa instalado en el disco rgido de la misma. En algunos casos se necesitan dos programas, a saber: el driver del dispositivo y un programa de aplicacin que utilice dicho dispositivo. En el caso de dispositivos que se conectan en el puerto paralelo, el programa driver no es necesario porque dicho puerto ya est debidamente habilitado para usar la impresora. Lo que s se requiere obligatoriamen te, es un software de aplicacin del programador que suele proveerlo el fabricante del mismo. Programadores y software de aplicacin de los mismos hay muchos. Algunos son muy simples y econmi cos (tan econmicos que muchos se entregan gratuita mente por Internet, es decir que el autor regala el softwa re y da las explicaciones para armar el hardware) y otros son muy complejos y caros. La diferencia entre unos y otros suele ser la posibilidad de aceptar ms tipos de PICs (adems del 16C84 y 16F84 existen muchos otros) e inclusive microprocesadores o memorias de otras marcas. Tambin se diferencian en la velocidad a la cual cargan el PIC; los hay de alta productividad que trabajan con un elevado flujo de datos y otros ms lentos que slo sir ven para tareas de aprendizaje. En nuestro caso vamos a trabajar con un software que se llama NOPPP, que es absolutamente gratuito y se puede bajar desde Internet. Este software est previsto para ser usado slo con los PIC16C84, PIC16C83 y PIC16F84 que son los ms utilizados. Con respecto al hardware, Ud. puede usar el que propone el autor del software que es muy sencillo o usar otro que le propongo yo ms adelante y que tiene algunas ventajas con respecto a una mejor forma de los pulsos de programacin. El NOPPP es suficientemente sencillo co mo para implementarlo en un panel protoboard, pero co mo es un hardware que deberemos usar ms adelante para programar otros PICs conviene armarlo en forma ms definitiva utilizando una plaqueta de circuito impreso o una plaqueta ojalillada. Si Ud. slo desea armar el cir cuito de este artculo puede armar tanto el cargador co mo el circuito de aplicacin en dos lugares distintos del mismo protoboard. El PIC, como una memoria, tiene una pata que predispone el dispositivo para leer o para escribir. Si la pata 4 del PIC est a un potencial comprendido entre 13 y 14 V, el PIC est preparado para escribir los datos que pro vienen de la PC. Si la pata 4 est por debajo de 6V, el dis positivo est previsto para ser ledo. Los datos a leer o es cribir se ponen/obtienen de la pata 13 del PIC con la pata 12 del mismo que opera como clock. Aquellos que conocen el proceso de carga de datos en una memoria serie, no tendrn mayores inconvenien te en entender la frase anterior. Para aquellos que no co nocen el proceso explicamos lo siguiente: Un PIC se lee/escribe accediendo a las diferentes po siciones de memoria por la misma pata por la que se obtienen/ingresan los datos (la pata 13). La seal primero elige la posicin de memoria a ser leda/escrita, y luego que esa posicin est accesible se escriben/leen los da tos. El clock que se coloca en la pata 12 sirve para indi car en qu momento se debe transferir la informacin. Los datos pueden estar sobre la pata 13 todo el tiempo que Ud. desee, ya que no sern ni ledos ni escritos por la PC hasta que se produzca un cambio de estado (de al to para bajo) en la pata 12. En la figura 14 mostramos las formas de seal indicaFig. 14

PIC para Estudiantes y Aficionados

Los Cargadores de PICs


Fig. 15

das por Microchip para leer/grabar un PIC. El lector observar que dentro del comando existe una primera seccin de 6 bits que indica la posicin de memoria a ser leda/escrita y luego la lnea de datos per manece en estado de alta impedancia por un intervalo de tiempo que depende de la operacin (durante ese tiempo el clock est apagado). Por ltimo ingresan/egresan los datos. Las conexiones de fuente y las seales deben ser aplicadas segn una secuencia predeterminada que debe respetarse invariablemente. Los nombres de las sea les se aclaran en la figura 15. A) El primer paso es colocar el PIC en el zcalo del programador con seales y fuentes a potencial de masa. B) Levantar la tensin de fuente VDD a un potencial de 5V 0,2V por la pata 14 (VDD). C) Levantar la tensin de fuente VPP a un potencial de 13V 0,3V por la pata 4 (MCLR NEGADO). D) Esperar en esas condiciones un tiempo superior a 1mS. E) Posicionar el primer dato en la pata 13 (RB7) con un potencial alto (mayor a 4 V) o bajo (menor a 1V). F) Cuando la pata 12 (RB6) pase a un estado bajo, in ferior a 1V, el dato se carga en la memoria. G) Continuar cargando los datos con el mismo crite rio a un ritmo tal que el dato este presente por lo menos durante 100nS. H) Cuando todos los datos fueron cargados se debe esperar 1 segundo. I) Desconectar la fuente de 13V. J) Desconectar la fuente de 5V. K) Retirar el micro grabado.

Por sobre todas las cosas debe respetarse el cri terio de no sacar un PIC de su zcalo con las fuentes conectadas, porque puede desprogramarse o, peor an, daarse definitivamente. Tambin es muy impor tante respetar las tensiones de fuente y no demorar la llegada de datos, luego conectar VPP (porque po dran cargarse datos falsos por interferencias electro magnticas). Como usted puede observar de la descripcin anterior la entrada RB6 es utilizada como clock y la RB7 como entrada de datos en una clsica operacin de transferencia de datos en serie. Observe que hay un tiempo entre el momento en que MCLR NEGADO sale de la condicin de reset hasta que aparece el primer dato o el primer pulso de clock. Tambin hay un tiempo mnimo para la perma nencia de un dato en la entrada (la representacin usada para un dato significa que el mismo puede ser alto o bajo, depende del bit que se est grabando). Lo que no hay es un tiempo mximo pero evidentemente cuando mayor es este tiempo ms lenta ser la carga del progra ma. El tiempo ms adecuado depende de factores tales como el largo del cable utilizado para conectar el progra mador a la PC. Si el cable es largo, los pulsos tienden a deformarse y atenuarse, sobre todo cuando son de corta duracin (100nS equivalen a una frecuencia de 10MHz). Para evitar problemas, todos los programadores trabajan a velocidades inferiores a la mxima, sobre todo conside rando que la capacidad de memoria no es muy grande y para el uso no comercial no son imprescindibles grandes velocidades de grabacin. Un cargador de PIC debe permitir tambin una ope racin de verificacin para cuando el usuario tiene dudas respecto de la condicin de un determinado PIC (vaco o lleno). Solo que el programa almacenado debe ser invio lable en caso de que la persona que lo carg as lo haya dispuesto. Esto se llama predisponer el PIC y no slo se lo predispone para hacerlo inviolable, sino que adems se determinan otros importantes parmetros de funciona miento como por ejemplo que est predispuesto para un clock a RC o que contenga un temporizador de reset in terno. Las predisposiciones no forman parte del programa del PIC aunque pueden incluirse junto con ste. Algunos cargadores de PICs preguntan sobre la predisposicin antes de grabar el PIC. La pregunta sobre la predisposi cin deseada aparece en la pantalla de la PC y uno elige de un men de opciones. En otros casos, las predisposi ciones se escriben antes del programa en una secuencia

10

PIC para Estudiantes y Aficionados

El Cargador NOPPP
perfectamente predeterminada que debe respetarse a ul del programa, el PIC analiza su predisposicin y si el tranza. Las predisposiciones son tres y las vamos a ana Watchdog timer (literalmente perro guardin) est habili tado provoca un reset programado. En los programas lizar por orden: ms simples y donde se producen loops infinitos a prop a) La prohibicin de lectura. El PIC se programa pe sito (de los que slo se sale tocando un pulsador), se ro el programa no puede ser ledo. Cada tanto aparece in suele dejar el perro guardin desconectado para evitar un formacin en Internet sobre alguna empresa dedicada a funcionamiento errtico. Cada cargador de programas leer PICs protegidos, sin embargo, an no he conseguido tiene un software diferente y esto implica que las predis leer ningn PIC protegido. Aclaremos que el programa posiciones anteriores, tambin llamadas fusibles de pre protegido no se puede leer, pero el PIC se puede volver disposicin se accionen con sentencias diferentes que a grabar. El autor escuch tambin una especie que dice sern explicadas ms adelante. que el PIC16Fxx fue creado por una supuesta filtracin en el secreto del programa de los PIC16Cxx, pero el autor no tiene pruebas de la certeza de esta noticia. EL CARGADOR NOPPP b) Habilitacin del timer de reset. En el pinup del El NOPPP es un software para un cargador muy sim PIC se puede observar que la pata llamada MCLR nega do (4) tiene un doble uso. En principio sirve para predis ple y efectivo. Realmente no tiene defectos importantes y poner el PIC en grabacin o lectura, como ya fuera co nos permite cargar los PIC 16C83, 16C84 y 16F84 en for mentado; pero cuando su tensin cae por debajo de 1V, ma muy econmica ya que el hardware correspondiente el PIC se resetea y comienza la lectura del programa por slo requiere dos diodos rpidos de seal, un BC548 y 4 el principio. Este tipo de reset se llama reset a pulsador y resistores, adems de una fuente regulada doble de 13 y se utiliza para provocar alguna accin como, por ejemplo, 5V y un conector para el puerto paralelo de la PC. Ms comenzar una secuencia de encendidos de LEDS o en adelante veremos el circuito completo pero para entender cender un LED por un tiempo predeterminado. Este mo el funcionamiento del cargador de programas nada mejor do de funcionamiento requiere una accin externa de re que el circuito simplificado de la figura 16. A propsito, el set (apretar un pulsador). La misma accin de reset se nombre del software proviene de las iniciales de NO Pie puede conseguir en forma automtica cada vez que se ce Programer Pic, es decir: programador para PIC sin pie conecta la fuente de 5V. Este modo de trabajar slo re zas en alusin a los muy pocos componentes que requie quiere que la pata MCLR (pata 4) est permanentemen re. Las patas de comunicacin con el puerto paralelo de te conectada a 5V (con un puente o un resistor de 1k) y la PC estn indicadas como 1J1, 2J1, etc, ya con J1 de que el PIC est predispuesto con el Power-up Timer en signamos al conector de entrada y el nmero inicial indiON (temporizador de encendido conectado). Cuando el temporizador est habilitado, luego de conectar la fuente Fig. 16 de 5V, comienza un conteo interno (que dura 72ms) du rante el cual el PIC pone todas sus compuertas internas en cero (reset) y recin despus comienza a efectuar los pasos que le indica el programa. A propsito, el nombre MCLR proviene de MASTER CLEAR (literalmente, lim piador maestro). c) Circuito de vigilancia (perro guardin). En reali dad el PIC tiene un reset extra que opera luego de un cierto tiempo si no se realiza la operacin final del progra ma. Es como una especie de rutina automtica de des congelamiento que opera en caso de falla del programa. Eventualmente puede ingresar algn pulso de energa al sistema que enve al programa a un loop (rizo) eterno (una derivacin o camino cerrado sobre s mismo). Una vez que el programa ingres en ese camino no puede sa lir de l salvo que se produzca un reset. Si pasa un tiem po considerable sin que se llegue a la ltima sentencia

PIC para Estudiantes y Aficionados

11

El Cargador NOPPP
garse completo. Ahora que conoce mos el funcionamiento del cargador de progra mas NOPPP vamos a completar el circuito con una fuente de ali mentacin y el conec tor para PC (figura 17). Observe que las fuentes estn confor madas por dos regula dores de 5 y de 12V pero, como necesita Fig. 17 mos un regulador de 13V, realizamos una pequea modificacin en el regulador de 12V; agregando los diodos D1 y D2 la tensin de salida se incrementa a un valor de 13,2V. El otro cambio importante es el agre gado de capacitores de filtro que, como Ud. observa, siempre se ubican de a dos: un electroltico para filtrar las bajas frecuencias y un cermico disco para las altas fre cuencias. Por ltimo se agrega un conector del tipo DB21 ma cho para conectar el dispositivo directamente a la salida de la impresora de una PC. En el circuito dibujamos el co nector visto por el lado de las patas de conexiones y el cdigo de colores de cable adecuado para usar un cable plano de 5 hilos (negro, marrn, rojo, naranja y amarillo) al cual se le retuerce por encima otro de color blanco que opera como masa y blindaje. Todo este circuito es suma mente sencillo y si Ud. slo quiere conocer los PICs me diante este manual tcnico, pero no se va dedicar a tra bajar permanentemente con ellos, puede armarlo en un mdulo de armado sin soldaduras (protoboard) junto con el circuito de un destellador rtmico (figura 18).

ca a qu pata se dirige el cable (tambin incluimos el co lor del mismo). Los datos (oscilando de 0 o 5V) ingresan en sucesin por el cable 14J1 y, atravesando el resistor R2, llegan a la pata 13 del PIC. La pata 13 perteneciente al puerto B se comporta como una pata de entrada de datos en tanto el cable 2J1 se encuentra en el estado bajo es decir que la pata 4 Vpp est a un potencial de 13V aproximadamente. Al mismo tiempo, el cable 17J1 se manda a potencial de masa para que los datos entrantes no salgan a su vez por el cable 11J1; de este modo, el diodo D1 no permite que el potencial del cable supere la tensin de barrera del diodo (es decir que el diodo D1 opera como una llave). Como ya sabemos los datos deben ser validados por me dio de un cambio de estado de la seal de clock que in gresa desde la PC por el cable 1J1. Frmese una imagen mental del flujo de datos. Pien se en la PC como si bombeara datos al PIC por el cable 14J1; el PIC, para no inflarse, los devuelve por el cable 11J1. En realidad, los datos ingresan por la pata 13 del PIC y se instalan en la memoria; pero a continuacin, el programa de carga verifica que el dato est en la posicin de memoria correspondiente y si as ocurre, se habilita la carga del siguiente dato. La secuencia es tal que: A) se direcciona una posicin de la memoria,
B) se graba,
C) se verifica esta ltima grabacin y si es correcta,
D) se habilita al programa para cargar el siguiente dato.
De acuerdo al programa de carga, si falla la carga de un dato se puede seguir con los otros y al final se intenta la carga del dato que no se carg. En otros, una falla de verificacin significa que el programa debe volver a car-

Fig. 18

12

PIC para Estudiantes y Aficionados

Cargador Universal de PICs


Fig. 19

CARGADOR UNIVERSAL DE PICS


En varias direcciones de internet aparece el circuito que describiremos a continuacin, adjudicndole la autora a diferentes personas. La versin que reproducimos es en base al trabajo de un tal Droky de RaDiKAl ByTEs. Nuestros tcnicos han realizado algunas modificaciones y el resul tado es el siguiente: Con este proyecto se puede realizar un programador para PICs y EEPROMs de la serie 24LXxx que funciona bien y requiere pocos componentes externos. El circuito est basado en el Luddi o programador de JDM (vea: www.jdm.com), siendo compatible con diferentes softwares cargadores. Se ha probado en diferentes computadoras desde un Pentium 100 hasta un Pentium III de 850MHz sin inconve nientes. No requiere de ningn tipo de adaptador, y en tres zcalos que dispone, podemos programar: - PIC12C508 /A, PIC12C509 /A - PIC12C67x - PIC16C55x - PIC16C61 - PIC16C62x - PIC16C71 - PIC16C71x

- PIC16C8x - PIC16F8x - PIC16F873/4/6/7 (Modelos de 28 patillas) - PIC16C73B/74B/76/77 - EEPROMs de la serie 24LCxx

Fig. 20

PIC para Estudiantes y Aficionados

13

Los Otros Cargadores


En la figura 19 se muestra el circuito del cargador y D1,D2,D3,D4 - 1N4148 en la 20 la placa de circuito impreso propuesta. D5 - 5.1V 1/2W El tamao del cargador es bastante reducido y posee D6 - 8.2V 1/2W bases (zcalos) para la mayora de los chips que puede J1 - Zcalo 24LCXX 8 Patillas programar (siempre en encapsulado DIL no en TSOP, J2 - Zcalo PIC 18 Patillas SMD ni otros formatos). J3 - Zcalo PIC 28 Patillas Si bien es posible utilizar distintos tipos de softwares, P2 - CONNECTOR DB9 Hembra hemos realizado experiencias con el italque, el desden, el Q1,Q2 - BC548B pix y el icprog. Es precisamente el icprog el que permite Q3 - BC558B cargar a casi todos los chips indicados y lo puede bajar R1 - 100k gratuitamente siguiendo los pasos que mencionamos an R2 - 10k teriormente, utilizando la clave de acceso: aiwa15. R3 - 1k5 El programa pix se puede usar para los PIC16F8x y PIC16C8x, es rpido y permite bastantes opciones. Para las EEPROM 24LCxx, pueden emplearse tanto el Icprog LOS OTROS CARGADORES: como el PIX . Como hemos dicho, existen muchos circuitos carga Para los 12C508/A y 12C509 /A lo ms seguro es usar el prog508 y el prog509 (vea los foros PSX) y que se dores de PICs que se pueden bajar de Internet. En la figura 21 se observa el PIC800 que es un pro pueden descargar de la pgina de JDM. gramador para 16C84, 16F84, 16F873/74/76/77 que est La lista de materiales del cargador universal es la si presentado en la web por Miguel Scapolla (www.miguelo.com.ar). guiente: El PICPRO es un programador avanzado en relacin C1 - 22F , 16v Tantalio/Electroltico con el NOPPP y sirve para ser montado cuando no se C2 - 100F , 16v Tantalio/Electroltico quieren correr riesgos con la PC que se est utilizando C3, C4 - 0,001F - Cermico para cargar PICs y cuando se desea tener un tra Fig. 21 bajo libre de erro res (el NOPPP es un programa para aprendizaje). Su circuito se lo pue de ver en la figura 22. Por ltimo, el PP84 es un pro gramador sencillo del tipo NOPPP de buenas presta ciones (figura 23). Si desea ob tener los progra mas que permitan manejar a estos cargadaores, puede buscarlos en Internet o con sultar a: ateclien@webelectronica.com.ar

14

PIC para Estudiantes y Aficionados

Los Otros Cargadores

Fig. 22

Fig. 23

PIC para Estudiantes y Aficionados

15

El Set de Instrucciones

El Set de Instrucciones

Manejo de las Instrucciones de un PIC


Aprenda a manejar el set RISC de un PIC para realizar sus propios programas.

INTRODUCCIN
Una instruccin es un comando, parte del programa, que se le aplica al PIC para que lo interprete y ejecute su cumplimiento. La instruccin se compone de una serie de bits presentada en secciones o posiciones perfectamen te delimitadas, que el procesador interpreta para cumplir una orden deseada, quedando establecidas las variables que se modifican. Dicho de otra forma, las instrucciones poseen un formato de acuerdo a un sistema de codificacin. El formato cambia de acuerdo con la operacin que se va a rea lizar. Cada instruccin, para la lnea baja de los PICs tipo 16C5X, consiste en una palabra de 12 bits que codifica en un solo bloque, la orden, el operador y la ubicacin del resultado o el salto (en caso de que lo hubiere). En los microcontroladores PICs tipo 16X84 cada instruccin tiene una longitud de 14 bits. Los bits que actan como datos de la memoria EPROM se reciben en el decodificador de instrucciones, y operan con el contador de programa y el registro de tra bajo W, para acceder a lugares especficos del microcon trolador, tales como la ALU, posiciones de memoria, re gistros, etc. Como sabemos, los PICs 16X84, entre otros, manejan un set reducido de instrucciones (35 instrucciones en lo que se denomina RISC) que presentan una codifica cin muy particular llamada formato de la instruccin. Cada instruccin posee su formato y es totalmente definido por MICROCHIP. En la figura 24 podemos apreciar la sintaxis de una instruccin del set. Se trata de la instruccin que suma el contenido del registro de trabajo con el con tenido de un registro cuya direccin est determina da por el operador f. En esta figura, en primer lugar se observa la sintaxis, es decir, la forma en que el programador escribir la instruccin en el lenguaje entendible por el operador (el programa en .asm). La codificacin es el formato de la palabra que defi ne la instruccin y que veremos en detalle luego. No te que para que se complete la instruccin se nece sita una sola palabra y un solo ciclo del contador de

Figura 24

programas. Como veremos, el resultado de la operacin se guarda en un sitio definido por el programador (dependiendo de qu estado tome el bit d) y que esta instruccin mo difica los bits C, DC y Z del registro de estado (STATUS). Esto quiere decir que cuando coloco la instruccin: ADDWF f,d El ensamblador generar el cdigo: 0001 11df ffff En este cdigo, los seis bits de mayor peso (bits 6 al 11 en la figura 25) definen la operacin que va a realizar la instruccin de acuerdo a lo requerido por el programa-

Figura 25

16

PIC para Estudiantes y Aficionados

El Set de Instrucciones
dor. Aqu se define una orden que el PIC interpreta y eje cuta sobre un operando determinado, cuya direccin la busca segn lo indicado por los 5 bits menos significati vos (bits 0 al 4 en la figura 25). El bit 5 es un cdigo de reconocimiento de destino y determina en qu lugar se va a alojar el resultado de la operacin. Si este bit es 0 el destino de la operacin se r puesto en el registro de trabajo (W). Si el bit d es puesto a 1 el destino ser el de la posicin de memoria definido por f. Los cinco bits de menor peso en el formato de la ins truccin representan la direccin donde est guardado el operando (f), que est en la memoria de datos y por te ner cinco bits slo podemos direccionar una de las 32 po siciones de memoria de datos. La mayora de las instrucciones se realizan en un ci clo de contador de programa (ciclo de instruccin) excep to las instrucciones de salto que necesitan dos ciclos pa ra ejecutarla. Se determina el ciclo de instruccin divi diendo por cuatro la frecuencia del oscilador, elegida pa ra el funcionamiento del microcontrolador tal como se ob serva en la figura 26. Es decir, la seal que proviene del oscilador externo, conectado a los pines OSC1/CLKIN y OSC2/CLKOUT del microcontrolador, se divide en cuatro ciclos, obtenindo se as la seal requerida por el procesador interno para realizar las operaciones. De esta manera se puede reali zar la bsqueda y ejecucin de la instruccin. El reloj de instruccin es el ciclo interno que posee el microcontrolador para cronometrar el tiempo de ejecucin de las instrucciones. Los pulsos entrantes del reloj son divididos por 4, ge nerando diferentes seales denominadas Q1, Q2, Q3 y Q4. El estado Q1 hace incrementar el contador de progra ma, Q2 y Q3, se encargan de la decodificacin y ejecu cin de la instruccin y por ltimo, Q4 es la fase de bs queda de la instruccin. El cdigo se almacena en el re gistro de instrucciones.

EL SET DE INSTRUCCIONES DEL 16X84


Vimos cmo es la estructura de una instruccin, ra zn por la cual le recomendamos que lea nuevamente el comienzo de este captulo si no entiende lo que a conti nuacin expresaremos. Los cdigos (denominados mnemnicos) que simbo lizan un conjunto de instrucciones, representan la tarea que debe hacer el microcontrolador una vez que las analice en funcin del operando. Un mnemnico ayuda a recordar el significado que tiene la instruccin. Para poder analizar al conjunto de instrucciones que conforman el set RISC, se los suele agrupar teniendo en cuenta el tipo de operacin que realizan, as es comn que se las presente bajo cuatro posibles formas, a saber: 1. Instrucciones orientadas a registros. 2. Instrucciones orientadas a bits. 3. Instrucciones con literales. 4. Instrucciones de control y especiales. En la figura 27 vemos un cuadro donde se reproducen las instruccio nes orientadas a registros, la figura 28 muestra las operaciones orienta das a bits y la figura 29 nos permite conocer cules son las instrucciones con literales y de control. Sobre las notas a las que hace mos referencia en dichas figuras, debe tener en cuenta lo siguiente: Nota 1. Al modificar un registro de entrada/salida (E/S) con una operacin sobre l mismo (por ejem plo MOVF PORTB,1), el valor utiliza do es el que se encuentre presente en las patas del PORTB. Por ejem plo, si el biestable tiene un "1" para una pata configurada como entrada y se pone a nivel bajo desde el exte-

Figura 26

PIC para Estudiantes y Aficionados

17

El Set de Instrucciones
Nota 3. Si se modifica el Contador de Programa (PC rior, el dato se volver a escribir como un "0". Nota 2. Si se ejecuta esta instruccin sobre el TMR0 CP) o es verdadera una condicin de prueba, la instruc y d=1, ser borrado el divisor de frecuencia (preescaler), cin requiere dos ciclos de mquina. El segundo ciclo se ejecuta como un NOPPP. si est asignado al TMR0.
Figura 27

Figura 28

18

PIC para Estudiantes y Aficionados

Programacin de PICs
Figura 29

Programacin de PICs

Aprendiendo a Programar: Carga y Programacin de PICs


Sepa cmo es la estructura de un programa y cmo se deben utilizar las instrucciones.

CIRCUITO DE UN ENTRENADOR
En Saber Electrnica hemos desarrollado un entrenador para aprender a programar y cargar PICs, este entrenador se muestra en la figura 30. Antes de dar los primeros ejemplos es conveniente tener en cuenta los siguientes conceptos: 1) En todo programa se debe decir cul es el tipo de PIC que se emplear, hay que incluir sus libre ras y configurarlo:

Figura 30

PIC para Estudiantes y Aficionados

19

Programacin de PICs
instruccin org y terminar con la instruccin end. Este manual no pretende ser un tratado de progra list p=16f84 macin y su objetivo es capacitar al estudiante y aficio include <p16f84.inc> nado en el uso y carga de programa de un PIC. Si Ud. __config_RC_OSC &_WDT_OFF desea obtener una capacitacin completa le recomenda 2) Al escribir un programa se realizan las sentencias mos estudiar el Curso Completo de PICs preparado en columnas. por Editorial Quark y que se compone de dos textos, un La primera columna se utiliza para nombrar varia CD y un video de entrenamiento. bles o colocar etiquetas. La segunda columna se utiliza para aplicar la instruccin. La tercer columna contiene los datos necesarios para que pueda ejecutarse dicha PROGRAMAS DE PRCTICA instruccin. La cuarta columna contiene datos tiles pa ra el programador pero que no son tenidos en cuenta Sea el programa: por el microcontrolador. ; Primer programa de prctica Ejemplo: Voy a definir a la variable M en la posicin de memoList p = 16C84 ; voy a utilizar el PIC16C84 ria expresada en nmero decimal 26: ptob equ 0x06 ; inicializo la variable ptob en ; la direccin 06h 1 Col. 2 Col. 3 Col. 4Col. Reset org h0 ; comienza el programa M equ D26 ;defin a la variable M en
Inicio movlw h0 ; cargo a W con 0 ;la posicin 26.
tris ptob ; mando el contenido de W a ptob movlw h0f ; cargo a W con el nmero binario 15 M es la variable que defin
ciclo nop ; rutina nula equ es la instruccin que significa asignar o definir
goto ciclo ; vaya a ciclo D 26 es la posicin de memoria expresada en n
mero decimal. El programa comienza con un (;), por lo tanto, lo que sigue en el rengln es tomado como un comentario. Los 3) Se emplean signos para efectuar determinadas signos = forman un resalte para indicar el inicio del proconsideraciones, por ejemplo: grama y ayudan a darle una distribucin agradable a la vista. El programa se lista en cuatro columnas; la primera ; se emplea para colocar observaciones. El progra sirve para colocar las variables que utilizaremos como ma no toma en cuenta todo lo que est en una lnea registros y las etiquetas que son ubicaciones del progra luego de dicho signo. ma adnde se debe ir cuando el operando de una instruc : se utiliza normalmente para definir etiquetas, que cin as lo requiera. son lugares a donde va el programa cuando as lo re En la segunda columna se coloca la instruccin y en quiere. la tercera el operando de la instruccin. La cuarta colum se utiliza para decir que lo que est entre ellas es na siempre va precedida de (;) y se utiliza para colocar el nmero y puede estar expresado en lenguaje deci observaciones que le sirvan al programador como gua mal, binario o hexadecimal. para saber qu quiso hacer o qu funcin cumple esa . se emplea para definir un nmero en decimal. sentencia, obviamente, al compilar esa instruccin, las observaciones no son tenidas en cuenta. Ejemplo: List p = 16C84 R equ .28 ;defin a la variable R en la posicin
Es el encabezado del programa que le indica al en ;de memoria 28
samblador qu tipo de PIC se est utilizando para que s lazo: rlf R,f ;roto el contenido de R y el resultado
te pueda reconocer qu set de instruccin debe utilizar. ;queda en R
ptob equ 06 Nombr a la variable ptob y la coloqu en la direccin 4) Un programa siempre debera comenzar con la Ejemplo:

20

PIC para Estudiantes y Aficionados

Programacin de PICs
06 de la RAM, esta direccin est reservada para el PUERTO B, es decir, ratifico que ptob es el registro del PORT B. Cuando, ms adelante, deba enviar informacin al puerto b, slo debo mencionar ptob. Reset org 0 Significa que al realizarse el reset, el programa co mienza por la posicin 0 de la memoria del programa. Pe ro de inmediato pasa a la posicin 1 que tiene escrita la siguiente sentencia: Inicio movlw 0 Con esto se carga el registro w con el hexadecimal 0 (es decir el binario 00000000) tris ptob Esta instruccin enva la informacin del registro W al puerto B para indicarle que todos sus pines son de salida (si se hubiera cargado el binario 11111111 todos los pi nes seran de entrada y si se hubiera cargado 11001010 algunos seran entradas y otros salidas). movlw 0f Carga el registro W con el hexadecimal 15 que equi vale al binario 00001111 y movlw ptob Enva el valor cargado al puerto "B" que producir un estado alto en RB0, RB1, RB2 y RB3 y un estado bajo en RB4, RB5, RB6 y RB7. La informacin del puerto pasa al buffer que lleva las patas 15, 16, 17 y 18 de un PIC16C84 a masa encendiendo los leds D7, D8, D9 Y D10. Ciclo nop Realiza una rutina nula, es decir, que no efecta ope racin alguna. goto ciclo Enva el programa hacia la etiqueta "ciclo". Las dos ltimas operaciones hacen que al ejecutarse un progra ma, ste se quede en un lazo que se llama loop cerra do. La nica manera de salir de este loop es pulsando RESET. Entonces se observa que los leds se apagan hasta que se suelta el pulsador y el programa comienza nuevamente por la etiqueta RESET. Obviamente, este programa debe ser editado en un utilitario adecuado (MPLAB, por ejemplo) y luego debe ser compilado (utilizando el MPASM o el mismo MPLAB) para obtener el archivo .hex que me permitir cargar el PIC que deber colocar en el cir cuito de la figura 1 para verificar que realmente hace lo que estamos di ciendo. Para cargar el PIC con el progra ma .hex se utiliza un prototipo ade cuado (cargador de PICs) que con siste en un circui to que es maneja do por un prograFigura 31 ma para permitir la carga. Todo este proceso se explica con total claridad en el primer texto de esta serie, titulado: Todo Sobre PICs. En la figura 31 se puede observar un diagrama de flujo que refleja el funcionamiento del programa que acaba mos de explicar. Cunto tardan en encenderse los leds luego de soltar el botn de reset? Si se observa el circuito, se ver un cristal de clock de 4MHz (0,25S de perodo); como internamente existe un divisor x4 cada operacin se realizar en 0,25 x 4 = 1S. Si contamos las sentencias hasta llegar a cargar el puer to B, veremos que hay 5 (cinco renglones de programa); por lo tanto, la demora es de 5S. *************************** Veamos ahora algunos ejemplos de programas sen cillos que rpidamente podemos llevar a la prctica: Programa que permite el encendido de
los dos bits menos significativos
del port B (figura 32)
list include org movlW tris movlw movwf end
p=16f84
<p16F84.inc>
0
B'00000000'
PORTB
B'00000011'
PORTB

PIC para Estudiantes y Aficionados

21

Programacin de PICs

Figura 32

Figura 33

22

PIC para Estudiantes y Aficionados

Programacin de PICs
En la figura 33 se observa el programa correspon algn momento le dir al programa que vaya hacia diente a un secuenciador de 8 canales que hemos esa direccin. editado en el programa MPLAB. kloop decfsz k,f
goto kloop
list p=16f84
Ahora doy la instruccin para que se decremente include <p16f84.inc>
__CONFIG _RC_OSC & _WDT_OFF & _PWRTE_ON
el contenido de la variable k y si ese contenido es 0 Este juego de sentencias indica que se va a utili entonces que salte una instruccin; sino es 0 enton zar el PIC 16F84, se pide que se carguen las libreras ces mando al contador de programa a la etiqueta del PIC y se configura al programa para trabajar con kloop para que se haga un nuevo decremento. Es de clock RC, el temporizador WDT apagado y el tempori cir, estoy haciendo un lazo cerrado para perder tiem po zador libre activo. decfsz j,f j equ h'11' goto jloop k equ h'12' Entro en un nuevo lazo cerrado cuando k=0, en Defino a las variables j y k en las posiciones de memoria de dato 11 y 12 (en hexadecimal) respectiva este caso para decrementar el contenido de la varia ble j. mente. Con este juego de instrucciones cuento 50 veces org 0 50 (cuento hasta 2500) y con cada cuenta consumo Comienza el programa 4 ciclos de reloj de modo que tard 10.000 ciclos en terminar el lazo completo. Si la frecuencia de reloj es movlw b'00000000' de 10.000Hz, entonces tardar un segundo en com tris PORTB Con estas dos instrucciones digo que todas las pletar el doble lazo. patas del PORTB sern salidas. goto mloop Ahora mando al contador de programa a la posi movlw b'00000001' cin donde est la etiqueta mloop para que se haga movwf PORTB Mand un 1 a la pata B0, es decir que si hay un una nueva rotacin del contenido del PORTB, es de led conectado entre esa pata y masa, el mismo se en cir, se encender ahora otro led, apagndose el an terior. Esta rutina se sigue indefinidamente, es decir, cender. tenemos un secuenciador de 8 canales. mloop: rlf PORTB,f end En esta sentencia coloqu una etiqueta (una marIndica que finaliz el programa. ca) que ser la posicin a la que ir el programa en al gn momento, cuando se le d la instruccin. Luego con la instruccin rlf digo que se rote hacia la izquier De ms est decir que sta es una forma de progra da el contenido del registro PORTB, es decir que lue mar no muy adecuada pero que sirve perfectamente pa go de esta instruccin ahora mand un 1 al bit B1 y ra que el lector aprenda a estructurar sus propios proyec todas las dems patas quedan en cero, es decir, se tos. Es aconsejable que al editar un programa lo haga en apaga el led conectado en B0 y se enciende el led co el MPLAB (siguiendo los pasos que explicaremos ms nectado en B1 (pata 7 del integrado). adelante), pues de esta manera tendr la oportunidad de movlw d'50' poder comprobar si ha cometido errores o no en su traba movwf j jo. El MPLAB es ideal porque la forma de manejarlo es Puse en la posicin de memoria j el nmero 50 sencilla y sistemtica. A los fines prcticos, en la pgina siguiente damos el jloop movwf k programa correspondiente a un semforo muy sencillo. Puse en la posicin de memoria k el nmero 50, Le sugiero que intente seguir paso a paso cada instruc adems en esta sentencia coloqu una etiqueta y en cin para comprender su estructura.

PIC para Estudiantes y Aficionados

23

Programacin de PICs

Figura 34 34

24

PIC para Estudiantes y Aficionados

Programacin de PICs

PROGRAMA SECUENCIADOR DE 4 CANALES


list P=16C84 ;el dispositivo usa el 16C84 ;------------------------------------------------------------------------------------------ptob equ 06 ;el puerto B se ubica en 06 de la RAM. Rot equ 0d ;al registro ubicado 0d se lo llama Rot. Reg1 equ 0e ;al registro ubicado en 0e se lo llama reg1 reg2 equ 0f ;al registro ubicado en 0f se lo llama reg2 reg3 equ 10 ;al registro ubicado en 10 se lo llama reg3 grueso equ 00 ;se asignan nombres a los literales. medio equ 40 ;se asignan nombres a los literales. fino equ 50 ;se asignan nombres a los literales. ;------------------------------------------------------------------------------------------
reset org 0 ;reset en direccin 00h goto comenzar ;se lleva el control a comienzo comenzar movlw 00 ;se carga w con 00h tris ptob ;se programa el puerto "b" como salida. ppal movlw 01 ;se carga w con 01h movwf rot ;se descarga w en el registro rot ;preparndolo para la rotacin. sec movf rot,0 ;el contenido de rot pasa a w movwf ptob ;enciende el led conectado donde indica w call demora ;se mantiene encendido el led. rlf rot ;se mueven los bits de "rot". btfss rot,4 ;se comprueba el 5 bit. goto sec ;si el 5 bit es cero se reenva a sec. goto ppal ;si el 5 bit es uno se reenva a ppal para ;comenzar una nueva secuencia. demora movlw grueso ;recarga w con el nmero hexadecimal ;grueso es decir, con 30 movwf reg1 ;se vuelca grueso en el registro ;reg 1 dem3 movlw medio ;se carga w con el nmero hexadecimal ;medio es decir con 40 movwf reg2 ;se vuelca "medio" en el registro ;reg2. dem2 movlw fino ;se carga w con el nmero hexadecimal ;"fino" es decir con 50. movwf reg3 ;se vuelca "fino" en el registro reg3. dem1 decfsz reg3 ;se decrementa el registro reg3 en una ;unidad y si el resultado es cero se salta a ;la siguiente instruccin, si no se sigue ;decrementando. goto dem1 ;retorno a la frecuencia etiqueta dem1. decfsz reg2 ;idem con reg2. goto dem2 ;retorno a la etiqueta dem2. decfsz reg3 ;idem con reg1. goto dem1 ;retorno a la etiqueta dem3. retlw 0 ;se carga w con 0 y se retorna al ;programa principal. end

PIC para Estudiantes y Aficionados

25

Edicin y Simulacin de Programas

Manejo del MPLAB

Edicin y Simulacin de Programas


Sepa cmo editar un programa y encontrar errores con el MPLAB.

INTRODUCCIN
MPLAB es un entorno de desarrollo integrado que le permite escribir y codificar los microcontroladores PIC de Microchip para ejecutarlos. El MPLAB incluye un editor de texto, funciones para el manejo de proyectos, un simula dor interno y una variedad de herramientas que lo ayuda rn a mantener y ejecutar su aplicacin. Tambin provee una interfase de usuario para todos los productos con lenguaje Microchip, programadores de dispositivos, siste mas emuladores y herramientas de tercer orden. El MPLAB est diseado para ser ejecutado bajo Windows 3.11, y puede operar con Windows 95, 98 y su periores (vea www.microchip.com). Asume que el usuario ya conoce el entorno de Windows y sabe manejarlo. La gua que describimos le permitir realizar las siguientes tareas:

MP40000.EXE
MP40000.WO2
MP40000.WO3
MP40000.WO4
MP40000.WO5
MP40000.WO6
Si Ud. lo prefiere, puede venir a nuestras oficinas con este libro y 6 disquetes vrgenes y tendr la oportunidad de llevarse dicho programa sin cargo. Copie el contenido de los 6 disquetes en el disco rgi do de su PC (en un lugar que pueda identificar). Cuando ejecute el archivo .EXE, comenzar la insta lacin del MPLAB en su sistema. Seguidamente deber elegir los componentes del MPLAB que desea instalar en su sistema. A menos que haya comprado un programador o emulador del dispositivo, slo debiera instalar las si guientes herramientas del software: Archivos MPLAB IDE Archivos MPASM/MPLINK/MPLIB Archivos de Proteccin del Simulador MPLAB-SIM Archivos de Ayuda (vea la figura 1 que aparecer cuando ejecute el programa).

Manejar el escritorio MPLAB Crear un nuevo archivo de cdigo fuente para el en samble e ingresarlo a un nuevo proyecto para el 16F84 Identificar y corregir los errores simples Ejecutar el simulador interno

Para que Ud. aprenda a programar sus microcontro Luego aparecer el men de la figura 35 que le per ladores, damos a continuacin, paso a paso, las instruc mitir seleccionar los componentes de lenguaje Micro ciones de instalacin y uso de la aplicacin: chip que desee instalar. Usualmente debiera seleccionar los todos (por defecto). Al hacer doble click en MP40000.EXE, el instalador le va diciendo lo que debe

INSTALACIN

Figura 35

Descargue los archivos del software de instalacin y ejecute el archivo MPxxxxx.EXE. Estos archivos puede obtenerlos por medio de Internet en la direccin: http//www.microchip.com/10/Tools Estos archivos pueden ser transferidos a disquetes si desea instalar el MPLAB en otra computadora. De acuer do a la versin que haya descargado, los nombres de los archivos pueden variar levemente. Por ejemplo, la versin 4.00 del MPLAB tendra los siguientes archivos:

26

PIC para Estudiantes y Aficionados

Edicin y Simulacin de Programas


hacer. Luego de instalarlos, ejecute MPLAB.EXE o clique que pueden ser resistidos por el simulador. Clique 16F84 el cono MPLAB para iniciar el sistema. y luego presione el botn "Reset". De este modo se ini Aparecer el escritorio del MPLAB (figura 36). ciar el simulador, y debera aparecer en la barra de es tado "16F84" y "Sim". Se encuentra as en el modo simu lador para el 16F84. Cmo Crear un Proyecto Simple El simulador se ejecutar desde el mismo archivo, lla mado "archivo hex", el cual puede ser programado en el micro PIC. Para que se ejecute el simulador, primero de ber crear un archivo de cdigo fuente y realizar el mon taje del cdigo fuente. A continuacin explicaremos cmo llevar a cabo este proceso: Nota: El lenguaje ensamblador produce, entre otros elementos, un archivo hex. Este archivo tiene la exten sin (.hex). A este archivo lo llamaremos: tutor84.hex. Ms adelante este archivo puede ser cargado directa mente en el programador del dispositivo sin usar el en samblador o un proyecto del MPLAB. Este archivo tam bin puede ser cargado por otros programadores de ter cer orden. Seleccione "Archivo>Nuevo (File>New)" en el me n y aparecer la caja de dilogo de la figura 38. Clique en el botn S, seguidamente aparecer un dilogo de explora cin de Windows estndard. Decida dnde desea crear su proyecto (en Figura 38 qu carpeta o lugar de su disco rgido lo va a guardar) y recuerde dnde lo ubic. Ms tarde necesitar esta informacin. Esta gua usa un directorio en c: \temp\tutorial y crea el archivo de proyecto llamado tutor84.pjt (figura 39). "PJT" es el su-

Figura 36

Configurar el Modo de Desarrollo El escritorio bsico del MPLAB se asemeja al de las aplicaciones de Windows (como pudo ver en la pantalla de la figura 36). Tiene una barra de men en el margen superior, una barra de herramientas y tambin una barra de estado en el margen inferior. Podr advertir que la ba rra de estado incluye informacin sobre cmo se ha con figurado el sistema. Nota: El "modo de desarrollo" determina la herra mienta, debe elegir alguna, que ejecutar el cdigo. Para esta gua, usaremos el simulador de software MPLABMPLAB SIM. Si sabe del tema y tiene un emulador, en este cap SIM tulo encontrar ms informacin para cambiar a una de sus operaciones. Al seleccionar el tem del men "Opciones>Modo de Desarrollo", aparecer una caja de dilogo semejante a la de la figura 37. El MPLAB es un producto en constante evolucin, de modo que pueden aparecer sutiles diferencias entre la pantalla que usted vea y la que mostramos aqu. Selec cione el cono prximo al Simulador MPLAB-SIM (MPLAB-SIM Simulator) y elija 16F84 (que corresponde a un tipo de PIC) en la lista de procesadores disponibles

Figura 37

Figura 39

PIC para Estudiantes y Aficionados

27

Edicin y Simulacin de Programas


Aparecer el dilogo "Propiedades del Nodo". Este di logo contiene todas las configuraciones por defecto para una herramienta de lenguaje -en este caso MPASM, co mo podr ver en en el ngulo superior derecho del dilo go. En su forma ms simple, el proyecto contiene un ar chivo hex creado desde un archivo fuente de ensamble. Esta ser la configuracin por defecto cuando aparezca el dilogo "Propiedades del Nodo (Node Properties)", vea la figura 41.

Figura 41 Figura 40

fijo estndar para los archivos de proyectos en el MPLAB. El prefijo del nombre de archivo del proyecto, en este caso "tutor84", ser el prefijo por defecto de muchos de los archivos que el MPLAB usar o crear para esta gua. Clique "Aceptar (OK)" para que aparezca el dilogo Pro yecto MPLAB. Este dilogo puede parecer confuso, pero en realidad es muy simple. Nota: El simulador, los programadores y los sistemas emuladores que operan con el MPLAB usan un archivo hex creado por el ensamble, la compilacin y/o el linking del cdigo fuente. Algunas herramientas diferentes pue den crear archivos hex, al tener en cuenta que estas he rramientas formarn parte de cada proyecto. Los proyectos le dan la flexibilidad para describir c mo se construir la aplicacin y qu herramientas se usa rn para crear el archivo .hex. Obviamente, en la gua nos ocuparemos de todos estos detalles. El dilogo "Editar Proyecto" ser semejante al mos trado en la figura 40. Advierta que el nombre del archivo de destino ya ha sido completado. Ya conoce el modo de desarrollo que configuramos previamente y asume que usaremos la se rie de herramientas de lenguaje Microchip. En la ventana "Archivos de Proyecto (Files proyect)", encontrar tu tor84. [hex]. Al destacar este nombre, se podr utilizar el cono "Propiedades del Nodo (Node Properties)". Seguidamente debe indicarle al MPLAB cmo crear el archi vo hex. Hgalo clicando el botn "Propiedades del Nodo".

Nota: Como puede ver, hay una cantidad de filas y columnas en este dilogo. Cada fila usualmente corresponde a un "cambio", aquellos elementos que se establecen en la lnea de co mando cuando se invoca una herramienta. De hecho, la configuracin de estos cambios se refleja en la ventana "Lnea de Comando (comand line)", prxima al margen inferior de la pantalla. Esta es la lnea de comando que se usar cuando se invoque el MPASM desde el MPLAB. Por el momento, puede usar las configuraciones por defecto, pero cuando ya sepa construir una aplicacin, probablemente desear cambiar algunas. Al clicar el botn "Aceptar (OK)", aplicar estas con figuraciones, y retornar al dilogo "Editar Proyecto (Edit Project)", con el cono (botn) "Agrega Nodo (Add Node)" disponible. Presione el botn "Agregar Nodo". Aparecer el dilogo de exploracin de Windows estn dar, con el mismo directorio usado para el proyecto. Ingre se el nombre de archivo: tutor84.asm y presione "Acep tar". Retornar al dilogo "Editar Proyecto", donde po dr ver "tutor84.asm" aadido debajo del archivo hex, que indica que es un nodo concurrente. Al presionar "Aceptar", retornar al escritorio MPLAB con un archivo de cdigo fuente abierto y an sin nombre. Cmo Crear un nuevo Archivo Fuente Simple Clique dentro del espacio en blanco de la ventana de archivo creada. Seguramente se llamar "Sin ttulo (Un-

28

PIC para Estudiantes y Aficionados

Edicin y Simulacin de Programas


titled)". De este modo acceder al "foco" de la ventana. ya est listo para escribir el cdigo que almacenar en el Use la opcin de men "Archivo>Guardar como...", y PIC para que cumpla una funcin determinada. guarde el archivo vaco como tutor84.asm. Cuando abra Ingresar el Cdigo Fuente el dilogo de exploracin estndar, encontrar su ubica cin en el directorio del proyecto. Ingrese el nombre de ar Use el mouse para ubicar el cursor al comienzo de la chivo y presione "Aceptar". Vea la figura 42. ventana de archivo vaco tutor84.asm, e ingrese el texto de la tabla 1, exactamente como est escrito en cada l nea. No debe ingresar los comentarios (los textos que si Figura 42 guen a cada punto y coma). Este cdigo es un programa muy simple que incre menta un contador y lo "resetea" a un valor predetermina do cuando el contador vuelve a cero. Nota: Todos los rtulos comienzan en la primera co lumna, y la ltima lnea tiene una directiva "end". Las p ginas de datos del micro PIC contienen informacin com pleta sobre instrucciones con ejemplos para su uso. Guarde el archivo usando la funcin de men "Archivo>Guardar" (File>Save). Ensamble del Archivo Fuente Ahora estarn disponibles el escritorio MPLAB y la El ensamble del archivo puede realizarse de varias ventana de archivo vaco, pero el nombre de la ventana maneras. Aqu describiremos un mtodo. Use el tem de de archivo reflejar su nuevo nombre. men "Proyecto>Construir todo (Proyect>Build All)". Nota: El nombre del archivo fuente y el nombre del De este modo ejecutar el lenguaje ensamblador MPASM proyecto ("tutor84" en esta gua) deben ser iguales en es en el trasfondo usando las configuraciones guardadas te tipo de proyectos. Hay otros proyectos de archivo ml con el proyecto anteriormente. Una vez completado el tiple que usan el lin ker y permiten que Tabla 1 el nombre del archi vo de salida sea di list p=16f84 ferente al del archi include <p16F84.inc> vo de entrada (hay una gua aparte pa c1 equ h'0c' ; Establece el contador de variable temp c1 en la direccin 0x0c ra los proyectos de org h'00' ; Establece la base de memoria del programa en el vector reset 0x00 reset archivos mltiples goto start ; Ir a inicio en el programa principal que usan el linker). El MPASM org h'04' ; Establece la base de memoria del programa al comienzo del cdigo del siempre crear un ; usuario archivo hex de sali start da con el mismo mov1w h'09' ; Inicializa el contador a un valor arbitrario mayor que cero nombre que el archi movwf c1 ; Guarda el valor en la variable temp definida vo fuente, y esta configuracin no loop puede modificarse. incfsz c1,F ; Incrementa el contador, ubica los resultados en el registro de archivos Si cambia el nombre goto loop ; loop hasta que el contador se completa del archivo fuente, tambin deber goto bug ; Cuando el contador se completa, va a start para reiniciar cambiar el nombre end del proyecto. Ahora

PIC para Estudiantes y Aficionados

29

Edicin y Simulacin de Programas


proceso de ensamble, aparecer la ventana "Resulta - La lnea del cdigo fuente en esta direccin ser destaca dos de Constr uccin (Build Results" (figura 43): da con una barra oscura. Tambin advertir que en la barra de estado, la PC se establecer en 0x00. Use el tem de men "Debug>Ejecutar>Paso (Debug>Run>step)" (figura 44). Al hacerlo, el contador del programa avanzar hasta la siguiente ubicacin de ins truccin. La barra oscura seguir el cdigo fuente y el contador del programa desplegado en la barra de estado avanzar hasta "4". Figura 43 Cuando ejecute el tem de men "Debug>Ejecutar>Paso", advierta la aparicin de un texto en el lado dere Ha ingresado intencionalmente al menos un error si cho del tem de men que dir "F7". El mismo equivale a ingres el cdigo tal como lo hemos escrito en el paso an "tecla de funcin siete" en su teclado. Muchas funciones terior. El ltimo "goto" en el programa refiere a un rtulo del MPLAB se asignan a "teclas-especiales". Estas teclas inexistente llamado "bug". Dado que este rtulo no ha si- cumplen la misma funcin que los tems de men a los do definido previamente, el lenguaje ensamblador infor cuales corresponden. Presione F7 varias veces y ver c mo el contador del programa y la barra avanzan a travs mar el error. Tambin podra relevar otros errores. Haga un doble click sobre el mensaje de error. De del programa. Ejecute el tem de men "Debug>Ejecutar>Ejecutar este modo ubicar el cursor en la lnea que contiene el error en el cdigo fuente. Cambie "bug" por "start". Use la (Debug>Run>Run)" o presione F9 para inciar la ejecu ventana "Resultados de construccin (Build Results)" cin del programa desde la la ubicacin actual del conta para hacer una bsqueda de errores, y reparar los que dor. Los colores de la barra de estado cambiarn, para in aparecieran en el cdigo fuente. Reensamble el archivo dicar que el programa est ejecutando las instrucciones. ejecutando la funcin de men "Proyecto>Construir to- Ninguno de los campos de la barra de estado se actuali do". Este procedimiento puede demandar un par de re zar mientras el programa est en ejecucin. Detenga el programa ejecutando el tem de men peticiones. Nota: Cuando reconstruya un proyecto, todos sus ar "Debug>Run>Halt (detener)" o presionando F5. La ba chivos fuente sern guardados en el disco. rra de estado volver a su color original, y el contador del Luego de reparar todos los problemas en el cdigo programa y otras informaciones de su estado sern ac fuente, la ventana "Resultados de construccin" mostrar tualizadas. Nota: Otra manera de ejecutar funciones es usar la el mensaje "Construccin completada exitosamente (Build completed successfully)". Ya ha completado un barra de herramientas ubicada en el margen superior de la pantalla. Si ubica el cursor sobre los tems de la barra proyecto que puede ejecutarse usando el simulador. de herramientas, podr ver el nombre de su funcin en la Ejecucin de su Programa barra de estado. El botn de la izquierda es un botn es Use "Debug>Ejecutar>Reset (Debug>Run>Re- tndar "cambiar barra de herramientas (change tool set)" para iniciar el sistema. El contador del programa se bar)" que le permite desplegar las barras de herramien resetear a cero, que es el vector de reset en el 16F84. tas disponibles. Estas pueden ser personalizadas, como podr advertirlo en la seccin "Algunas Sugerencias" al fi nal de esta gua. En la barra de herramientas de Debug, la luz verde es equivalente a F9 (Ejecucin) y la luz roja equivale a F5 (Detencin). Hasta aqu, aprendi a instalar el programa y crear un archivo para aprender a prog r amar. Dimos un ejem amar plo de programacin y ya sabemos cmo correr el pro g r ama en la PC para saber si todo est bien, antes de escribir dicho programa en nuestro PIC. Sin embargo, cuando los programas son ms largos, es posible come ter errores que pueden ser evitados. A continuacin expli Figura 44 camos el procedimiento.

30

PIC para Estudiantes y Aficionados

Edicin y Simulacin de Programas


Abrir Otras Ventanas Para el Seguimiento de Errores Hay muchas maneras de visualizar el programa y su ejecucin usando el MPLAB. Por ejemplo, este programa est destinado a incrementar un contador temporario pe ro, cmo puede asegurarse que se est produciendo dicho incremento? Una manera es abrir e inspeccionar una ventana de registro de archivo. Puede hacerlo ejecutando el tem de men "Ventana>registros de archivo (Window>File Register)". Aparecer una pequea ventana con todos los registros de archivo o el RAM del 16F84. Presione F7 (ejecute instruccin por instruccin, si piensa anularlo) varias veces, y observe la actualizacin de valores en la ventana de registro de archivo. Hemos colocado la variable del contador en la ubicacin de direc cin 0x0C. Mientras el contador temporario se incremen te, este incremento se reflejar en la ventana de registro de archivo. Los registros de archivo cambian de color cuando su valor cambia, de modo que los cambios pue dan advertirse fcilmente en la inspeccin. De todos modos, en muchos programas complejos, varios valores pueden cambiar, as resultar ms difcil focalizar las va riables que le interesan. Usando una ventana de observa cin especial, este problema puede solucionarse. Ahora, ya sabemos mejor qu es lo que estamos ha ciendo: Prog r amamos algo que incrementa en 1 cada vez que viene una seal y podemos ver ificar lo vir tualmente, antes de prog r amar el PIC. Creacin de una Ventana de Observacin Ejecute el tem de men "Ventana>Nueva ventana de observacin (Window>New Watch Window)". Apa recer el dilogo "Agregar Smbolo de Observacin (Add Watch Symbol)" (figura 45). Tipee "c1" en la caja de nom bre de smbolo para que la lista se despliegue hasta el smbolo deseado. Seleccinelo, presione el botn "Agre gar (Add)", y luego el botn "Cerrar (Close)". Aparece r en su escritorio MPLAB una ventana de observacin que mostrar el valor actual del valor "c1" del contador temporario. Presione F7 varias veces para advertir cmo se ac tualiza la ventana de observacin mientras el valor del contador se incrementa. Si dej la ventana de registro de archivo abierta, la misma tambin ser actualizada (mue va una de ellas para que pueda ver las dos en la panta lla). Puede guardar la ventana de observacin y sus con figuraciones al ejecutar el tem "Guardar observacin (Save Watch)" debajo del botn del sistema, ubicado en el ngulo superior izquierdo de la ventana de observa cin. Al clicar este botn, se desplegar un men en cas cada. Seleccione "Guardar observacin" y aparecer el dilogo de exploracin estndar ubicado en el directorio del proyecto. Elija algn nombre arbitrario y presione "Aceptar (OK)". Si no nombra la ventana de observacin, el MPLAB lo har por usted. La ubicacin y el estado en la pantalla de la ventana abierta o cerrada sern guardados con el pro yecto, de modo que la prxima vez que abra su proyecto, sus ventanas de observacin aparecern restauradas. Nota: Tambin puede editar ventanas de observacin luego de crearlas. Use el botn del sistema y seleccione "Agregar Observacin (Add Watch)" para que aparez ca un dilogo mediante el cual podr agregar ms tems. Con la tecla "Ins" podr hacer lo mismo. Si desea borrar un tem, seleccinelo y presione la tecla Suprimir (Dele te); la observacin referida desaparecer de la ventana. Puede seleccionar "Editar observacin (Edit Watch)" en el men del sistema para cambiar el modo en el cual se muestra el tem (en hex, binario, como una variable de 16-bit en vez de 8-bit, etc.). Cmo se Marca un Punto de Interrupcin Presione F5 ("Debug>Ejecutar>Detener") para ase gurarse que el procesador del simulador se ha detenido. Clique dentro de la ventana del cdigo fuente la lnea si guiente al rtulo "start", que dice "movlw 0'09'". Presione el botn derecho del mouse para que aparezca el men de la figura 46. Clique el tem de men "Punto(s) de interrupcin (Break Point)". El men desaparecer y la lnea donde se ubic el cursor cambiar de color, para indicar que ha sido establecido un punto de interrupcin en dicha ubica-

Figura 45

PIC para Estudiantes y Aficionados

31

Edicin y Simulacin de Programas


Figura 46

cin. Presione F6 o ejecute el tem de men "Debug>Ejecutar>Reset (Debug>Run>Reset)" para resetear el sistema. Luego, presionando F9, ejecute el sistema. El programa se ejecutar y se detendr en la instruccin ubicada luego del punto de interrupcin. "c1", como apa rece en la ventana de observacin o en la de registro de archivo, si la tiene an abierta, reflejar el estado reset de cero, el modo instruccin por instruccin ejecutar la carga y c1 luego reflejar un valor de 0x09. Presione F9 va rias veces y advierta que la barra de estado cambia de OPCIONES - Use "Opciones>Configurar Entorno (Opcolor mientras el programa se est ejecutando, y luego tions>Enviroment Setup)" para hacer lo siguiente: retorna a su color original cuando el procesador se detie * Establecer teclas de Mapa Europeo para funciones ne. MPLAB y caracteres ASCII especiales * Cambiar la fuente de la pantalla o el tamao de la Algunas Sugerencias: fuente * Posicionar la barra de herramientas a un lado o al PUNTOS DE INTERRUPCION - Puede marcar puntos de in pie de la pantalla terrupcin en la ventana "Ventanas>Memoria de progra * Modificar la barra de herramientas ma (Window>Program Memory)", en la ventana de archi * Cambiar la cantidad de caracteres desplegados pa vo fuente (en este caso tutor84.asm), o en la ventana ra los rtulos. "Ventanas>Listado Absoluto (Windows>Absolute)". ARCHIVOS MAPA - Use el dilogo "Proyecto>Editar Pro ARCHIVOS FUENTE - Use "Ventana>Ventana de Proyec yecto" y cambie las Propiedades del Nodo del MPASM to (Window>Projet Window)" para que aparezca una lista para producir un archivo MAP llamado tutor84.map. Lue de sus archivos fuente. Puede hacer un doble click sobre go de construir el proyecto, busque el tutor84.map para el nombre de un archivo para trasladarlo al editor. ver informacin de la construccin. ERRORES MPASM - Si el MPASM le da un error, haga un doble click sobre el error en la ventana de error para ir al error en el cdigo fuente. Si tiene mltiples errores, siempre elija el primer error generalmente un error cau sa errores subsiguientes y al reparar el primero corregir los restantes. MENUES DESACTIVADOS - Si encuentra menes desacti vados (opacados), verifique que no haya ingresado el mo do "slo Editor (Editor Only)". Si est seguro de que ha realizado correctamente la configuracin, intente salir del MPLAB y reinicie el progra ma.

CONFIGURACIN DE BITS Y EL MODO DEL PROCESADOR La configuracin de bits en el archivo fuente no determi nar el modo del procesador para el simulador (o los emuladores). Use "Opciones>Configurar Procesador>Hardware (Options>Procesor Setup>Hardware)" para estas confi guraciones. An cuando puede establecer estos bits en el archivo fuente del MPASM o del MPLAB-C17, el MPLAB no cambia automticamente los modos. Por ejemplo, la configuracin de bit Activar Observacin de Dog Timer puede hacerse de tal modo que, cuando pro grame un dispositivo, el Dog Timer sea activado. En el MPLAB tambin necesitar acceder al dilogo "Opciones>Configurar Procesador>Hardware" para activar el WDT para el simulador o el emulador. Esto le permitir hacer un seguimiento de errores con el WDT activado o desactivado sin cambiar su cdigo fuente.

Importante: Este manual se complementa con bibliografa sobre reparacin de equipos sin cargo. Por ser comprador de esta edi cin, Ud. tiene acceso a informacin y programas GRATIS. Para acceder a los mismos, vaya a nuestro sitio:www.webelectronica.com.ar. Luego haga click en el cono password y digite la clave: aiwa15 ISBN: 987-9227-92-1 Editorial Quark SRL - Herrera 761, (1295) Bs. As. Argentina - Director: Horacio D. Vallejo - Tel.: (005411) 4301-8804
En Internet: www.webelectronica.com.ar - Impresin: Talleres Grficos Conforti, Bs. As. - octubre de 2002.
Distribucin en Argentina: Capital - Carlos Cancellaro e Hijos SH, Gutenberg 3258, Capital - Interior: Bertrn S.A.C., Av. Vlez Sarsfield 1950, Capital

32

PIC para Estudiantes y Aficionados

También podría gustarte