You are on page 1of 35

PIC 16F84

Julin Martn Moreira Trabajo sobre el Pic 16F84 2 2 - 2004

INDICE
1) INTRODUCCIN 2) PATILLAJE 3) PIC - FUNCIONAMIENTO INTERNO
- ARQUITECTURA

4) INSTRUCCIONES DE PROGRAMACIN

INTRODUCCIN
El PIC 16F84 es un microcontrolador, es decir un computador completo pero de limitadas prestaciones, insertado en un chip de circuito integrado y con la fundamental caracterstica de ser programable, se utiliza para controlar una sola tarea mediante el programa introducido y que alberga en su memoria. La familia de los microcontroladores PIC sali al mercado en el ao 1985 de mano de la empresa Microchip Technology. Esta familia incluye un gran nmero de microcontroladores, entre ellos el 16F84. Su aplicacin hoy da es casi ilimitada y podemos encontrar uno para una necesidad concreta por lo cual tambin podemos encontrar infinidad de campos de trabajo de diseo y fabricacin, por ejemplo: La industria informtica acapara gran parte de los microcontroladores que se fabrican

Los electrodomsticos de lnea blanca y de lnea marrn.


Los sistemas de supervisin, vigilancia y alarma los utilizan para optimizar el rendimiento de calefaccin, alarmas, etc.

Las comunicaciones y sus transferencias de informacin.


La aplicacin en automocin en frenos, climatizacin, seguridad, etc. Las industrias de todo tipo los aplican en sus sistemas de automatizacin, supervisin, seguridad y ms aplicaciones que se encuentran cada da.

La gran aceptacin del 16F84 se deben en gran medida a la facilidad de programacin, su reducido coste y su probada fiabilidad e incluso durabilidad ya que puede resistir el borrado y grabado 10.000 veces aproximadamente.

PATILLAJE PIC 16F84

La funcin de cada patilla es:


Patillas 1,2,3,17 y 18 RA0-RA4 : Es el Port A de 5 lneas bidireccionales de E\S. Es capaz de entregar niveles TTL cuando la tensin aplicada a VDD es de 5V. La patilla RA4 como entrada puede programarse en funcionamiento normal o como entrada del temporizador\contador TMR0. Patilla 4 MLCR / Vpp: Es un pin de mltiples aplicaciones, es la entrada de Reset si est a nivel bajo y tambin es la habilitacin de la tensin de programacin cuando se est programando el dispositivo. Cuando su tensin es la de VDD el PIC funciona normalmente. Patillas 5 y 14 VSS y VDD: Son respectivamente las patas de masa y alimentacin. La tensin de alimentacin del 16F84 es de 5V aunque puede estar comprendida entre 2V y 6V.

Patillas 6, 7, 8, 9, 10, 11, 12, 13 RB0-RB7: Es el PORT B. Corresponden a 8 lneas bidireccionales de E/S. Pueden manejar niveles TTL cuando la tensin de alimentacin aplicada en VDD es de 5V +/- 5%. RB0 puede programarse adems como entrada de interrupciones externas INT. Los pines de RB4 a RB7 pueden programarse para responder a interrupciones por cambio de estado. Las lneas RB6 y RB7 se corresponden con las lneas de entrada de reloj y entrada de datos respectivamente, cuando est en modo programacin del integrado. Patillas 15 y 16 OSC1/CLKIN y OSC2/CLKOUT. Corresponden a los pines de la entrada externa de reloj y salida de oscilador a cristal respectivamente. El PIC 16F84 contiene todas las partes de un computador en su interior y son las siguientes:

1)Procesador:
De arquitectura Harvard para conseguir elevados rendimientos en el procesamiento de las instrucciones frente a los tradicionales procesadores que utilizaban la arquitectura Von neumann.

2) Memoria no voltil para contener el programa:


Hay 5 tipos: 1- ROM: Se graba durante la fabricacin del chip, costes altos, solo viable cuando se produce en serie.

2- EPROM: Se graba con un dispositivo mediante un ordenador, se borra con rayos UV para reprogramarse.
3- OTP: Se graba igual que la EPROM pero esta no se puede borrar. 4- EEPROM: La grabacin se realiza como la EPROM, es decir elctricamente y el borrado se realiza igual que la grabacin. Esta es la que utiliza el PIC 16F84. 5- FLASH: Posee las mismas caractersticas que la EEPROM pero el consumo es mucho menor y la capacidad de almacenamiento es mucho mayor.

