Вы находитесь на странице: 1из 45

MICROCONTROLADOR PIC16F84

ELECTROLOGIA, C.A. no poda dejar atras este importante elemento


electrnico que ha revolucionado en todo el mundo; podramos decir que actualmente es el mas utilizado por sus grandiosas ventajas. En este curso comenzaremos desde sus races y llegaremos a un nivel medianamente avanzado. Abarcaremos todos los conceptos tericos y en la prctica llegaremos a aprender como interlazar el microcontrolador PIC16F84 con un Motor paso a paso, Display de siete segmentos, Diodos emisores de luz individuales, Pulsadores, Mdulos LCD, Relays, Memorias seriales, Comunicacin serial, Teclados matriciales y mucho mas. Finalmente realizaremos un proyecto especial en donde conectaremos la mayora de los equipos trabajando en conjunto. Este ser el primer curso desarrollado por ELECTROLOGIA, C.A. y lo denominaremos MC-PIC01. Para facilitarle a usted la parte prctica, ELECTROLOGIA, C.A. dispone de un KIT que contiene todos los elementos necesarios que se requieren para este importante curso. Para mayor informacin Haz Click Aqu. CAPITULO I

1.1-. Breves antecedentes relacionados. Inicialmente cuando no existan los microprocesadores las personas se
ingeniaban en disear sus circuitos electrnicos y los resultados estaban expresados en diseos que implicaban muchos componentes electrnicos y clculos matemticos. Un circuito lgico bsico requera de muchos elementos electrnicos basados en transistores, resistencias, etc; pero en el ao 1971 apareci el primer microprocesador el cual origin un cambio decisivo en las tcnicas de diseo de la mayora de los equipos. Al principio se crea que el manejo de un microprocesador era para aquellas personas con un coeficiente intelectual muy alto; por lo contrario con la aparicin de este circuito integrado todo sera mucho mas fcil de entender y los diseos

electrnicos serian mucho mas pequeos y simplificados. Entre los microprocesadores mas conocidos tenemos el popular Z-80 y el 8085. Los diseadores de equipos electrnicos ahora tenan equipos que podan realizar mayor cantidad de tareas en menos tiempo y su tamao se redujo considerablemente; sin embargo, despus de cierto tiempo aparece una nueva tecnologa llamada microcontrolador que simplifica aun mas el diseo electrnico.

1.2-. Diferencias entre un Microprocesador y un Microcontrolador. Si usted tuvo la oportunidad de realizar un diseo con un
microprocesador pudo observar que dependiendo del circuito se requeran algunos circuitos integrados adicionales ademas del microprocesador como por ejemplo: memorias RAM para almacenar los datos temporalmente y memorias ROM para almacenar el programa que se encargara del proceso del equipo, un circuito integrado para los puertos de entrada y salida y finalmente un decodificador de direcciones.

Un microcontrolador es un solo circuito integrado que contiene todos los


elementos electrnicos que se utilizaban para hacer funcionar un sistema basado con un microprocesador; es decir contiene en un solo integrado la Unidad de Proceso, la memoria RAM, memoria ROM, puertos de entrada, salidas y otros perifricos.

1.3-. Ventajas de un Microcontrolador Vs. un Microprocesador. Estas ventajas son reconocidas inmediatamente para aquellas personas que
han trabajado con los microprocesadores y despus pasaron a trabajar con los microcontroladores. Estas son las diferencias mas importantes:

Por ejemplo la configuracin mnima bsica de un microprocesador estaba


constituida por un Micro de 40 Pines, Una memoria RAM de 28 Pines, una memoria ROM de 28 Pines y un decodificador de direcciones de 18 pines; pero un microcontrolador incluye todo estos elementos en un solo Circuito Integrado por lo que implica una gran ventaja en varios factores: En el ciruito impreso por su amplia simplificacin de circuiteria, el costo para un sistema basado en microcontrolador es mucho menor y, lo mejor de todo, el tiempo de desarrollo de su proyecto electrnico se disminuye considerablemente.

Existen unos microcontroladores mas avanzados que otros por los


componentes especiales que estos incluyen. Algunos solamente contienen puertos de entrada y de salida, otros incluyen pines hasta de 12 Bits para

conversiones analgicas digitales entre otros. Podemos mencionar algunas caractersticas especiales que poseen los microcontroladores actuales: Modulacin por ancho de pulso, Comunicacin Serial Sincrona, Comunicacion Serial Asincrona, Temporizadores, Contadores, etc.

1.4-. Los Microcontroladores, aspecto bsico general. En la actualidad existen muchos microcontroladores de diferentes
empresas reconocidas mundialmente, pero nuestra meta especifica es tratar el microcontrolador de la empresa Microchip Tecnologies modelo PIC16F84. Si deseas obtener la hoja de informacin completa del PIC16F84 Haz Click Aqu. El archivo tiene una longitud de 1.6 Mega Byte y contiene 100 hojas en formato PDF que podrs observar con el Acrobat Reader. En ese archivo encontraras cualquier mnimos detalle que necesites conocer del microcontrolador PIC16F84

1.5-. Que es un Microcontrolador ?.


Un microcontrolador es un circuito integrado programable que contiene internamente todos los componentes de un computador. Este se utiliza para controlar el funcionamiento de una tarea determinada. Sus pines de entradas y salidas se utilizan para conectar motores, relays, actuadores, etc. Una vez que el microcontrolador esta programado, se encargara de ejecutar al pie de la letra la tarea encomendada.

1.6-. Conociendo al Microcontrolador PIC16F84.


El microcontrolador PIC16F84 es un circuito integrado fabricado por la empresa Microchip Tecnologies y es actualmente uno de los mas utilizados a nivel mundial, la razn de esto es por que son sencillos, rpidos, modernos y principalmente baratos, se podrn escribir los programas y borrarlos muchsimas veces, poseen gran documentacin a nivel mundial en la Red de Internet y esta accesible para la mayora de los bolsillos. Existen microcontroladores que una vez programados con el programa de control estos tienen que ser borrados con luz ultra violeta en el caso de requerir borrar el programa. Para el caso del PIC16F84, este podr ser programado Elctricamente con una circuiteria que proporciona la empresa Microchip Tecnologies. Este programador es sumamente sencillo y debe ser conectado al puerto paralelo de su computador.

1.7-. Caractersticas Bsicas del PIC16F84. El Microcontrolador PIC16F84 es un circuito integrado de 18 pines
fabricado con tecnologa CMOS, existen en diferentes versiones de encapsulado como por ejemplo el DIP (Version convensional ) y el SOIC ( Montaje superficial ). La frecuencia de trabajo esta entre 4 Mhz y 20 Mhz. Las versiones que se estipulan en una frecuencia de trabajo de 4 Mhz podrn trabajar sin ningn problema hasta los 10 Mhz, prueba que hemos realizado

muchas veces en nuestros diseos. Observemos la siguiente imagen que muestra como estn organizados los pines del microcontrolador PIC16F84:

1.8-. Identificacin de los Pines utilizados para los puertos de entrada y salidas. En la imagen anterior se podr observar claramente que el
microcontrolador tiene dos puertos denominados "A" y "B". El puerto "A" tiene 5 lineas disponibles (RA0, RA1, RA2, RA3, RA4 ) y el puerto "B" tiene 8 lineas disponibles (RB0, RB1, RB2, RB3, RB4, RB5, RB6, RB7 ). Ambos Puertos suman un total de 13 lineas que podr ser programadas independientemente como entradas o como salidas. Estas son las lineas que estarn destinadas para comunicar el microcontrolador con el mundo exterior, como por ejemplo: Un motor Paso a Paso, Diodos Luminosos "Leds", Mdulos LCD, Teclados Matriciales, etc. Tambin observe que el Pin No. 3 perteneciente al puerto "A" = RA4 tambin tiene otra nomenclatura denominada "TOCKI" lo cual quiere decir que esta linea podr ser programada como entrada, salida y temporizador/contador.

1.9-. Identificacin de los pines de alimentacin del Microcontrolador. El microcontrolador trabaja con una tensin de 5 Vlts. DC y los pines
para ello son el Pin No. 14 (+) y el Pin No. 5 (-).

1.10-. Oscilador para el PIC16F84. Todo microprocesador o microcontrolador requiere de un circuito que le
indique a que velocidad debe trabajar. Este circuito es conocido por todos como un oscilador de frecuencia. Este oscilador es como el corazn del microcontrolador por lo tanto, este pequeo circuito no debe faltar. En el caso del microcontrolador PIC16F84 el Pin No. 15 y el Pin No. 16 son utilizados para introducir la frecuencia de reloj.

Existen microcontroladores que tienen su oscilador internamente y no


requieren de pequeos circuitos electrnicos externos. El microcontrolador PIC16F84 requiere de un circuito externo de oscilacin o generador de pulsos de reloj. La frecuencia de reloj mxima es de 20 Mhz; sin embargo, nosotros le recomendamos que comience a trabajar con una frecuencia de reloj de 4 Mhz. debido a que todos nuestros experimentos estarn basados en esta frecuencia.

El microcontrolador PIC16F84 utiliza cuatro periodos completos de reloj


por cada instruccin por lo tanto si usted tuviera un cristal que estuviera 4 Mhz, internamente en el microcontrolador se esta corriendo a 1 Mhz debido a que se toman 4 pulsos de reloj completos para cada instruccin.

El PIC16F84 puede utilizar cuatro tipo diferentes de reloj oscilador


externos. El tipo de oscilador depender de la precisin (ej: para las rutinas de tiempo), velocidad y potencia que usted necesite; por otro lado los costos que serian un aspecto significativo en una produccin en serie de algn tipo de proyecto electrnico y la velocidad de proceso mnima requerida para su proyecto electrnico. Podemos resumir entonces los diferentes tipos de osciladores:
1-. Oscilador tipo "HS" para frecuencias mayores de 4 Mhz. en el caso del PIC16F84 podr instalarse un oscilador hasta 20 Mhz. 2-. Oscilador tipo "XT" para frecuencias no mayores de 4 Mhz. 3-. Oscilador tipo "LP" para frecuencias entre 32 y 200 Khz. 4-. Oscilador tipo "RC" para frecuencias no mayores de 5.5 Mhz.

En el momento de programar el microcontrolador se deber especificar


en los parmetros el tipo de oscilador que usted utilizara en su proyecto electrnico basado especficamente en la frecuencia de trabajo. Por ejemplo si su frecuencia de trabajo es de 10 MHz entonces la configuracin del microcontrolador deber estar en "HS"; pero si su frecuencia de trabajo es de 4 Mhz entonces la configuracin del microcontrolador deber estar en "XT".
En primer lugar tenemos un Oscilador tipo "HS" basado en un Cristal para frecuencias mayores a 4 Mhz. Esta versin es la mas costosa; pero representa la forma mas practica por la cantidad de conexiones y por la precisin en la seal de reloj emitida. En la siguiente imagen se muestra como debe conectarse al microcontrolador y las caractersticas del cristal. Estos tipos de cristales estn diseados especialmente para tecnologas TTL. La frecuencia (Mhz) disponibles para esta versin de cristal son muy amplias y las mas usuales son 1 - 1.8432 - 2 4 - 8 - 10 - 11.059 - 12 - 14.31818 - 16 - 20 - 25 - 32 - 33 - 40 - 50 - 80 y 100 Mhz. Se puede observar claramente que usted podr adquirir este tipo de cristal con frecuencias por debajo de 4 Mhz lo cual quiere decir que usted podr configurar su microcontrolador en "XT" indicandole que se encuentra por debajo de 4 Mhz.

En segundo lugar tenemos el oscilador tipo RC es el mas econmico por que tan solo se utiliza un condensador no polarizado y una resistencia. Este tipo de oscilador proporciona una estabilidad mediocre en la frecuencia y podr ser utilizado para aquellos proyectos que no se requiera precisin. Observe la siguiente imagen donde se muestra como debe ser conectado al microcontrolador al circuito RC.

Es importante saber que para valores de resistencia menor a 4 K, el sistema se hace inestable o se podra detener la frecuencia de oscilacin totalmente. Para valores de resistencias mayores a 100 Megas, el oscilador se hace susceptible al ruido, humedad y a la temperatura por lo tanto se recomienda que este tipo de oscilador se encuentre en el siguiente rango ( 5K < R < 100 K ). Por otro lado se recomienda utilizar un condensador no polarizado de 20 pico por el ruido del medio y la estabilidad del sistema. A continuacin le proporcionamos una pequea tabla de valores

de frecuencia de oscilacin segn el condensador y la resistencia. Tambin es importante saber que la tensin de alimentacin que tendr el microcontrolador influye directamente en la frecuencia final. En la siguiente imagen se muestran algunas combinaciones de resistencias y condensador. La tabla muestra una frecuencia mxima de 700 Khz basado en un capacitor de 300 pF.

En la tabla numero 2, tenemos que la mxima frecuencia que podr ser obtenida es de 1.80 Mhz colocando un capacitor de 100 pF.

Finalmente en la tabla numero 3 tenemos que la mxima frecuencia obtenida con un Oscilador tipo RC es de 5.5 Mhz utilizando un condensador de 20 pF.

En tercer lugar tenemos el oscilador tipo "XT" para frecuencias no mayores de 4 Mhz. En la siguiente imagen podr observar la configuracin del circuito:

La condicin bsica importante para este oscilador es que los condensadores C1 y C2 bebern ser iguales. En la siguiente tabla suministraremos algunos valores bsicos de los condensadores C1 y C2.
Frecuencia de Oscilacin 455 Khz 2 Mhz 4 Mhz C1 47 - 100 pF. 15 - 33 pF. 15 - 33 pF. C2 47 - 100 pF. 15 - 33 pF. 15 - 33 pF.

1.11-. Inicializacin "RESET" del Microcontrolador. El microcontrolador cuando se le suministra el voltaje de alimentacin
ejecuta automticamente un RESET y todos los registros son colocados es

sus estados lgicos originales; sin embargo los microcontroladores dispones de un Pin destinado especficamente para ejecutar un RESET en el caso de una falla o cuando sea necesario aplicarle un RESET. Cuando se ejecuta un RESET, se aplican dos acciones importantes: 1-. El contador de programa se vuelve a colocar en el principio del programa desde la direccin 0 ( Principio del Programa ). 2-. Los registros modificados vuelven a su estado normal.

En la siguiente imagen se puede observar como est conectado el


pequeo circuito requerido para el RESET. Cuando el pulsador "S" es accionado, se aplica un nivel lgico bajo en el Pin No. 4 del microcontrolador y automticamente se ejecutan los dos eventos mencionados anteriormente.

El microcontrolador PIC16F84 tambin dispone de otras formas de


"RESET", entre ellas tenemos el Reset denominado "POWER ON RESET", el cual debe ser activado mediante un bit de configuracin en el momento en el que se programe el PIC.

Por otro lado, en el siguiente circuito, si el voltaje suministrado al


microcontrolador se ubica entre 1.2 Voltios y 1.7 Voltios automticamente se ejecuta un Reset. Este rango de voltaje asegura que el microcontrolador se reinicialice antes de cometer errores en cualquier proceso. En el caso de que el voltaje siga por debajo del rango especificado, el microcontrolador no arranca de nuevo hasta que se estabilicen los voltajes en su rango normal. En la siguiente imagen mostramos el pequeo circuito que debe ser incluido para asegurar esto.

Para el circuito anterior existen algunas reglas bsicas importantes:


1. Se recomienda una resistencia menos de 40 K ( R < 40 K ).

2. Se recomienda a R1 entre 100 ohmios y 1 K que sern los elementos electrnicos que limitaran las corrientes que intenten entrar por el Pin del microcontrolador. 3. El diodo D1 es utilizado para descargar el condensador rpidamente cuando el voltaje baja de su nivel normal.

Ahora conocemos la configuracin bsica obligatoria que debe tener


nuestro microcontrolador para poder funcionar. En el siguiente circuito esquemtico mostramos el resultado de lo anteriormente explicado..

1.12-. Puertos del Microcontrolador PIC16F84. Los puertos del microcontrolador PIC16F84 son el medio de
comunicacin con el mundo exterior, en ellos podremos conectar los perifricos o circuitos necesarios como por ejemplo los Mdulos LCD, motores elctricos, etc; pero estas conexiones no se podrn realizar arbitrariamente; es decir, existen unas reglas bsicas que debern cumplirse para que el microcontrolador no sufra daos o se destruya. Todo el truco esta en conocer los limites de corriente que puede manejar el microcontrolador..

1.12.1-. Limite de corriente para el Puerto "A" y el "B". El puerto "A" del microcontrolador y el puerto "B" podrn ser
programados como entradas y salidas indiferentemente. Para el caso de que sean programadas como salida es denominado "Modo Fuente" por que suministran corriente y cuando las lineas sean programadas como entradas son llamadas "Sumidero" por que reciben corriente. Ahora, la mxima corriente que puede suministrar una linea programada como salida es de 20 mili-amperios; pero si usted utiliza toda las lineas del puerto "A" programadas como salida; la mxima corriente no deber exceder de 50mA para todo el puerto "A" . Para el caso del puerto "B" en que todas las lineas sean programadas como salida la mxima corriente no deber exceder de 100 mA. Ahora cuando las lineas de los puertos son programadas como entradas ( Sumidero ), la corriente mxima que puede manejar una sola linea es de 25 mA. Para el caso del puerto "A" que sea programado con todas sus lineas como entrada, la mxima corriente que puede manejar es de 80 mA. Por otro lado, para el puerto "B" si todas las lineas son programadas como entrada, la mxima corriente que puede manejar es de 150 mA. Podemos entonces resumir:

Si usted esta interesado en manejar perifricos que manejan mayor cantidad de corriente de la especificada, tan solo deber aplicar un circuito acoplador como por ejemplo los buffers, transistores que se encarguen de controlar la corriente, etc. Tenemos algunos ejemplos bsicos para ello en la siguiente imagen:

2.0-. ARQUITECTURA DEL PIC16F84 El microcontrolador PIC16F84 dispone de una estructura organizada
interiormente conformado por bloques interconectados en donde se incluye la memoria RAM, los puertos de entrada y salida, la memoria EEPROM, etc. En la siguiente imagen se muestra la arquitectura interna del PIC16F84.