3)Memoria de lectura y escritura para guardar los datos:


Aunque algunos microcontroladores utilizan una memoria RAM esttica, el 16F84 dispone de una memoria de datos del tipo EEPROM, y de esta forma aunque haya un corte de suministro en la alimentacin no se pierde la informacin y se puede reiniciar el programa.

4)Lneas de E\S para los controladores perifricos:


El PIC 16F84 tiene 18 patillas, dos para alimentacin, dos para el cristal de cuarzo y una para el reset, el resto sirven para la comunicacin del PIC con los perifricos. Se dividen en dos puertas, A y B.

5)Recursos auxiliares:
Circuito de reloj: Genera los impulsos que sincronizan el funcionamiento de todo el sistema.

Temporizadores: Necesarios para controlar tiempos. Perro guardin: Es el encargado de provocar una reinicializacin cuando el programa queda bloqueado. Conversores AD y DA: Permite enviar y recibir seales analgicas. Comparadores analgicos: Para verificar el valor de una seal analgica. Estado de reposo o de bajo consumo: En el que el sistema queda <congelado> y el consumo de energa se reduce al mximo.

La arquitectura interna del 16F84 incorpora tres caractersticas avanzadas de los grandes computadores como son el procesador tipo RISC, procesador segmentado y arquitectura Harward ya nombrada anteriormente. La arquitectura consta de 7 bloques que se muestran en la figura siguiente.

Los bloques de la arquitectura del procesador del PIC 16F84 son los siguientes:
1- Memoria de programa EEPROM de 1 K x 14 bits 2- Memoria de datos formada por dos reas. Una RAM de 58 registros y la otra EEPROM de 64 bytes. 3- Lnea de datos con una ALU de 8 bits y un registro de trabajo que recibe un operando y enva un resultado. El otro operando puede provenir del bus de datos o del propio cdigo de la instruccin. 4- Diversos recursos conectados al bus de datos, tales como Puertas de E/S, Temporizador TMR0,etc. 5- Base de tiempos y recursos auxiliares. 6- Direccionamiento de la memoria de programa en base al contador de programa ligado a una pila de 8 niveles de profundidad. 7- Direccionado directo e indirecto de la memoria RAM.

Memoria de programa:
El mapa de memoria de programa es capaz de contener 8.192 instrucciones de 14 bits cada una. El PIC 16F84 solo tiene implementadas 1 K posiciones, como se ver en la figura de la siguiente diapositiva, por lo que ignora los 3 bits de ms peso del contador de programa. El contador de programa est implementado sobre un par de posiciones de la memoria RAM. Los 8 bits de menos peso del PC residen en el registro PCL que ocupa la posicin de los dos bancos de memorias de datos. Los bits de ms peso residen en los 5 bits de menos peso del registro PCLATH, que ocupa la posicin 0A H de los dos bancos de la memoria RAM. Con los dos bits ms significativos del PC se apunta a una de las 4 pginas de 2 K del mapa de memoria. Pila caracterizada por ser zona aislada de las memorias de instrucciones y datos, tener estructura LIFO, 8 niveles de profundidad cada uno con 13 bits y posee un buffer circular.

CONTADOR DE PROGRAMA

Memoria de datos RAM


Se divide en dos zonas distintas: 1- RAM esttica o SRAM, donde residen los Registros Especficos con 24 posiciones de tamao byte, aunque dos de ellas no son operativas y los Registros de propsito general con 68. La RAM del 16F84 se halla dividida en dos bancos, 1 y 0, de 128 bytes cada uno. 2- EEPROM de 64 bytes donde de forma opcional se pueden almacenar datos que no se pierden al desconectar la alimentacin.

Direccionamiento de la memoria de datos: En los PIC de la gama media la memoria de datos est organizada para alojar un mximo de 4 bancos de 128 bytes cada uno. El 16F84 solo tiene implementados los bancos 0 y 1. Se toman 9 bits para seleccionar una localidad en la memoria de bits como se ve en la siguiente figura.