Nuestra intencin no abarca el detalle de como funciona internamente el


microcontrolador; pero si usted esta interesado en ello, disponemos de un software educativo llamado PINPOKE en el cual usted podr observar visualmente como trabaja el microcontrolador PIC16F84.

2.1-. REGISTROS IMPORTANTES DEL MICROCONTROLADOR PIC16F84 Antes de programar el microcontrolador, ser absolutamente
necesario conocer algunos aspectos bsicos de la arquitectura del microcontrolador; especficamente en los detalles relacionados a la ubicacin del comienzo de la memoria RAM, Memoria EEPROM, Registros reservados, etc. En la siguiente imagen ( Lado derecho ) representamos el mapa de memoria del microcontrolador PIC16F84; bsicamente se puede observar que la estructura esta dividida en dos columnas denominadas banco

0 y banco 1. Los bancos difieren solamente en algunos aspectos que sern explicados posteriormente; por los momentos, observe cuidadosamente y trate de identificar los bancos.

Antes de comenzar, usted deber saber algunas caractersticas del


microcontrolador PIC16F84 que describiremos en detalle: 2.1.1-. MEMORIA RAM:

El microcontrolador PIC16F84 puede direccionar 128 posiciones


diferentes de memoria RAM; pero Microchip Tecnologies solamente ha implementado 80 posiciones para este PIC, esta memoria esta dividida en dos partes:
La primera parte consta de 16 registros que sern utilizados por funciones especiales del microcontrolador. En la figura anterior se puede observar los doce registros especiales: TMRO, PCL, STATUS, FSR, PORTA, PORTB, EEDATA, etc. La Segunda parte consta de 68 registros de memoria RAM que sern utilizados para almacenar datos temporales requeridos por el programa creado por el programador.

Este tipo de memoria comienza en la posicin 0Ch y termina en la


posicin 4Fh. La memoria RAM tiene la caracterstica bsica de perder los datos si se llegase a desconectar el microcontrolador o la tensin baja por debajo de los limites mnimos.

La memoria RAM as como algunos registros especiales son los mismos


en los dos bancos del mapa de memoria del PIC.

2.1.2-. MEMORIA DE PROGRAMA TIPO EEPROM:

Esta memoria tiene 1 K x 14 Bits de memoria tipo Flash. Esta memoria es


la que utilizaremos para almacenar nuestro programa dentro del microcontrolador PIC16F84. El tipo de memoria utilizada en este microcontrolador, podr se escrita o borrada elctricamente; por otro lado, la memoria tipo Flash tiene la caracterstica de poderse borrar en bloques completos y no podr borrarse posiciones concretas o especificas. Este tipo de memoria no es voltil, es decir, no pierde los datos si la energa es interrumpida. En la siguiente imagen se muestra como esta organizada la memoria dentro del microcontrolador.

La memoria del programa comienza desde la posicin 000h y termina en la posicin 03FFh. NOTA IMPORTANTE: El contador de programa del microcontrolador PIC16F84 tiene una longitud de 13 Bits por lo que implica que este podr direccionar cualquier posicin comprendida en un rango de los 8 K x 14; pero la empresa Microchip Tecnologies solamente ha implementado internamente 1 K que representa desde 000h hasta 03FFh. En el caso de que usted direcciones fuera del rango estipulado, automticamente causara un solapamiento. 2.2-. CONJUNTO DE INSTRUCCIONES DEL PIC16F84:

El microcontrolador PIC16F84 dispone de un total de 37 instrucciones


de una sola palabra que usted podr aprenderse muy fcilmente. Nuestro curso va orientado a entender y programar el PIC16F84 de una manera

sencilla y rpida por lo que explicaremos a continuacin el conjunto de instrucciones, su significado, modo de operacin y traduccin.

Las instrucciones tienen algunas letras que van relacionadas y que tienen
cierta interpretacin. Por ejemplo la letra "W" es el registro mas importante que tiene el microcontrolador y es denominado ACUMULADOR. En este registro todas las operaciones pasan a travs de el.
No. Instruccin 1 ADDWF f,d Descripcin Observacin

Esta instruccin suma el contenido de un registro especfico Sumar W + f al contenido del registro de "W" donde "f" puede ser un registro cualquiera con un determinado valor.

Por ejemplo: Si el contenido de "W" antes de ejecutar la instruccin tena


un valor de 20 y el registro "f" tiene un valor de 5, en el momento que se ejecuta la instruccin el resultado obtenido es 25.

Ahora aprovechamos en esta primera instruccin de explicar el


significado que tiene la letra "d" en la instruccin (ADDWF f,d). Una vez finalizada la instruccin, el resultado podr ser almacenado directamente en el acumulador "W" o en el registro "f" para ello se utiliza la letra "d" en el cual podr escribirse "0" o "1"; si la letra d=0el resultado de la operacin se ubicar en el registro "W"; por otro lado si d=1 el resultado de la operacin se ubicar en "f".

Hagamos un ejemplo sencillo y supongamos que W=4 y f = 3 antes de


ejecutar la instruccin:

Si escribimos la instruccin de la siguiente manera: ADDWF f,0


significa que el contenido del registro "f=3" se sumar con el contenido del registro "W=4" y el resultado se alojar en el acumulador "W" tomando el valor de "W=7"; el registro "f" mantendr su valor "f=3".

Ahora si la instruccin esta escrita as: ADDWF f,1 significa que el


contenido del registro "f=3" se sumar con el contenido del registro "W=4" y el resultado se alojar en el registro "f" tomando el valor de "f=7"; el acumulador mantendr su valor "W=4".

Esta explicacin de la letra "d" ser valida de igual manera para todas las
instrucciones que contengan este parmetro.

Otro punto importante esta referido a la letra "f" la cual puede ser
cualquier nombre y no especficamente la letra "f"; por ejemplo ADDWF regist,1 donde regist es un registro de uso general de la memoria RAM.
No. Instruccin Descripcin Observacin

ANDWF f,d

Operacin lgica AND

Esta instruccin realiza una operacin lgica "AND" entre el registro"W" y el registro "f".

El microcontrolador PIC16F84 puede realizar una operacin AND entre dos registros.

Para explicar mejor la operacin AND, supongamos que tenemos un bit


A y un bit B que deseamos comparar; entonces tenemos las siguientes alternativas combinaciones entre los dos bits:
ENTRADA A 0 0 1 1 B 0 1 0 1 RESULTADO Y = A.B 0 0 0 1

Se puede observar claramente que solamente para la condicin de que


A=1 Y B=1 tendremos 1 en el resultado; de all el nombre de la operacin AND donde dice: "Si A=1 y B=1 entonces la salida ser 1". Esta explicacin es vlida para cada uno de los Bits entre dos registros.

Hagamos un ejemplo sencillo y supongamos que W= 00001111 y f =


11110000 antes de ejecutar la instruccin ANDWF f,d:
ENTRADA W Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 0 0 0 0 1 1 1 1 f 1 1 1 1 0 0 0 0 RESULTADO W.f 0 0 0 0 0 0 0 0

El microcontrolador procede a comparar cada uno de los ocho bits que


conforman a W y a f. Esta comparacin es realizada con cada bit perteneciente a su posicin; es decir, el bit No. 7 de"W" con el Bit No. 7 de "f" y as sucesivamente hasta llegar al Bit No 0. Se puede observar que en ninguno de los ocho Bits de los registros "W" y "f" se obtuvo la condicin de "1 Y 1" por lo que todos los bits resultantes fueron cero (0).

En nuestro segundo ejemplo tenemos que W = 01110011 y f = 00101001


antes de ejecutar la instruccin ANDWF f,d tenemos:
ENTRADA W Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 0 1 1 1 0 0 1 1 f 0 0 1 0 1 0 0 1 RESULTADO W.f 0 0 1 0 0 0 0 1

Al igual que el caso anterior, el microcontrolador compara Bit a Bit el


registro "W" y el registro "f" y podemos observar que tan solo el Bit No. 5 y el Bit No. 0 cumplen con la condicin AND; los dems Bits dan como resultado cero.
No. Instruccin 3 ANDLW k Descripcin Observacin Operacin lgica AND entre un literal y W

Esta instruccin, al igual que la instruccin explicada anteriormente,


ejecuta el mismo procedimiento pero con ciertas diferencias. La instruccin ANDLW k significa que el microcontrolador realiza una operacin lgica AND entre el registro "W" y el contenido del literal "k", donde "k" es un literal que puede contener cualquier valor entre 0 y 255 asignado por el programador.

Otra diferencia con respecto a la instruccin anterior esta referido al


resultado ya que este es colocado directamente en en registro "W" y no existir la posibilidad de colocarlo en el registro "k".
No. Instruccin 3 CLRF f Descripcin Observacin

Borra registro Esta instruccin borra un registro especifico.

El microcontrolador puede borrar un registro "f" cargndolo con el valor


"00". Supongamos que tenemos un registro denominado regist = 54 antes de ejecutar la instruccin. Despus de ejecutada la instruccin el valor de regist = 00.

No. Instruccin 4 CLRW

Descripcin Borra el registro W

Observacin Esta instruccin borra el registro "W" solamente

Cuando se ejecuta esta instruccin, el microcontrolador borra el registro


"W" cargndolo con "00".
No. Instruccin 5 COMP f,d Descripcin Observacin

Complementa Esta instruccin complementa el registro "f" el registro f

Desde el punto de vista de los nmeros binarios, supongamos que


tenemos un registro "f" denominado regist = 00111011; cuando es aplicada la instruccin tenemos que los 0 cambian a valores 1 y los valores 1 cambian a 0 obtenindose un registro invertido. El resultado ser 11000100..
No. Instruccin 6 DECF f,d Descripcin Decrementa un registro f Observacin Esta instruccin decrementa en una sola unidad el registro "f".

Esta instruccin le decrementa en una sola unidad el registro "f". Por


ejemplo si nuestro registro denominado regist = 5; cuando se aplica la instruccin DECF f,0 el resultado ser W=4. Por el contrario, si aplicamos la instruccin DECF f,1 el resultado ser regist = 4.
No. Instruccin 7 DECFSZ f,d Descripcin Observacin

Decrementa y si Esta instruccin decrementa en una sola unidad el registro es igual a cero "f" en la cual si el registro "f" es igual a cero entonces salta salta. a una instruccin

Esta instruccin esta estrechamente relacionada con las dos siguientes


instrucciones dentro del programa. Veamos el siguiente ejemplo:
INSTRUCCIN 1 INSTRUCCIN 2 INSTRUCCIN 3 DECFSZ f,d IR A OTRA DIRECCIN SUMAR DOS NMEROS

La instruccin DECFSZ f,d funciona de la siguiente manera: Primero decrementa en una sola unidad el registro "f"; de all pueden suceder dos condiciones. Si el resultado es "0" se ejecuta la instruccin numero 3; pero si el resultado es diferente de cero, se ejecuta la instruccin numero 2

No. Instruccin 8 INCF f,d

Descripcin Incrementa el registro "f" en una unidad

Observacin Esta instruccin incrementa en una sola unidad el registro "f".

Supongamos que el registro " f = 45 "; cuando se le aplica el comando


INCF f,0 se incrementa en una unidad el numero 45 y el resultado es colocado en "W = 46 ". Si aplicamos el comando INCF f,1 se incrementa en una unidad el numero 45 y el resultado es colocado en el registro "f = 46"
No. Instruccin 9 INCFSZ f,d Descripcin incrementa y si es igual a cero salta. Observacin Esta instruccin incrementa en una sola unidad el registro "f" en la cual si el registro "f" es igual a cero entonces salta a una instruccin

Esta instruccin esta estrechamente relacionada con las dos siguientes


instrucciones dentro del programa. Veamos el siguiente ejemplo:
INSTRUCCIN 1 INSTRUCCIN 2 INSTRUCCIN 3 INCFSZ f,d IR A OTRA DIRECCIN SUMAR DOS NMEROS

La instruccin INCFSZ f,d funciona de la siguiente manera: Primero incrementa en una sola unidad el registro "f"; de all pueden suceder dos condiciones. Si el resultado es "0" se ejecuta la instruccin nmero 3; pero si el resultado es diferente de cero, se ejecuta la instruccin nmero 2
No. Instruccin 10 IORWF f,d Descripcin Observacin

Se aplica un OR Esta instruccin aplica una operacin lgica llamada OR Inclusivo INCLUSIVO entre dos registros.

El microcontrolador PIC16F84 puede realizar una operacin OR


INCLUSIVO entre dos registros.

Para explicar mejor la operacin OR INCLUSIVO, supongamos que


tenemos un bit A y un bit B que deseamos comparar; entonces tenemos las siguientes alternativas combinaciones entre los dos bits:
ENTRADA A 0 0 1 1 B 0 1 0 1 RESULTADO Y=A+B 0 1 1 1

Se puede observar claramente si A=1 o B=1 independientemente, el


resultado ser 1; lo cual quiere decir que solamente cualquiera de los dos registros podr tener valor 1 para que su resultado sea 1.

Hagamos un ejemplo sencillo y supongamos que W= 00001111 y f =


11110000 antes de ejecutar la instruccin IORWF f,d:
ENTRADA W Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 0 0 0 0 1 1 1 1 f 1 1 1 1 0 0 0 0 RESULTADO W+f 1 1 1 1 1 1 1 1

El microcontrolador procede a comparar cada uno de los ocho bits que conforman a W y a f. Esta comparacin es realizada con cada bit perteneciente a su posicin; es decir, el bit No. 7 de"W" con el Bit No. 7 de "f" y as sucesivamente hasta llegar al Bit No 0. Podemos observar claramente que el resultado en todos los Bits es 1 ya que cualquiera de los dos registros ( W o f ) contiene un 1 en nuestro segundo ejemplo tenemos que W = 01110011 y f = 00101001 antes de ejecutar la instruccin IORWF f,d tenemos:
ENTRADA W Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 0 1 1 1 0 0 1 1 f 0 0 1 0 1 0 0 1 RESULTADO W.f 0 1 1 1 1 0 1 1

Al igual que el caso anterior, el microcontrolador compara Bit a Bit el


registro "W" y el registro "f" y podemos observar que tan solo el Bit No. 7 y el Bit No. 2 no cumplen con la condicin OR; los dems Bits dan como resultado 1.

No. Instruccin 27 IORLW k

Descripcin Operacion IOR

Observacin Operacin lgica entre el registro "W" y un literal "k"

Esta instruccin, al igual que la instruccin explicada anteriormente,


ejecuta el mismo procedimiento pero con ciertas diferencias. La instruccin IORLW k significa que el microcontrolador realiza una operacin lgica OR entre el registro "W" y el contenido del literal "k", donde "k" es un literal que puede contener cualquier valor entre 0 y 255 asignado por el programador.

Otra diferencia con respecto a la instruccin anterior esta referido al


resultado ya que este es colocado directamente en en registro "W" y no existir la posibilidad de colocarlo en el registro "k".
No. Instruccin 11 MOVF f,d Descripcin Mueve el contenido del registro "f" Observacin Esta instruccin mueve el contenido del registro "f" en el mismo registro "f" o en "W".

Esta instruccin tiene la finalidad de mover el contenido del registro "f"


en el mismo registro "f" o hacia el registro "W". Por ejemplo si aplicamos el comando MOVF f,0 tan solo mueve el contenido del registro que se encuentra en "f" hacia el acumulador "W"; por otro lado si aplicamos el comando MOVF f,1 se mueve en contenido del registro "f" en el mismo registro "f". En este ltimo punto, usted podra preguntarse para qu se necesita mover el contenido de un registro y volverlo a colocar dentro del mismo registro? La respuesta estriba en que cuando se ejecuta esta instruccin cambia una bandera dentro de la arquitectura del microcontrolador. Estas banderas sern explicadas posteriormente.
No. Instruccin 12 NOP Descripcin No opera Observacin Esta instruccin no ejecuta ningn tipo de accin.

La instruccin NOP no ejecuta ninguna tarea especfica, pero consume 4


ciclos de reloj completos. Cierta utilidad que le hemos encontrado a esta instruccin especficamente esta referida a las rutinas de tiempo. Algunas veces hemos creado algunas rutinas de tiempo que requieren exactitud en la temporizacion y en algunos casos cuando estn siendo ejecutadas le suele faltar algunos ciclos de reloj adicionales para que sean exactas; es all en donde debemos agregar algunas instrucciones NOP.
No. Instruccin 13 RLF f,d Descripcin Rotacin a la Izquierda Observacin Esta instruccin rota a la izquierda todos los bits de un registro "f".

Esta Instruccin esta muy relacionada con la bandera denominada Carry


perteneciente al registro STATUS. La bandera Carry esta afectada directamente por varias instrucciones de las cuales podemos mencionar: Rotacin a la izquierda, Rotacin a la derecha, Suma, Resta, etc.

Por ejemplo, supongamos que nuestro registro " f = 00001111 " y que la
bandera CARRY tienen un 0; cuando se aplica el comando RLF f,0 todos los nmeros del registro "f" se desplazan hacia la izquierda. El valor lgico que se encuentra en la bandera CARRY es colocado en el Bit No. 0 y el Bit No. 7 es colocado en la bandera CARRY. El resultado de nuestro ejemplo sera: f = 00011110. y CARRY seria 0. El orden lgico de los Bits lo tenemos definidos as:
BIT No. 7 BIT No. 6 BIT No. 5 BIT No. 4 BIT No. 3 BIT No. 2 BIT No. 1 0 0 No. Instruccin 14 RRF f,d 0 0 0 0 Descripcin Rotacin a la Derecha 0 1 1 1 1 1 Observacin Esta instruccin rota a la Derecha todos los bits de un registro "f". 1 1 Aplicamos la Instruccin RLF f,d 0 BIT No. 0 1

Al igual que la instruccin anterior, esta muy relacionada con la bandera


denominada Carry perteneciente al registro STATUS. La bandera Carry esta afectada directamente por varias instrucciones de las cuales podemos mencionar: Rotacin a la izquierda, Rotacin a la derecha, Suma, Resta, etc. Posteriormente explicaremos las banderas.