MAPA DE REGISTROS

Registro STATUS:
Contiene el estado aritmtico de la ALU, el estado del reset y los bits para la seleccin del banco.

Registro OPTION:
Contiene varios bits de control para configurar el divisor de frecuencia o prescaler del TMR0/WDT, la interrupcin externa INT, TMR0 y los pull-ups en el PORTB

Registro INTCON
Contiene los bits para habilitar cada una de las fuentes de interrupcin.

INSTRUCCIONES PARA PROGRAMAR EL PIC 16F84 EN CODIGO ENSAMBLADOR:


Los microcontroladores como el 16F84 disponen de un juego de 35 instrucciones. Cada instruccin se codifica empleando 14 bits. Dentro de estos 14 bits se incluye el cdigo que identifica cada instruccin (cdigo OP) as como los operandos que entran en juego durante su ejecucin. Existen tres tipos de instrucciones: Instrucciones de manipulacin de byte Instrucciones de manipulacin de bit Instrucciones de control o con operando inmediato (literal) En las siguientes tablas se describe el juego de instrucciones.

instruccin

Descripcin
Suma el contenido del registro W al contenido del registro F, y almacena el resultado en W si d=0 y en el registro F si d=1. Si se produce acarreo el flag C se pone a 0. Realiza la operacin AND lgico entre el contenido del registro W y el contenido del registro F , y almacena el resultado en W si d=0 y en F si d=1. Se borra el contenido del registro F y el flag Z se activa ponindose a 1

Cdigo op

ADDWF f,d

00 0111 dfff ffff

ANDWF f,d

00 0101 dfff ffff

CLRF f

00 0001 1fff ffff

CLRW

El registro de trabajo W se carga con 00h. El flag Z se pone a 1.

00 0001 0000 0011

COMF f,d

Realiza el complemento a 1 del contenido del registro f bit a bit. El resultado se almacena en el registro f si d=1 y en el registro W si d=0, en este caso f no varia. Se decrementa el contenido del registro f en una unidad. El resultado se almacena en f si d=1 y en W si d=0, en este caso f no varia.

00 1001 dfff ffff

DECF f,d

00 0011 dfff ffff

Decrementa el contenido del registro f DECFSZ f,d en una unidad, el resultado se almacena en f si d=1 y en W si d=0, en este caso f no vara. Si el resultado del decremento es 0, se ignora la siguiente instruccin y en este caso la instruccin tiene una duracin de dos ciclos.

00 1011 dfff ffff

INCF f,d

Se incrementa en una unidad el contenido del registro f, si d=1 el resultado se almacena en f, si d=0 el resultado se almacena en w, en este caso el resultado de f no vara.

00 1010 dfff ffff

INCFSZ f,d

Decrementa en una unidad el contenido de f, el resultado se almacena en f si d=1 y en w si d=0, en este caso f no vara. Si el resultado del decremento es 0, se ignora la siguiente instruccin y en este caso la instruccin tiene una duracin de dos ciclos.
El contenido del registro f se carga en el registro destino dependiendo del valor de d. Si d=0 el destino es el registro w, si d=1 el destino es el propio registro f . Esta instruccin permite verificar dicho registro ya que el flag Z queda afectado.

00 1111 dfff ffff

MOVF f,d

00 1000 dfff ffff

IORWF f,d

Efecta la operacin lgica OR entre los contenidos de los registros w y f, y almacena el resultado en f si d=1 y en w si d=0. Mueve el contenido del registro W al registro f. No realiza ninguna operacin, consume un ciclo de reloj sin hacer nada. Rotacin de un bit a la izquierda del contenido del registro f, pasando por el bit de acarreo C. Si d=1 el resultado se almacena en f, si d=0 el resultado se almacena en w. Rotacin de un bit a la derecha del contenido del registro f, pasando por el bit de acarreo C. Si d=1 el resultado se almacena en f, si d=0 el resultado se almacena en w.

00 0100 dfff ffff

MOVWF f

00 0000 dfff ffff

NOP

00 000 0xx0 0000

RLF f,d

00 1101 dfff ffff

RRF f,d

00 1100 dfff ffff

SUBWF f,d