Por ejemplo, supongamos que nuestro registro " f = 00001111 " y que la
bandera CARRY tienen un 0; cuando se aplica el comando RRF f,0 todos los nmeros del registro "f" se desplazan hacia la derecha. El valor lgico que se encuentra en la bandera CARRY es colocado en el Bit No. 7 y el Bit No. 0 es colocado en la bandera CARRY. El resultado de nuestro ejemplo sera: f = 00000111. y CARRY seria 1. El orden lgico de los Bits lo tenemos definidos as:
BIT No. 7 BIT No. 6 BIT No. 5 BIT No. 4 BIT No. 3 BIT No. 2 BIT No. 1 0 0 No. Instruccin 15 SUBWF f,d 0 0 0 0 Descripcin Resta W de f 0 0 1 0 1 1 Observacin Resta el contenido del registro "W" del registro "f" 1 1 Aplicamos la Instruccin RLF f,d 1 BIT No. 0 1

El microcontrolador PIC16F84 puede restar el contenido del registro


"W" del registro "f"; por ejemplo, supongamos que "W = 4 " y Dato1 = 6; cuando se aplica el comando SUBWF Dato1,0 se resta 6-4 y el resultado es

almacenado en el acumulador "W". Por otro lado si se aplica el comando SUBWF Dato1,1 se resta 6-4 y el resultado es colocado en el registro Dato1.
No. Instruccin 33 SUBLW k Descripcin Resta W de k Observacin Resta el contenido del registro "W" de un literal "k"

Al igual que la instruccin anterior, este resta el contenido del registro "W" de un literal "k" donde "k" es una palabra cualquiera con un valor entre 0 y 255. El resultado de la operacin es colocado directamente en el registro "W".
No. Instruccin 16 SWAPF f,d Descripcin Intercambio de Bits Observacin Se intercambian los 4 bits mas altos con los 4 bits mas bajos

Este comando tan solo intercambia los cuatro bits mas altos con los cuatro
bits mas bajos. Supongamos por ejemplo que tenemos el siguiente nmero binario almacenado en "f = 00001111"; cuando es aplicado el comando SWAPF f,0 el microcontrolador intercambia los bits altos por los bits bajos de la siguiente forma: 11110000; el resultado es colocado en el acumulador "W". Por otro lado cuando es aplicado el comando SWAPF f,1 el microcontrolador intercambia los bits altos por los bits bajos de la siguiente forma: 11110000; el resultado es colocado en el acumulador "f".
No. Instruccin 17 XORWF f,d Descripcin Observacin

Operacin lgica Este comando aplica la operacin lgica de OR Exclusivo a OR exclusivo dos registros.

El microcontrolador PIC16F84 puede realizar una operacin OR


EXCLUSIVO entre dos registros.

Para explicar mejor la operacin OR EXCLUSIVO, supongamos que


tenemos un bit A y un bit B que deseamos comparar; entonces tenemos las siguientes alternativas combinaciones entre los dos bits:
ENTRADA A 0 0 1 1 B 0 1 0 1 RESULTADO Y = A xor B 0 1 1 0

Se puede observar claramente si ambos registros son iguales el resultado ser 0; pero si ambos registros son diferentes entonces el resultado ser 1. Hagamos un ejemplo sencillo y supongamos que W= 00001111 y f = 11110000 antes de ejecutar la instruccin XORWF f,d:

ENTRADA W Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 0 0 0 0 1 1 1 1 f 1 1 1 1 0 0 0 0

RESULTADO W+f 1 1 1 1 1 1 1 1

El microcontrolador procede a comparar cada uno de los ocho bits que


conforman a W y a f. Esta comparacin es realizada con cada bit perteneciente a su posicin; es decir, el bit No. 7 de"W" con el Bit No. 7 de "f" y as sucesivamente hasta llegar al Bit No 0. Podemos observar claramente que el resultado en todos los Bits es 1 ya que cualquiera de los dos registros ( W y f ) contienen Bits diferentes.

En nuestro segundo ejemplo tenemos que W = 01110011 y f =


00101001 antes de ejecutar la instruccin XORWF f,d tenemos:
ENTRADA W Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 0 1 1 1 0 0 1 1 f 0 0 1 0 1 0 0 1 RESULTADO W.f 0 1 1 1 1 0 1 0

Al igual que el caso anterior, el microcontrolador compara Bit a Bit el


registro "W" y el registro "f" y podemos observar que tan solo el Bit No. 7, el Bit No. 2 y el Bit 0 cumplen con la condicin OR EXCLUSIVO; los dems Bits dan como resultado 1.
No. Instruccin 34 XORLW k Descripcin Observacin Operacin lgica XOR entre el registro W y el literal "k"

Esta instruccin al igual que la instruccin explicada anteriormente


ejecuta el mismo procedimiento pero con ciertas diferencias. La instruccin XORLW k significa que el microcontrolador realiza una operacin lgica OR EXCLUSIVO entre el registro "W" y el contenido del literal "k", donde

"k" es un literal que puede contener cualquier valor entre 0 y 255 asignado por el programador.

Otra diferencia con respecto a la instruccin anterior esta referido al


resultado ya que este es colocado directamente en en registro "W" y no existir la posibilidad de colocarlo en el registro "k".
No. Instruccin 18 BCF f,b Descripcin Coloca en Cero un determinado Bit Observacin Este comando pone en Cero el Bit "b" del registro "f"

Para este tipo de instrucciones pensamos que el mejor ejemplo que


podemos sealar esta basado visualmente en un nmero binario. Cuando se aplica el comando BCF f,b el microcontrolador pone en cero el Bit "b" del registro "f". Para entenderlo mejor observemos el siguiente ejemplo:

Supongamos que tenemos un registro de ocho bits llamado Memory =


01010101. Si se aplica el comando BCF Memory,2 quiere decir que al registro Memory en la posicin del Bit No. 2 se le cargara un valor cero. Ejemplo 1
BIT No. 7 BIT No. 6 BIT No. 5 BIT No. 4 BIT No. 3 BIT No. 2 BIT No. 1 0 0 1 1 0 0 1 1 0 0 1 0 0 0 Aplicamos la Instruccin BCF Memory,2 1 BIT No. 0 1

Ejemplo 2
BIT No. 7 BIT No. 6 BIT No. 5 BIT No. 4 BIT No. 3 BIT No. 2 BIT No. 1 1 1 No. Instruccin 19 BSF f,b 1 1 1 1 Descripcin 1 1 1 1 1 0 Observacin 1 1 Aplicamos la Instruccin BCF Memory,2 1 BIT No. 0 1

Coloca en uno Este comando Pone en 1 el Bit "b" del registro "f" determinado Bit

Al igual que la instruccin anterior pensamos que el mejor ejemplo


que podemos sealar esta basado visualmente en un nmero binario. Cuando se aplica el comando BSF f,b el microcontrolador pone en 1 el Bit "b" del registro "f". Para entenderlo mejor observemos el siguiente ejemplo:

Supongamos que tenemos un registro de ocho bits llamado Memory =


01010101. Si se aplica el comando BSF Memory,3 quiere decir que al registro Memory en la posicin del Bit No. 3se le cargara un valor 1. Ejemplo 1

BIT No. 7 BIT No. 6 BIT No. 5 BIT No. 4 BIT No. 3 BIT No. 2 BIT No. 1 0 0 1 1 0 0 1 1 0 1 1 1 0 0 Aplicamos la Instruccin BCF Memory,3

BIT No. 0 1 1

Ejemplo 2
BIT No. 7 BIT No. 6 BIT No. 5 BIT No. 4 BIT No. 3 BIT No. 2 BIT No. 1 0 0 No. Instruccin 20 BTFSC f,b 0 0 0 0 Descripcin Prueba el Bit b del registro f 0 0 0 1 0 0 Observacin Este comando prueba el Bit "b" del registro "f" y salta una linea si esta en 0. 0 0 Aplicamos la Instruccin BCF Memory,3 0 BIT No. 0 0

Esta instruccin esta estrechamente relacionada con las dos siguientes instrucciones dentro del programa. Veamos el siguiente ejemplo:
INSTRUCCIN 1 INSTRUCCIN 2 INSTRUCCIN 3 BTFSC f,b IR A OTRA DICRECCION SUMAR DOS NUMEROS

Supongamos que tenemos nuestro registro denominado Memory =


01010101; cuando se le aplica el comando BTFSC Memory,2 el microcontrolador prueba el Bit No. 2 del registro Memory para ver si es igual a cero. En esta comprobacin pueden suceder dos cosas: Si el Bit No. 2 es igual a 0 el microcontrolador ejecuta la instruccin nmero 3; pero en el caso de que el Bit No. 2 sea diferente de 0, el microcontrolador ejecuta la instruccin 2.
No. Instruccin 21 BTFSS f,b Descripcin Prueba el Bit b del registro f Observacin Este comando prueba el Bit "b" del registro "f" y salta una linea si esta en 1.

Esta instruccin esta estrechamente relacionada con las dos siguientes


instrucciones dentro del programa. Veamos el siguiente ejemplo:
INSTRUCCIN 1 INSTRUCCIN 2 INSTRUCCIN 3 BTFSS f,b IR A OTRA DICRECCION SUMAR DOS NUMEROS

Supongamos que tenemos nuestro registro denominado Memory =


01010101; cuando se le aplica el comando BTFSS Memory,2 el microcontrolador prueba el Bit No. 2 del registro Memory para ver si es igual a 1. En esta comprobacin pueden suceder dos cosas: Si el Bit No. 2 es igual a 1 el microcontrolador ejecuta la Instruccin numero 3; pero en el

caso de que el Bit No. 2 sea diferente de 1, el microcontrolador ejecuta la Instruccin 2


No. Instruccin 22 ADDLW k Descripcin Suma de dos nmeros Observacin Este comando suma un valor de un literal al contenido del registro "W"

Este comando es muy sencillo ya que tan solo cuando es aplicado, toma el
contenido del registro y se lo suma al registro "W"; por ejemplo: Supongamos que W = 23 y que tenemos un literal k = 23; cuando se aplica el comando, el resultado es la suma del literal mas el contenido del registro "W", el resultado final queda almacenado en el registro "W".
No. Instruccin 24 CALL k Descripcin Observacin Llamada de una Subrrutina con el nombre k

Para entender esta instruccin, primera debemos aclarar que es una


Subrutina. La subrutina consiste en un grupo de instrucciones que se encuentran aisladas del programa principal y que se ejecutan cuando son llamadas por un nombre asignado por el programador. Las subrrutinas suelen ser pequeos programas, por ejemplo para obtener retardos de tiempo ( Subrrutina de tiempo ); pero principalmente podemos decir tambin que una Subrrutina es un pequeo programa que se utiliza muchas veces en cualquier parte del programa. Las ventajas que ofrecen las subrrutinas estan referida al ahorro considerable de la memoria de programa y su fcil mantenimiento. A la subrrutina se le podr asignar cualquier nombre, y este es el nombre utilizado en la Instruccin CALL como parmetro.

La instruccin CALL k esta estrechamente relacionada con la instruccin


denominada RETURN y RETLW ( Ver las siguientes dos Instrucciones ).
No. Instruccin 31 RETURN Descripcin Observacin Retorno desde una subrrutina

La Instruccin RETURN es un comando que no podr estar separado cuando se crea una subrrutina.

El procedimiento es prcticamente mecnico ya que usted deber crear la


subrrutina y darle el nombre para poder ser llamada; al final de la subrrutina se debe escribir la instruccin denominada RETURN. Entonces podemos concluir que una subrrutina esta constituida por un conjunto de instrucciones demarcadas por un nombre que se encuentra al inicio y la instruccin RETURN que se encuentra al final demarcando el final de la subrrutina. Por ejemplo: supongamos que nuestra Subrrutina se llama RUTINA, entonces tenemos:
RUTINA INSTRUCCIN 1

INSTRUCCIN 2 INSTRUCCIN 3 INSTRUCCIN 4 RETURN

Especficamente el comando RETURN le dice al microcontrolador que


debe continuar ejecutando las instrucciones en el lugar desde donde la subrrutina fue llamada. Esta es la estructura bsica que conforma a una subrrutina.
No. Instruccin 30 RETLW k Descripcin Observacin Retorno de subrrutina y carga a "W" con el contenido del literal "k"

El comando RETLW k se comporta igual al comando RETURN con la


diferencia de que esta carga un Valor "k" en el registro "W" cuando finaliza la subrrutina. El rango de este valor "k" esta comprendido entre 0 y 255.
No. Instruccin 25 CLRWDT Descripcin Observacin Borra el contenido del registro llamado Watchdog Timer.

Esta instruccin borra el contador del WATCHDOG TIMER (perro


guardin), en realidad es un contador interno que va desde 0 hasta 255 y que podr ser activado o desactivado en la configuracin del sistema cuando el microcontrolador va a ser grabado. El tiempo de conteo para este contador tambin podr ser prolongado por un preescalador segn las necesidades del usuario.

La instruccin CLRWDT borra el contenido del contador del perro


guardin. Si usted activa el Watchdog Timer, usted deber asegurarse de ejecutar el comando CLRWDT antes de que el contador finalice el conteo para que el microcontrolador no se reinicialice automticamente.

Existen casos en donde los microcontroladores se confunden y queda


bloqueado dejando automticamente de hacer la tarea encomendada. Cuando sucede esto no existir el comando CLRWDT y en consecuencia se reinicializara el microcntrolador.

Esta instruccin es muy ventajosa cuando se tienen instalados los


sistemas en lugares muy remotos y no puede enviarse a una persona para reinicializar el microcontrolador.
No. Instruccin 26 GOTO k Descripcin Observacin El contador de programa salta a una direccin con el nombre "k"

Esta es una de las instruccin mas fcil de entender y consiste tan solo
en un salto a otra parte del programa. Cuando se ejecuta el comando GOTO k, el microcontrolador salta a la direccin "k", donde "k" es una etiqueta cualquiera; por ejemplo:
INSTRUCCIN 1 GOTO SALTO INSTRUCCIN 3 INSTRUCCIN 4 SALTO INSTRUCCION 5

en en ejemplo anterior tenemos que primero se ejecuta la instruccin 1, seguidamente la instruccin de GOTO SALTO la cual le dice al microcontrolador que debe continuar en la instruccin 5.
No. Instruccin 28 MOVLW k Descripcin Observacin Se carga el registro "W" con el contenido del literal "k"

Esta instruccin le servir para tomar el contenido de un literal y cargarlo en el registro "W"; donde "k" en una palabra cualquiera que tiene asignado un valor entre 0 y 255.
No. Instruccin 29 RETFIE Descripcin Observacin Retorno de llamado a interrupcin

Esta Instruccin es parecida a la Instruccin RETURN, pero a diferencia


de esta, RETFIE es utilizada para volver de una subrrutina de interrupcin.
No. Instruccin 32 SLEEP Descripcin Observacin Entra en modo de reposo.

Esta Instruccin le da la orden al microcontrolador de quedar en modo


suspendido, en este modo el PIC no ejecuta ninguna instruccin hasta que sea nuevamente reinicializado (RESET) comenzando nuevamente el programa. En este modo el consumo de energa del PIC es mnimo. Durante este modo el contador del WATCHDOG TIMER sigue trabajando y si este esta activado el PIC se reseteara por este medio.

Hasta aqu finalizamos con el conjunto de instrucciones del


microcontrolador PIC16F84. Si estas interesado en obtener el juego de instrucciones del microcontrolador PIC16F84 en formato PDF, en el idioma Ingles ( 15 Hojas = 964 KB ) Haz Click Aqu 2.3-. LAS BANDERAS

Estas banderas se utilizan para dar informacin adicional cuando se


realizan operaciones lgicas y aritmticas dentro del microcontrolador. Usted podr tomar decisiones segn el valor de cada una de las banderas. Existen diferentes tipos de banderas en un microcontrolador; entre ellas tenemos: 2.3.1-. LAS BANDERAS EN LA SUMA:

Los registros bsicos del microcontrolador PIC16F84 tienen una


longitud de 8 bits expresados en forma binaria, lo cual quiere decir que el nmero mximo expresado en forma decimal ser el 255. En la suma existen tres tipos de banderas que pueden proporcionarnos mayor informacin del resultado. Estas banderas son denominadas CARRY (C), Acarreo de Dgito (DC) y el Estado Cero (Z). Todas estas banderas son activadas segn sea el caso:

Por ejemplo, en la suma, la bandera CARRY se coloca en "1" cuando el


resultado supera el nmero 255 y permanecer en "0" indicando que no se present ningn sobreflujo; es decir que el resultado de la suma fue menor. Por otro lado, existe otra bandera denominada Acarreo de Dgito "DC" que expresa lo que sucede con los 4 Bits menos significativos; es decir, si los cuatro Bits menos significativos sobrepasa al numero 15 expresado en forma decimal, entonces la bandera DC = 1, en el caso contrario ser "0".

Finalmente la bandera de estado "Z" se activa cuando la operacin


aritmtica da como resultado un "1"; de lo contrario se coloca en "0". 2.3.2-. LAS BANDERAS EN LA RESTA:

En la resta de dos nmeros la bandera CARRY "C" se coloca en "1"


cuando el resultado de la operacin sea un nmero positivo, o se pone en cero para el caso contrario. Esto tan sencillamente quiere decir por ejemplo que si tenemos A=20 y B=10 donde X=A-B; el resultado ser X=10 ( Nmero Positivo ); para el caso contrario si tenemos A=10 y B=20 donde X=A-B entonces X=-10. obtenindose un resultado negativo.

La bandera de acarreo de dgito "DC" se colocar en "1" cuando los


cuatro Bits menos significativos del registro "W" sea menor que los cuatros bits menos significativos del registro que se desea restar, en caso contrario se colocar un cero. La bandera de estado "Z" solamente se activar cuando ambas cantidades sean iguales. 2.3.3-. LAS BANDERAS EN LA ROTACION:

El microcontrolador PIC16F84 tiene disponibles dos instrucciones de


rotacin las cuales rotan los dgitos de un registro a la derecha o a la izquierda, segun se use.

Por ejemplo, para la rotacin a la izquierda supongamos que nuestro