Resta por complemento a dos el contenido del registro f menos el contenido del registro W y almacena el resultado en W si d = 0 y en f si d = 1. Los cuatro bits de mas peso del registro f se intercambian con los cuatro bits de menos peso del mismo registro. Si d = 0 el resultado se almacena en W y si d = 1 se almacena en f.
Realiza la operacin OR exclusiva entre el contenido del registro W y la constante k de 8 bits, el resultado se almacena en W.

00 0010 dfff ffff

SWAPF, f,d

00 1110 dfff ffff

XORWF f,d

00 0110 dfff ffff

BCF f,d
BSF f,d

Pone a 0 el bit nmero b del registro f.


Pone a 1 el bit nmero b del registro f.

01 00bb bfff ffff


01 01bb bfff ffff

BTFSC f,d

Si el bit b del registro f es cero, la instruccin que sigue a esta se ignora y se trata como un NOP. En este caso esta instruccin necesita dos ciclos para ejecutarse.
Si el bit b del registro f es uno, la instruccin que sigue a esta se ignora y se trata como un NOP. En este caso la instruccin necesita dos ciclos para ejecutarse. Suma el contenido del registro W al literal k , y almacena el resultado en W. Si se produce acarreo el flag C se pone a 1. Realiza la operacin AND lgico entre el contenido del registro W y el literal k, el resultado se almacena en W.

01 10bb bfff ffff

BTFSS f,d

01 11bb bfff ffff

ADDL W K

11 111x kkkk kkkk

ANDL W K

11 1001 kkkk kkkk

CALL K

Llamada a subrutina cargada previamente en el PC. Antes guarda la direccin de vuelta en la pila.
Borra el registro WDT o Watchdog y su preescaler. Los bits #TO y #PD del registro de estado se ponen a 1. Salto incondicional, se utiliza normalmente para para llamar a la subrutina situada en la direccin que se carga en el PC. Realiza la operacin lgica OR entre el contenido del registro W y el literal k. El resultado se almacena en el registro W.

10 0kkk kkkk kkkk

CLRWDT

00 000 0110 0100

GOTO K

10 1kkk kkkk kkkk

IORL W K

11 1000 kkk kkkk

MOVL W K

El registro W se carga con el valor de 8 bits del literal k.


Carga el PC con el valor que se encuentra en la parte alta de la pila, asegurando as la vuelta de la interrupcin. Pone a 1 el bit GIE, con el fin de autorizar de nuevo que se tengan en cuenta las interrupciones. Carga el registro W con el literal k, y despus carga el PC con el valor que se encuentra en la parte superior de la PILA, efectuando as un retorno de subrutina. Carga el PC con el valor que se encuentra en la parte superior de la PILA, efectuando as un retorno de subrutina.

11 00xx kkkk kkkk

RETFIE

00 0000 0000 1001

RETLW K

11 01xx kkkk kkkk

RETURN

00 0000 0000 1000

SLEEP

Pone al microcontrolador en modo stand by con parada del oscilador. El flag #PD se pone a 0 y el flag #TO se pone a 1. Se puede salir por: 1- Activacin de mclr# para provocar un reset. 2- Desbordamiento del watchdog si quedo activado. 3- Generacin de una interrupcin que no sea TMRO ya que esta se desactiva con la instruccin SLEEP. Resta por el mtodo de complemento s dos del contenido del literal k al contenido del registro W, y almacena en resultado en W. Realiza la operacin OR- exclusiva entre el contenido del registro W y la constante k de 8 bits. El resultado se almacena en W.

00 0000 0110 0011

SUBLW K

11 1100x kkkk kkkk

XORLW K

11 1010 kkkk kkkk

Estas son las instrucciones necesarias para programar el PIC 16F84 y se realizan mediante programas informticos, por ejemplo el MPLAB en el que se escribe el cdigo y adems te permite hacer una simulacin y ver el estado de los registros, las puertas y las variables. Cuando se tiene el cdigo se introduce en el chip insertando ste en un programador y conectndolo al puerto serie o paralelo del PC. Mediante un programa informtico se realiza la comunicacin con el programador, el IC-PROG se utiliza si el programador est conectado al puerto serie y el PICME micro trainer si est conectado al puerto paralelo.

___________________________________________________________

You might also like