registro " f = 00001111 " y que la bandera CARRY tiene un 0; cuando se aplica el comando RLF f,0 todos los nmeros del registro "f" se desplazan hacia la izquierda. El valor lgico que se encuentra en la bandera CARRY es colocado en el Bit No. 0 y el Bit No. 7 es colocado en la bandera CARRY. El resultado de nuestro ejemplo seria: f = 00011110. y CARRY seria 0. El orden lgico de los Bits lo tenemos definidos as:
BIT No. 7 BIT No. 6 BIT No. 5 BIT No. 4 BIT No. 3 BIT No. 2 BIT No. 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 Aplicamos la Instruccin RLF f,d 0 BIT No. 0 1

Ahora para la notacin a la derecha, supongamos que nuestro registro " f =


00001111 " y que la bandera CARRY tiene un 0; cuando se aplica el comando RRF f,0 todos los nmeros del registro "f" se desplazan hacia la derecha. El valor lgico que se encuentra en la bandera CARRY es colocado en el Bit No. 7 y el Bit No. 0 es colocado en la bandera CARRY. El resultado de nuestro ejemplo seria: f = 00000111. y CARRY seria 1. El orden lgico de los Bits lo tenemos definidos as:
BIT No. 7 BIT No. 6 BIT No. 5 BIT No. 4 BIT No. 3 BIT No. 2 BIT No. 1 0 0 0 0 0 0 0 0 1 0 1 1 1 1 Aplicamos la Instruccin RLF f,d 1 BIT No. 0 1

Finalmente podemos decir, que las cuatro operaciones: Suma, Resta,


Rotacin a la izquierda y la Rotacin a la derecha son la base para un gran nmero de operaciones como la multiplicacin y la divisin de dos nmeros. 2.5-. ESTRUCTURA DE UN PROGRAMA TIPICO: Antes de intentar programar debes tener claro que todo programa desarrollado en PIC consta bsicamente de esta estructura:
Definir el Microcontrolador a usar. En esta directiva se especifica el tipo de microcontrolador que sera utilizado; esto se logra utilizando LIST=PIC16F84. Establecer las constantes a utilizar. Las constantes son tiles para referenciar direcciones de memoria, posiciones de los bits y valores que no cambiarn a lo largo de todo el programa. Esto se logra utilizando la directiva "EQU". Si se desea por ejemplo establecer un valor a una constante seria CONST EQU 1, lo cual le asigna el valor de "1" al registro CONST.

Reservar los espacios en memoria de las variables. Se utiliza para reservar espacios en memorias para las variables utilizadas en el programa. Se logra utilizando la directiva denominada "RES". Muy til cuando un registro cambia su valor durante la ejecucion del programa. Configurar los puertos. Es necesario establecer si los Bits de cada puerto sern utilizados como entrada o como salida. Esto se logra utilizando los registros especiales TRISA y TRISB. Desarrollar el Programa. Es el verdadero corazn del trabajo que se realiza, puesto que ac se desarrollan las rutinas que seran ejecutadas por el microcontrolador.

En la imagen anterior, hemos realizado un pequeo programa para el


microcontrolador PIC16F84 en la cual demarcamos las zonas en diferentes colores. El color amarillo representa la definicin del microcontrolador, el color verde representa la declamacin de las constantes, el color celeste representa la reserva de Memoria, el color rojo es donde realmente comienza el programa en si. y representa la configuracin de los puertos. Finalmente el color morado representa el cuerpo del programa. EL REGISTRO STATUS:

Uno de los registros mas importantes es el registro STATUS, que


tiene una longitud de 8 Bits. Cada uno de los ocho Bits esta destinado para una funcin especifica. Por ahora explicaremos bsicamente solo algunos de los bits pertenecientes al registro STATUS.

Si usted observa la siguiente imagen, podr notar claramente que el


Bit No. "0" es utilizado para almacenar la informacin del CARRY, el Bit No.1 es utilizado para la bandera de acarreo de dgito "DC", el Bit No. 2 es utilizado para la bandera de estado cero "Z"; estas son las banderas que hemos explicado anteriormente. El Bit No. 7, Bit No. 6, Bit No. 4 y el Bit No. 3 seran explicados posteriormente ya que haremos incapie al Bit No. 5 del registro STATUS denominado RP0.

Ya sabemos que dependiendo de alguna operacin como la suma, las


banderas "C" , "DC" y "Z" son afectadas automticamente segn sea el caso; pero el Bit numero 5 del registro STATUS lo manipularemos a nuestra voluntad con la finalidad de decirle al microcontrolador si queremos trabajar en el banco numero "0" o en el banco numero "1".

La operacin normal del microcontrolador se efecta en el banco


"0"; pero cuando nos cambiamos del banco "0" hacia el banco "1" es para efectuar ciertos cambios que definen como estarn configurados los puertos del microcontrolador. En la siguiente imagen se podr observar el registro STATUS y la asignacin que tienen cada uno de sus ocho Bits.

Ahora volvemos a retomar la Figura 4-2 del mapa de registro del


PIC16F84 y observe que existen algunas diferencias entre el banco "0" y el banco "1"; por ejemplo tenemos el los registros denominados TRISA,

TRISB, EECON1, EECON2, OPTION. Por ahora lo que queremos que usted pueda observar estas diferencias entre ambos bancos, entonces si usted necesita accesar al registro TRISA que solamente se encuentra en el banco "1", obligatoriamente tendra que cambiarse del banco 0 al banco 1 por medio de las instrucciones del microcontrolador.

Ahora, usted deber saber que debemos accesar al banco 1 solamente


para accesar a los registros que no se encuentran en el banco 0. Una vez accesados esos registros y a su vez modificados, tendremos que regresar inmediatamente al banco 0 para que el microcontrolador siga con su tarea asignada en la memoria del programa.

Si usted no pudo entender esta ultima parte ya que la consideramos la


mas complicada por su forma, no se preocupe ya que en los siguientes captulos cuando se comience a realizar algunos pequeos programas se vera claramente como cambiar de banco con el registro STATUS.

CAPITULO III 3.0-. EDITOR DE TEXTOS: LUGAR DONDE ESCRIBIMOS NUESTROS PROGRAMAS: Los programas para el microcontrolador debern escribirse en el editor
de textos del MS-DOS o tambin pueden escribirse en el BLOCK DE NOTAS de Windows indiferentemente. Usted podra localizar este block de notas en INICIO > Accesorios > Block de Notas.

Dentro del editor de TEXTOS, el programa debera excribise en cuatro


colunnas las cuales cada una de ellas estar destinada para una tarea especfica ya que cada columna cunple una tarea especfica. Cada una de estas colunnas tienen siguientes nombres asignados:
No. De la Columna Columna 1 Columna 2 Columna 3 Columna 4 Nombre de la Columna Etiqueta Operacion Operandos Comentario.

Antes de todo queremos establecer o definir la palabra colunma


dentro del editor de textos ya que esta tiene dos significados diferentes y puede prestarse a confuciones. Primero, la palabra columna puede ser interpretada como la posicin del caracter; por ejemplo si el cursor de su pantalla se encuentra totalmente a la izquierda, se encuentra en la primera columna del editor de textos. Si usted presiona la barra espaciadora de su teclado, el cursor se desplaza un caracter hacia la derecha y automaticamente se encontrar en la segunda columna. NO SE CONFUNDA, ya que esta columna no ser la Columna de Operacin que se seala en la tabla anterior. Para entenderlo mejor, usted podr definir su primera columna en la posicin del caracter No. 1, la segunda columna podr ser 10 posiciones a la derecha y no presisamente en la posicin de caracter No. 2, la tercera columna podr ser 10 posiciones mas a la derecha y asi sucesivamente. La idea es organizar cuatro columnas independientes con una separacin mnima de un caracter entre una columna y la otra.

Los programadores utilizan la tecla de tabulacion para desplazarse a


travs de las cuatro culumnas. Lo mas prctico es utilizar el tabulador para establecer las posiciones de las columnas. Si usted se ubica totalmente a la derecha, se encontrar en la columna No. 1 del editor la cual representa la columna de las etiquetas, usted podra presionar la tecla de tabulador dos veces y desde ah definir la columna de operacin. El ensamblador de programa la cual estar encargado de interpretar los comandos escritos en el block de notas, sabra reconocer facilmente la columnas que usted defini.

Cada una de las columnas tienen su reglas generales, a continuacin


mencionamos y explicaremos cada una de ellas. LAS ETIQUETAS: Las etiquetas tienen algunas reglas obligatorias que deberan cumplirse:
Debe comenzar exactamente en la columna 1 del editor de textos. La etiqueta no podr tener mas de 31 caracteres. La etiqueta podr estar conformada por caracteres alfa numricos.

OPERACION: En esta columna se escriben cualquiera de las 35 instrucciones del microcontrolador PIC16F84. OPERANDOS:

Los operandos son los registros en donde se realizan las operaciones y los
registros son los espacios de memoria donde se almacenarn los resultados de las operaciones. Este registro puede ser una memoria de datos o un registro constante que hemos denominado en el CAPITULO II como un literal. COMENTARIOS:

En esta columna se escriben los comentarios que explican la idea de lo


que esta haciendo el programa; El ensamblador ignora esta linea en el momento de generar los codigos necesarios para el microcontrolador PIC16F84.

Tambien se podran agregar comentarios al programa desde la columna


No. 1 del editor de textos; pero deberan comenzar con el smbolo " ; "

Ahora usted tiene toda la teora necesaria para comenzar a programar


el microcontrolador PIC16F84 para ello hemos organizado una serie de practicas bsicas que comienzan desde un nivel extremadamente sencillo hasta llegar a un nivel profesional. En la siguiente practica explicaremos con lujo de detalles todo los puntos de nuestro pequeo programa. 3.3-. ENTRENADOR PROMASTER. Todas las practicas de este pequeo curso podrn ser comprobadas con nuestro entrenador denominado PROMASTER 84 que podr ser adquirido directamente en ELECTROLOGIA, C.A. con el Ing. Frank Phorlakis al telfono 014-361-9181. El entrenador PROMASTER 84 incluye:
Fuente de poder de 5 Vlts. Un Programador para PIC16F84. Un modulo LCD de 2 lineas X 16 caracteres con Luz posterior. Un Motor paso a paso de 12 Vlts. Cuatro Displays de 7 segmentos. Teclado Matricial de 16 Teclas. Memoria serial de 256 K. Pulsadores. Ocho Diodos Luminosos (LED's). Circuito de comunicacin MAX 232. Relay. Potenciometro Digital. Manuales de operacin. Curso impreso. CD con todos los programas e informacin necesarios.

Para mayor informacin del entrenador PROMASTER 84 Haz Click Aqu.

PROGRAMADORES Antes de comenzar la seccin practica de nuestro curso, tenemos que


explicar algo de los programas que estn dedicados a programar el microcontrolador PIC16F84.

En la actualidad existen muchos programadores desde lo mas


sencillos que constan de algunos elementos electrnicos solamente hasta circuitos complejos controlados por microcontroladores. Los programadores tienen su mayor diferencia en la cantidad de microcontroladores diferentes que pueden programar. ELECTROLOGIA, C.A. tiene disponible para la venta dos de estos programadores. El primero se denomina PROMASTER 84 la cual solamente podr programar el microcontrolador PIC16F84. Este programador verstil trabaja en la plataforma de Windows nicamente y por dems muy econmico. Para mayor informacin del programador PROMASTER 84 Haz Click Aqu. En segundo lugar tenemos el programador de la empresa Microchip Tecnologies denominado PIC START PLUS. Este programador tiene la capacidad de poder programar casi toda la linea Microchip en todos los microcontroladores hasta 40 pines. Este programador es uno de los mas sofisticado. para mayor informacinHaz Click Aqu.

VENTAJAS Y DESVENTAJAS DE LOS DIFERENTES PROGRAMADORES: La ventaja mas importante que tiene el programador PICSTART
PLUS de la empresa Microchip es la gran cantidad de microcontroladores diferentes que puede programar; a su vez el diseo del equipo esta hecho para actualizarse con los nuevos microcontroladores que salen al mercado y siempre estar actualizado por lo menos con todos los microcontroladores hasta 40 pines. El programa emulador, el compilador, etc trabajan en la plataforma de Windows y tiene un constante soporte tcnico en la pgina Web de Microchip. El software que controla al programador es de libre distribucin y usted podr obtener una copia desde la pagina Web de Microchip. Para visitar la pagina de Microchip Tecnologies Haz Click

Aqu. La mayora de los programadores sencillos quedan congelados para


el microcontrolador para la cual fue diseado y si usted necesita hacer un cambio de microcontrolador, seria muy posible que tenga que hacer otra inversin en un programador.

3.6 QUE NECESITAMOS ANTES DE PROGRAMAR ? Antes de comenzar a programar en el editor de Textos usted debe
obtener una copia del compilador denominado MPLAB IDE que proporciona la empresa Microchip. Para obtener una copia Haz Click Aqu. Este programa es de libre distribucin y representa la versin 5.11 en el idioma Ingles. El programa tiene un tamao de 9.5 MB. Si usted tiene una conexin va modem de 56 K, podr bajar el software completamente en unos 70 Minutos. Dependiendo de las condiciones ideales de la conexin, puede ser un poco menos o un poco mas de tiempo. Para este curso, no importara que versin de MPLAB usted tenga ya que todos ellos disponen del microcontrolador PIC16F84. En la pagina de Microchip Tecnologies se puede obtener la ultima versin del MPLAB ( Versin 5.3 ), la diferencia entre las versiones radica especficamente en la capacidad de programar los nuevos microcontroladores que salen al mercado. Por ejemplo la versin de MPLAB 5.0 no dispone de la informacin del microcontrolador PIC16F870; pero la versin de MPLAB 5.2 se le ha incluido este microcontrolador.

Cuando usted haga doble click en el Link que baja automticamente la


versin 5.11 del MPLAM, el computador le preguntar si desea abrir el archivo o grabar el archivo. Usted deber seleccionar grabar el archivo.

Despus de haber seleccionado la opcin de guardar el archivo en el


disco, deber hacer doble click en el botn"ACEPTAR". y seguidamente se le preguntara donde quiera guardar el archivo:

Usted deber escribir el nombre del archivo si le quiere cambiar el


nombre, de lo contrario puede dejarlo como aparece. Por otro lado tambin deber ubicar el directorio en donde usted quiere que sea guardado el archivo. En la imagen anterior, el archivo denominado MPL5100 se grabara en la carpeta de MIS DOCUMENTOS; pero usted podr especificar cualquier lugar que desee.

3.7 INSTALANDO EL MPLAB IDE Una vez que el archivo del MPLAB sea grabado completamente en el
disco duro, proceda a ubicarlo y haga doble click sobre el para que pueda comenzar la instalacin e inmediatamente le aparecer un cuadro como este:

Presione con el mouse el botn"NEXT" para que contine con la


instalacin del MPLAB IDE. Seguidamente aparecer una pantalla que le preguntara que componentes desea instalar. Para nuestro caso, por favor seleccione las indicadas en la imagen.

Los componentes no seleccionados estn referidos a un programador


muy avanzado para sistemas de desarrollo. Este programador se llama PRO MATE. Los otros dos componentes estn referidos a emuladores.

Despus de haber seleccionado los componentes y deseleccionando los


otros, proceda a hacer doble click en el botn next para continuar la instalacin. Seguidamente aparece la siguiente imagen:

En la imagen anterior, hemos deseleccionado dos opciones referidas


al "DOS". Si usted piensa utilizar este programa en "DOS", por favor vuelva a seleccionar los componentes. Al finalizar vuela a hacer doble click en el botn"NEXT" para continuar la instalacin y aparece la siguiente pantalla:

En la imagen anterior, usted deber tan solo seleccionar con el


mouse el botn"NEXT" para el caso de que quiera que el software MPLAB IDE sea almacenado en un directorio denominado MPLAB dentro del directorio de Archivos de programa. Para el caso contrario, utilice el BROWSE para especificar un directorio diferente. Seguidamente aparece la siguiente pantalla:

En la imagen anterior, usted deber seleccionar "NO" y


seguidamente presione "NEXT" y le aparecer la siguiente pantalla:

En la imagen anterior se refiere a que el programa quiere instalar un


ICONO del MALAB en la pantalla del escritorio de su computador. Por practicidad usted deber decir que si y luego presionar "ENTER". Ahora le aparece la siguiente imagen:

En la imagen anterior, tan solo deje seleccionada la primera opcin y


seguidamente presione ENTER. para que los archivos sean instalados en el directorio de MPLAB seleccionado anteriormente. Finalmente vuelva a presionar ENTER para las siguientes dos pantallas y el programa comenzara la instalacin.

Ahora tenemos el MPLAB instalado en nuestro computador para


comenzar a escribir nuestros programas.

De aqu en adelante tenemos a dos grupos de personas segn el tipo de


programador que disponga: El primer grupo estar referida a aquellas personas que tengan a disposicin un programador PICSTART PLUS.

El segundo grupo estar inclinado para aquellas personas que


dispongan de un entrenador para microcontroladores PIC16F84 denominado PROMASTER 84.

Esta subdivisin tiene una explicacin importante ya que las


personas que dispongan de un PICSTART PLUS podrn utilizar el software MPLAB desde un principio hasta el final, es decir, podrn escribir su programa fuente, podrn copilarlo y finalmente lo podrn programar con el mismo equipo. Las personas que dispongan del PROMASTER 84 tendrn que programar el microcntrolador con un software diferente que esta suministrado con el equipo.

4.1 ACTIVANDO EL MPLAB IDE:


Estamos listos para comenzar a trabajar con el MPLAB IDE; para ello haga doble Click en el Icono del MPLAB. Cuando el MPLAB se instala en su computador, crea dos ICONOS diferentes, usted debera hacer doble Click en el Icono de color Rojo la cual

llamara al programa principal del MPLAB, el Icono de color blanco sera explicado posteriormente.

Cuando usted Hace Doble Click en el Icono del MPLAB automaticamente se carga el programa y usted observara la siguiente pantalla:

Seguidamente usted se ubicara con el mouse en "FILE" para que el menu sea desplegado y seleccione "NEW"

Вам также может понравиться