el pic16f84a

Upload: carlos-geovanni-valladares-henriquez

Post on 07-Apr-2018

230 views

Category:

Documents


1 download

TRANSCRIPT

  • 8/3/2019 El PIC16F84A

    1/45

    El PIC16F84A

    ndice de contenidos

    El PIC16F84Ao ndice de contenidoso Caractersticas del PIC16F84Ao Disposicin y descripcin de patillas

    Disposicin de patillas Descripcin de patillas

    o Arquitectura internao Memoria de programao Memoria de datoso El direccionamiento

    Direccionamiento Inmediato Direccionamiento Directo

    Direccionamiento bit a bit Direccionamiento Indirecto

    o Memoria de datos EEPROMo Uso de la EEPROM

    Lectura de la memoria EEPROM Escritura de la memoria EEPROM Verificacin de la escritura Rutinas EEPROM

    o Puertos de E/S Puerto A Puerto B Configuracin de los puertos de Entrada/Salida Limite de corriente para los puertos

    o Temporizador/Contador TMR0 El Prescaler

    o Encapsulado y marcado del PIC16F84A

    DISPOSITIVOS LGICOS MICROPROGRAMABLES El PIC16F84A 5.2

    Caractersticas del PIC16F84A

    En esta parte estudiaremos la estructura del PIC16F84A con el fin de entender mejor sufuncionamiento. Empezaremos con una relacin de sus principales caractersticas:

    Repertorio de 35 Instrucciones. Todas las instrucciones se ejecutan en un solo ciclo excepto las de salto que

    necesitan dos. Versiones para bajo consumo (16LF84A), de 4 MHz (PIC16F84A-04) y 20

    MHz (PIC16F84A-20). Un ciclo mquina del PIC son 4 ciclos de reloj, por lo

    http://perso.wanadoo.es/pictob/micropic16f84.htm#el_pic16f84ahttp://perso.wanadoo.es/pictob/micropic16f84.htm#el_pic16f84ahttp://perso.wanadoo.es/pictob/micropic16f84.htm#indice_de_contenidoshttp://perso.wanadoo.es/pictob/micropic16f84.htm#indice_de_contenidoshttp://perso.wanadoo.es/pictob/micropic16f84.htm#caracteristicas_del_pic16f84ahttp://perso.wanadoo.es/pictob/micropic16f84.htm#caracteristicas_del_pic16f84ahttp://perso.wanadoo.es/pictob/micropic16f84.htm#disposicion_y_descripcion_de_patillashttp://perso.wanadoo.es/pictob/micropic16f84.htm#disposicion_y_descripcion_de_patillashttp://perso.wanadoo.es/pictob/micropic16f84.htm#disposicion_de_patillashttp://perso.wanadoo.es/pictob/micropic16f84.htm#disposicion_de_patillashttp://perso.wanadoo.es/pictob/micropic16f84.htm#descripcion_de_patillashttp://perso.wanadoo.es/pictob/micropic16f84.htm#descripcion_de_patillashttp://perso.wanadoo.es/pictob/micropic16f84.htm#arquitectura_internahttp://perso.wanadoo.es/pictob/micropic16f84.htm#arquitectura_internahttp://perso.wanadoo.es/pictob/micropic16f84.htm#memoria_de_programahttp://perso.wanadoo.es/pictob/micropic16f84.htm#memoria_de_programahttp://perso.wanadoo.es/pictob/micropic16f84.htm#memoria_de_datoshttp://perso.wanadoo.es/pictob/micropic16f84.htm#memoria_de_datoshttp://perso.wanadoo.es/pictob/micropic16f84.htm#el_direccionamientohttp://perso.wanadoo.es/pictob/micropic16f84.htm#el_direccionamientohttp://perso.wanadoo.es/pictob/micropic16f84.htm#direccionamiento_inmediatohttp://perso.wanadoo.es/pictob/micropic16f84.htm#direccionamiento_inmediatohttp://perso.wanadoo.es/pictob/micropic16f84.htm#direccionamiento_directohttp://perso.wanadoo.es/pictob/micropic16f84.htm#direccionamiento_directohttp://perso.wanadoo.es/pictob/micropic16f84.htm#direccionamiento_bit_a_bithttp://perso.wanadoo.es/pictob/micropic16f84.htm#direccionamiento_bit_a_bithttp://perso.wanadoo.es/pictob/micropic16f84.htm#direccionamiento_indirectohttp://perso.wanadoo.es/pictob/micropic16f84.htm#direccionamiento_indirectohttp://perso.wanadoo.es/pictob/micropic16f84.htm#memoria_de_datos_eepromhttp://perso.wanadoo.es/pictob/micropic16f84.htm#memoria_de_datos_eepromhttp://perso.wanadoo.es/pictob/micropic16f84.htm#uso_de_la_eepromhttp://perso.wanadoo.es/pictob/micropic16f84.htm#uso_de_la_eepromhttp://perso.wanadoo.es/pictob/micropic16f84.htm#lectura_de_la_memoria_eepromhttp://perso.wanadoo.es/pictob/micropic16f84.htm#lectura_de_la_memoria_eepromhttp://perso.wanadoo.es/pictob/micropic16f84.htm#escritura_de_la_memoria_eepromhttp://perso.wanadoo.es/pictob/micropic16f84.htm#escritura_de_la_memoria_eepromhttp://perso.wanadoo.es/pictob/micropic16f84.htm#verificacion_de_la_escriturahttp://perso.wanadoo.es/pictob/micropic16f84.htm#verificacion_de_la_escriturahttp://perso.wanadoo.es/pictob/micropic16f84.htm#rutinas_eepromhttp://perso.wanadoo.es/pictob/micropic16f84.htm#rutinas_eepromhttp://perso.wanadoo.es/pictob/micropic16f84.htm#puertos_de_e_shttp://perso.wanadoo.es/pictob/micropic16f84.htm#puertos_de_e_shttp://perso.wanadoo.es/pictob/micropic16f84.htm#puerto_ahttp://perso.wanadoo.es/pictob/micropic16f84.htm#puerto_ahttp://perso.wanadoo.es/pictob/micropic16f84.htm#puerto_bhttp://perso.wanadoo.es/pictob/micropic16f84.htm#puerto_bhttp://perso.wanadoo.es/pictob/micropic16f84.htm#configuracion_de_los_puertos_de_entrada_salidahttp://perso.wanadoo.es/pictob/micropic16f84.htm#configuracion_de_los_puertos_de_entrada_salidahttp://perso.wanadoo.es/pictob/micropic16f84.htm#limite_de_corriente_para_los_puertoshttp://perso.wanadoo.es/pictob/micropic16f84.htm#limite_de_corriente_para_los_puertoshttp://perso.wanadoo.es/pictob/micropic16f84.htm#temporizador_contador_tmr0http://perso.wanadoo.es/pictob/micropic16f84.htm#temporizador_contador_tmr0http://perso.wanadoo.es/pictob/micropic16f84.htm#el_prescalerhttp://perso.wanadoo.es/pictob/micropic16f84.htm#el_prescalerhttp://perso.wanadoo.es/pictob/micropic16f84.htm#encapsulado_y_marcado_del_pic16f84ahttp://perso.wanadoo.es/pictob/micropic16f84.htm#encapsulado_y_marcado_del_pic16f84ahttp://perso.wanadoo.es/pictob/micropic16f84.htm#encapsulado_y_marcado_del_pic16f84ahttp://perso.wanadoo.es/pictob/micropic16f84.htm#el_prescalerhttp://perso.wanadoo.es/pictob/micropic16f84.htm#temporizador_contador_tmr0http://perso.wanadoo.es/pictob/micropic16f84.htm#limite_de_corriente_para_los_puertoshttp://perso.wanadoo.es/pictob/micropic16f84.htm#configuracion_de_los_puertos_de_entrada_salidahttp://perso.wanadoo.es/pictob/micropic16f84.htm#puerto_bhttp://perso.wanadoo.es/pictob/micropic16f84.htm#puerto_ahttp://perso.wanadoo.es/pictob/micropic16f84.htm#puertos_de_e_shttp://perso.wanadoo.es/pictob/micropic16f84.htm#rutinas_eepromhttp://perso.wanadoo.es/pictob/micropic16f84.htm#verificacion_de_la_escriturahttp://perso.wanadoo.es/pictob/micropic16f84.htm#escritura_de_la_memoria_eepromhttp://perso.wanadoo.es/pictob/micropic16f84.htm#lectura_de_la_memoria_eepromhttp://perso.wanadoo.es/pictob/micropic16f84.htm#uso_de_la_eepromhttp://perso.wanadoo.es/pictob/micropic16f84.htm#memoria_de_datos_eepromhttp://perso.wanadoo.es/pictob/micropic16f84.htm#direccionamiento_indirectohttp://perso.wanadoo.es/pictob/micropic16f84.htm#direccionamiento_bit_a_bithttp://perso.wanadoo.es/pictob/micropic16f84.htm#direccionamiento_directohttp://perso.wanadoo.es/pictob/micropic16f84.htm#direccionamiento_inmediatohttp://perso.wanadoo.es/pictob/micropic16f84.htm#el_direccionamientohttp://perso.wanadoo.es/pictob/micropic16f84.htm#memoria_de_datoshttp://perso.wanadoo.es/pictob/micropic16f84.htm#memoria_de_programahttp://perso.wanadoo.es/pictob/micropic16f84.htm#arquitectura_internahttp://perso.wanadoo.es/pictob/micropic16f84.htm#descripcion_de_patillashttp://perso.wanadoo.es/pictob/micropic16f84.htm#disposicion_de_patillashttp://perso.wanadoo.es/pictob/micropic16f84.htm#disposicion_y_descripcion_de_patillashttp://perso.wanadoo.es/pictob/micropic16f84.htm#caracteristicas_del_pic16f84ahttp://perso.wanadoo.es/pictob/micropic16f84.htm#indice_de_contenidoshttp://perso.wanadoo.es/pictob/micropic16f84.htm#el_pic16f84a
  • 8/3/2019 El PIC16F84A

    2/45

    cual si tenemos un PIC con un cristal de 4 MHz, se ejecutarn 1 milln deinstrucciones por segundo.

    Memoria de programa Flash de 1 K x 14 bits. Memoria RAM dividida en 2 reas: 22 registros de propsito especfico (SFR) y

    68 de propsito general (GPR) como memoria de datos. 15 registros de funciones especiales. Memoria de datos RAM de 68 bytes (68 registros de proposito general). Memoria de datos EEPROM de 64 bytes. Contador de programa de 13 bit (lo que en teora permitira direccionar 4 KB de

    memoria, aunque el 16F84 solo dispone de 1KB de memoria implementada). Pila con 8 niveles de profundidad. Modos de direccionamiento directo, indirecto y relativo. ALU de 8 bits y registro de trabajo W del que normalmente recibe un operando

    que puede ser cualquier registro, memoria, puerto de Entrada/Salida o el propiocdigo de instruccin.

    4 fuentes de interrupciones:o A travs del pin RB0/INT.o Desbordamiento del temporizador TMR0.o Interrupcin por cambio de estado de los pins 4:7 del Puerto B.o Completada la escritura de la memoria EEPROM.

    1.000.000 de ciclos de borrado/escritura de la memoria EEPROM. 40 aos de retencin de la memoria EEPROM. 13 pins de E/S con control individual de direccin. PortA de 5 bits . PortB de 8 bits . Contador/Temporizador TMR0 de 8 bits con divisor programable. Power-on Reset (POR). Power-up Timer (PWRT). Oscillator Start-up Timer (OST). Watchdog Timer (WDT). Proteccin de cdigo. Modo de bajo consumo SLEEP. Puede operar bajo 4 modos diferentes de oscilador. Programacin en serie a travs de dos pins. Tecnologa de baja potencia y alta velocidad CMOS Flash/EEPROM. Caractersticas elctricas mximas (no deben ser superadas y de mantenerse por

    un tiempo en algn mximo puede daarse al PIC)

    o

    Temperatura ambiente mxima para funcionamiento de -55C to+125C.o Tensin mxima de VDD respecto a VSS de -0,3 a +7,5V.o Tensin de cualquier patilla con respecto a VSS (excepto VDD, MCLR,

    y RA4) de -0,3V a (VDD + 0.3V).o Tensin en MCLR con respecto a VSS -0,3 a +14V.o Tensin en RA4 con respecto a VSS -0,3 a +8,5V.o Disipacin de potencia total de 800 mW.o Mxima corriente de salida a VSS 150 mA.o Mxima corriente de salida de VDD 100 mA.o Mxima corriente del puerto "A" como fuente, 50 mA.o Mxima corriente del puerto "A" como sumidero, 80 mA.o Mxima corriente del puerto "B" como fuente, 100 mA.

  • 8/3/2019 El PIC16F84A

    3/45

    o Mxima corriente del puerto "B" como sumidero, 150 mA.o Mxima corriente que puede suministrar una sla salida como fuente o

    sumidero, 25 mA. Rango de alimentacin:

    o 16LF84A: de 2 a 5,5 V en configuracin de oscilador XT, RC y LP.o 16F84A:

    de 4 a 5,5 v en configuracin de oscilador XT, RC y LP. de 4,5 a 5.5 v en configuracin de oscilador HS.

    Consumo tpico:o 16LF84A:

    de 1 a 4 mA en configuracin de oscilador RC y XT (FOSC=2MHz, VDD=5,5V).

    de 15 a 45 A en configuracin de oscilador LP (FOSC=32kHz,VDD=2V, WDT deshabilitado).

    o 16F84A: de 1,8 a 4.5 mA en configuracin de oscilador RC y XT

    (FOSC=4 MHz, VDD=5,5V). de 3 a 10 mA en configuracin de oscilador RC y XT durante la

    programacin de la FLASH (FOSC=4MHz, VDD=5,5V).o 16F84A-20: de 10 a 20 mA en configuracin de oscilador HS (FOSC=20

    MHz, VDD=5,5V).

    Para mantener la informacin sobre PIC actualizada es necesario obtener el archivo enPDF que se puede encontrar enwww.microchip.com. Tambin puede encontrarse comoanexo 3 el archivopic16f84a.pdf, en ingls.

    DISPOSITIVOS LGICOS MICROPROGRAMABLES El PIC16F84A 5.3

    Disposicin y descripcin de patillas

    Disposicin de patillas

    Disposicin de patillas para encapsulado DIL 18:

    http://www.microchip.com/http://www.microchip.com/http://www.microchip.com/http://perso.wanadoo.es/pictob/pdf/pic16f84a.pdfhttp://perso.wanadoo.es/pictob/pdf/pic16f84a.pdfhttp://perso.wanadoo.es/pictob/pdf/pic16f84a.pdfhttp://perso.wanadoo.es/pictob/pdf/pic16f84a.pdfhttp://www.microchip.com/
  • 8/3/2019 El PIC16F84A

    4/45

    Descripcin de patillas

    Nombre N Tipo Descripcin

    OSC1/CLKIN 16 IEntrada del oscilador a cristal/Entrada de la fuente de

    reloj externa

    OSC2/CLKOUT 15 OSalida del oscilador a cristal. En el modo RC, es unasalida con una frecuencia de OSC1

    MCLR 4 I/P Reset/Entrada del voltaje de programacin.

    RA0 17 I/O Puerto A bidireccional, bit 0

    RA1 18 I/O Puerto A bidireccional, bit 1

    RA2 1 I/O Puerto A bidireccional, bit 2

    RA3 2 I/O Puerto A bidireccional, bit 3RA4/T0CKI 3 I/O Tambin se utiliza para la entra de reloj para el TMR0

    RB0/INT 6 I/OPuerto B bidireccional, bit 0Puede seleccionarse para entrada de interrupcin externa

    RB1 7 I/O Puerto B bidireccional, bit 1

    RB2 8 I/O Puerto B bidireccional, bit 2

    RB3 9 I/O Puerto B bidireccional, bit 3

    RB4 10 I/O Puerto B bidireccional, bit 4Interrupcin por cambio de estado

  • 8/3/2019 El PIC16F84A

    5/45

    RB5 11 I/OPuerto B bidireccional, bit 5Interrupcin por cambio de estado

    RB6 12 I/OPuerto B bidireccional, bit 6Interrupcin por cambio de estado

    RB7 13 I/OPuerto B bidireccional, bit 7Interrupcin por cambio de estado

    Vss 5 P Tierra de referencia

    Vdd 14 P Alimentacin

    DISPOSITIVOS LGICOS MICROPROGRAMABLES El PIC16F84A 5.4

    Arquitectura internaLas altas prestaciones de los microcontroladores PIC derivan de las caractersticas de suarquitectura. Estn basados en una arquitectura tipo Harvard que posee buses y espaciosde memoria por separado para el programa y los datos, lo que hace que sean msrpidos que los microcontroladores basados en la arquitectura tradicional de VonNeuman.

    Otra caracterstica es su juego de instrucciones reducido (35 instrucciones) RISC, dondela mayora se ejecutan en un solo ciclo de reloj excepto las instrucciones de salto quenecesitan dos.

    Posee una ALU (Unidad Aritmtico Lgica) de 8 bits capaz de realizar operaciones dedesplazamientos, lgicas, sumas y restas. Posee un Registro de Trabajo (W) nodireccionable que usa en operaciones con la ALU.

  • 8/3/2019 El PIC16F84A

    6/45

  • 8/3/2019 El PIC16F84A

    7/45

    Dependiendo de la instruccin ejecutada, la ALU puede afectar a los bits de Acarreo ,Acarreo Digital (DC) y Cero (Z) del Registro de Estado (STATUS).

    La pila es de 8 niveles. No existe ninguna bandera que indique que est llena, por lo queser el programador el que deber controlar que no se produzca su desbordamiento.

    Este microcontrolador posee caractersitcas especiales para reducir componentesexternos con lo que se reducen los costos y se disminuyen los consumos. Posee 4

    diferentes modos de oscilador, desde el simple circuito oscilador RC con lo que sedisminuyen los costos hasta la utilizacin de un oscilador a cristal.

    En el modo SLEEP el consumo se reduce significativamente y puede despertarse al

    microcontrolador utilizando tanto interrupciones internas como externas y seal dereset. Adems posee la funcin Watchdog Timer (Perro Guardian) que protege al microde cuelgues debido a fallos software que produzcan bucles infinitos.

    DISPOSITIVOS LGICOS MICROPROGRAMABLES El PIC16F84A 5.5

    Memoria de programa

  • 8/3/2019 El PIC16F84A

    8/45

    La memoria de programa est organizada con palabras de 14 bits con un total de 1 K,del tipo Flash, que durante el funcionamiento es de solo lectura. Slo se ejecutar elcdigo contenido en esta memoria, pudiendo almacenar en ella una cantidad limitada dedatos como parte de la instruccin RETLW. En una sola palabra se agrupa el cdigo dela instruccin y el operando o su direccin.

    El tipo de memoria utilizada en este microcontrolador, podr ser grabada o borradaelctricamente a nuestro antojo desde el programador. La memoria tipo Flash tiene lacaracterstica de poderse borrar en bloques completos y no podrn borrarse posicionesconcretas o especficas. Este tipo de memoria no es voltil, es decir, no pierde los datossi se interrumpe la energa.

    DISPOSITIVOS LGICOS MICROPROGRAMABLES El PIC16F84A 5.6

    La memoria para almacenar el programa nos resultar perfecta para realizar pruebas yexperimentos, adems de para la programacin "on-board" o "in-circuit", esto es, nospermite la programacin del dispositivo o actualizacin del programa sin necesidad deretirarlo del circuito donde va montado.

  • 8/3/2019 El PIC16F84A

    9/45

    La memoria del programa comienza en la posicin 0000h y termina en la posicin03FFh. Esto es 1Kbyte, es decir, 1024 bytes (210).

    En la figura tambin se muestra el PC (Contador de Programa o Program Counter). Queapunta a la direccin de memoria de la instruccin en curso y permite que el programa

    avance cuando se incrementa.

    Tambin se muestra la pila o stack, de 8 niveles (Nivel Pila 1 a Nivel Pila 8). Se utilizacuando ejecutamos un subproceso o subrutina, es decir, un conjunto de instruccionesque hemos aislado de las dems para simplificar. En este caso el contador de programa(PC) dejar de incrementarse y apuntar a la posicin de memoria de programa dondeempieza la subrutina; en el primer nivel de la pila se almacenar esta llamada, hasta quese acaben de ejecutar las instrucciones que contiene, momento en el cual se seguir conlas instrucciones desde donde haba sido llamada. Por eso es necesario saber donde sequed el programa almacenndose la direccin en la pila. Podemos hacer hasta 8llamadas a subrutinas una dentro de otra, como si de muecas rusas se tratase. A esto se

    le llaman subrutinas anidadas.

    El vector de reset se encuentra en la posicin 0000h y el de interrupcin en la 0004h.

    Debido a que el PIC16F84A tiene un contador de programa de 13 bit puede direccionarun espacio de memoria de 8K x 14, sin embargo slo el primer 1K x 14 (0000h-03FFh)est implementado fsicamente.

    Tener acceso a una localizacin por encima de la direccin fsicamente implementadaproducir un solapamiento. Por ejemplo, para las localizaciones 20h, 420h , 820h,C20h, 1020h, 1420h, 1820h, y 1C20h, la direccin real ser la misma, as 20h es 32d y420h es 1056d, 1056d menos 1024d es igual a 32d, es decir, se direcciona realmente lalocalizacin 20h, en binario 20h es 100000b y 420h es 10000100000b, 1K se direccionacon 10 bits (210 = 1024) de manera que de 10000100000b si slo se tienen en cuenta 10bits queda 0000100000b que es 20h. Con esto debe quedar claro que despus de 3FF, alincrementarse el PC y pasar a 400, se direccionar de nuevo la posicin 0h

    Existen varias versiones de memoria de programa para los PIC16f84A:

    Versin Flash. Se trata de una memoria no voltil, de bajo consumo, que sepuede escribir y borrar. A diferencia de las memoria de tipo ROM, la memoria

    FLASH es programable en el circuito. Es ms rpida y de mayor densidad que laEEPROM. Esta versin es idnea para la enseanza y la Ingeniera de diseo. Versin OTP . ("One Time Programmable") "Programable una sola vez". Slo

    se puede grabar una vez por el usuario sin la posibilidad de borrar lo que segraba. Resulta mucho ms econmica en la implementacin de prototipos ypequeas series.

    Versin QTP. Es el propio fabricante el que se encarga de grabar el cdigo entodos los chips que configuran pedidos medianos y grandes.

    Versin SQTP. El fabricante solo graba unas pocas posiciones de cdigo paralabores de identificacin, numero de serie, palabra clave, checksum, etc.

    Las memorias FLASH han sustituido a las EEPROM y son muy tiles al permitir quelos microcontroladores que las incorporan puedan ser reprogramados "en circuito", es

  • 8/3/2019 El PIC16F84A

    10/45

    decir, sin tener que sacar el circuito integrado de la tarjeta. As, un dispositivo con estetipo de memoria incorporado al control del motor de un automvil permite que puedamodificarse el programa durante la rutina de mantenimiento peridico, compensandolos desgastes y otros factores tales como la compresin, la instalacin de nuevas piezas,etc. La reprogramacin del microcontrolador puede convertirse en una labor rutinaria

    dentro de la puesta a punto.

    DISPOSITIVOS LGICOS MICROPROGRAMABLES El PIC16F84A 5.7

    Memoria de datos

    Est organizada en dos pginas o bancos de registro, banco 0 y banco 1. Para cambiarde pgina se utiliza un bit del registro STATUS (RP0).

    Cada banco se divide a su vez en dos reas:

    RFS (Registros de Funciones Especiales) RGP (Registros de Propsito General)

    En la figura siguiente nos podemos hacer una idea de cmo estn distribuidos:

  • 8/3/2019 El PIC16F84A

    11/45

    DISPOSITIVOS LGICOS MICROPROGRAMABLES El PIC16F84A 5.8

    La primera es la de RFS (Registros de Funciones Especiales) que controlan elfuncionamiento del dispositivo. Estos se emplean para el control del funcionamiento dela CPU y de los perifricos.

    El segundo rea (68 bytes SRAM) es la de RGP (Registros de Propsito General), ypuede accederse a ellos tanto directa como indirectamente haciendo uso del registroFSR.

    Banco 0:

    Este banco est formado por 80 bytes, desde la posicin 00 hasta la 4Fh (de la 0a la 79).

    El rea RFS consta de 12 registros que sern utilizados por funciones especialesdel microcontrolador. Comienza en la direccin 00h y termina en la 0Bh, esdecir, de la 0 a la 11.

  • 8/3/2019 El PIC16F84A

    12/45

    El rea RGP consta de 68 registros de memoria RAM que sern utilizados paraalmacenar datos temporales requeridos por los programas. Comienza en ladireccin 0Ch y termina en la posicin 4Fh (de la 12 a la 79). Esta parte es lamemoria de registros de propsito general.

    Banco 1:

    Este banco tiene las mismas dimensiones que el anterior, pero su uso es menor,ya que no tiene banco para registros de propsito general. Solamente tiene unaseccin de registros especiales que van de la posicin 80h a la 8Bh ( de la 128 ala 139)

    La memoria RAM as como algunos registros especiales son los mismos en los dosbancos del mapa de memoria del PIC. La anchura de los bytes en la memoria es de 8bis.

    Para direccionar la memoria de datos se emplean dos modos de direccionamiento, eldirecto y el indirecto. En el direccionamiento directo, los 7 bits de menos peso delcdigo OP de la instruccin proporcionan la direccin en la posicin de la pgina,mientras que los bits RP1 y RP0 de STATUS seleccionan la pgina o banco.

    En el direccionamiento indirecto el operando de la instruccin hace referencia alregistro IDNF, que ocupa la posicin 00h del rea de datos. Se accede a la posicin queapunta el registro FSR 04h del banco 0. Los 7 bits de menos peso de FSR seleccionan laposicin y su bit de ms peso, junto con el bit IRP del registro de estado, seleccionan lapgina.

    Para ms informacin verRegistros del PIC16F84A.

    El direccionamiento

    Para el PIC solamente existen 4 modos de direccionamiento, entre los cuales, tres deellos ya fueron vistos de manera intuitiva cuando vimos las instrucciones. Los modos dedireccionamiento tratan sobre la forma de mover los datos de unas posiciones dememoria a otras.

    Direccionamiento Inmediato Direccionamiento Directo Direccionamiento bit a bit Direccionamiento Indirecto

    Direccionamiento Inmediato

    El dato manipulado por la instruccin se codifica con la propia instruccin. En estecaso, el dato en cuestin se denomina literal.

    MOVLW k ; Coloca el literal k, que es un valor cualquieracodificado con 8 bits, en el registro de trabajo w

    Direccionamiento Directo

    http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registros_del_pic16f84ahttp://perso.wanadoo.es/pictob/micropic16f84_2.htm#registros_del_pic16f84ahttp://perso.wanadoo.es/pictob/micropic16f84_2.htm#registros_del_pic16f84ahttp://perso.wanadoo.es/pictob/micropic16f84_2.htm#registros_del_pic16f84a
  • 8/3/2019 El PIC16F84A

    13/45

    La memoria interna se direcciona de forma directa por medio de los 8 bits "f"contenidos en las instrucciones que operan sobre registros. De esta manera se puededireccionar cualquier posicin desde la 00 a la FF.

    En los microcontroladores que tengan ms de un banco, antes de acceder a alguna

    variable que se encuentre en la zona de los bancos de registros, el programador deberasegurarse de haber programado los bits de seleccin de banco en el registro OPTION.

    Este es el modo ms utilizado, ya que como hemos visto anteriormente, la memoriaRAM est dividida en registros especficos y en un conjunto de registros de propsitogeneral. Este modo consiste en codificar el nombre del o de los registros en cuestindirectamente en la instruccin.

    MOVWF f ; Desplaza el contenido del registro w al registro f

    Direccionamiento bit a bit

    Mediante este direccionamiento se manipula un bit individual en cualquier registro. Estemodo de direccionamiento no se utiliza nunca solo, sino que siempre va emparejado conel modo de direccionamiento directo.

    BCF f,b ; Pone a cero el bit nmero b del registro f

    Direccionamiento Indirecto

    Es el modo ms potente y utiliza los registros INDF y FSR. En el registro FSR seintroduce la direccin del registro que se quiere leer cuando se acceda a INDF.

    FSR acta como puntero, es decir, el valor que guardemos en este registro ser ladireccin de una posicin de memoria. Si aumentamos o disminuimos con cualquieroperacin el contenido de FSR nos moveremos entre las posiciones de memoria.

    DISPOSITIVOS LGICOS MICROPROGRAMABLES El PIC16F84A 5.9

    El registro INDF no tiene existencia fsica, solamente est implementado en la posicin0 como modo de notacin. La utilidad de este registro no es otra que acceder a los datosapuntados por el registro FSR, para poder modificarlos, etc.

    Esto se ve mucho ms claro en los dos siguientes ejemplos. El primero de ellos es unpseudo-cdigo para acceder a la RAM, y el segundo es un algoritmo para limpiarla.

    Ejemplo 1:

    El registro 05 contiene el valor 10h.

    El registro 06 contiene el valor0A h.

    Cargamos el valor 05 en elregistro FSR.

    Incrementamos el registro FSR(FSR=FSR+1).

    Ahora apunta a la posicin 06. Si leemos el registro INDF, este

    retornar el valor 0A h.

  • 8/3/2019 El PIC16F84A

    14/45

    Ahora est apuntado el registro05.

    Si leemos el registro INDF, esteretornar el valor 10 h.

    INDF 10 h

    001 .

    002 .

    003 .

    FSR 05 h

    005 10 h

    006 0A h

    007 .

    008 .

    009 .

    00A .

    00B .

    INDF 0A h

    001 .

    002 .

    003 .

    FSR 06 h

    005 10 h

    006 0A h

    007 .

    008 .

    009 .

    00A .

    00B .

    Si leemos del registro INDF de manera indirecta (con FSR apuntndolo), el valor ledoser 00. Si escribimos en este registro de manera indirecta, obtendremos una no-operacin, aunque el registro estado se ver afectado.

    Ejemplo 2:

    Limpiar la memoria RAM desde la posicin 10 h a la 20 h.

    MOVLW 0X10 ; Inicializamos punteroMOVWF FSR

    NEXT CLRF INDF ; Limpiamos el registro apuntado

    INCF FSR ; Incrementamos el punteroBTFSS FSR,5 ; Los registros estan borrados?GOTO NEXT ; No, limpiar siguiente

    CONTINUAR ; Si, se continua con elprograma

    Existe un quinto modo de direccionamiento llamado direccionamiento relativo que notrataremos por que no est implementado en los PICs.

    Memoria de datos EEPROM

  • 8/3/2019 El PIC16F84A

    15/45

    Esta memoria est basada en tecnologa EEPROM, y tiene una longitud de 8 bits, delmismo modo que la memoria de datos. Su tamao es de 64 bytes y est situada en unbloque distinto y aislado de la de datos.

    Los 64 bytes EEPROM de Memoria de Datos no forman parte del espacio normal

    direccionable, y slo es accesible en lectura y escritura a travs de dos registros, para losdatos el EEDATA que se encuentra en la posicin 0008h del banco de registros RAM ypara las direcciones el EEADR en la 0009h. Para definir el modo de funcionamiento deesta memoria se emplean dos registros especiales, el EECON1 en la direccin 0088h yel EECON2 en 0089h.

    Registros que se utilizan con la EEPROM:

    Registro EEDATA (08h): Registro de Datos, lectura/escritura 8 bits Registro EEADR (09h): Registro de Direccin, de 0h a 3Fh, 64 bytes Registro EECON1 (88h): Registro de Control 1 Registro EECON2 (89h): Registro de Control 2 (no es un registro fsico)

    Esta memoria no emplea ningn recurso externo de alimentacin. Puede grabarse desdeun programador de PIC al igual que el cdigo de programa.

    La lectura de una posicin de la memoria se obtiene en el registro EEDATA en elprximo ciclo de reloj, si bien podra tardar algo mas.

    La escritura es mucho mas lenta, tardandose del orden de unos 8 ms. Esta se controlamediante un temporizador interno.

    Resumen de caractersticas:

    Memoria de datos de 64 bytes. Lectura rpida de un byte (en el tiempo de uno o varios ciclos de instruccin). Escritura de un byte en unos 8 ms. Se genera una interrupcin cuando se completa la escritura de la memoria. 1.000.000 de ciclos de borrado/escritura. 40 aos de retencin de datos. Tecnologa de baja potencia y alta velocidad CMOS.

    Cuando el dispositivo est protegido por cdigo, la CPU puede continuar leyendo yescribiendo en la memoria EEPROM, pero el programador del dispositivo ya no puedeacceder esta memoria.

    DISPOSITIVOS LGICOS MICROPROGRAMABLES El PIC16F84A 5.10

    Uso de la EEPROM

    A continuacin veremos a fondo cuales son los procesos ms usuales de escritura y de

    lectura en la EEPROM.

    http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_eedata__08h_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_eedata__08h_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_eeadr__09h_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_eeadr__09h_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_eecon1__88h_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_eecon1__88h_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_eecon2__89h_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_eecon2__89h_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_eecon2__89h_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_eecon1__88h_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_eeadr__09h_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_eedata__08h_
  • 8/3/2019 El PIC16F84A

    16/45

    Lectura de la memoria EEPROM

    Para leer de la memoria EEPROM han de seguirse los siguientes pasos:

    Escritura de la direccin que hay que leer en el registro EEADR. Poner a 1 el bit RD del registro EECON, para habilitar la lectura. Lectura del dato ledo y espera a que termine la operacin. El dato est disponible en el registro EEDATA.

    Veamos dos ejemplos prctico. El primero (LECTURA1) presupone que el dato enEEDATA estar disponible rpidamente, y el segundo (LECTURA2) espera hastaconfirmarlo:

    LECTURA1 BCF STATUS,RP0 ; Selecciona banco 0MOVLW MEM1 ; Direccin a leer deMOVWF EEADR ; la EEPROM

    BSF STATUS,RP0 ; Selecciona banco 1BSF EECON1,RD ; Activar lecturaBCF STATUS,RP0 ; Selecciona banco 0MOVF EEDATA,W ; W se carga con el valor

    ; ledo en eeprom

    LECTURA2 BCF STATUS,RP0 ; Selecciona banco 0MOVLW MEM1 ; Direccin a leer deMOVWF EEADR ; la EEPROMBSF STATUS,RP0 ; Selecciona banco 1BSF EECON1,RD ; Activar lectura

    ESPERA BTFSC EECON1,RD ; Espera final de lecturaGOTO ESPERA ; a que baje la banderaBCF STATUS,RP0 ; Selecciona banco 0MOVF EEDATA,W ; W se carga con el valor

    ; ledo en eeprom

    La memoria EEPROM es bastante lenta, por lo cual es importante esperar a que el ciclode lectura termine, aunque algunas veces se omita. Pero es an ms importante estaespera en el ciclo de escritura, ya que la EEPROM puede tardar en ser escrita hasta 10ms.

    Escritura de la memoria EEPROM

    El proceso de escritura es an ms complejo ya que deberemos hacer todo lo anterior yadems escribir un cdigo especial de proteccin. Estos pasos los vemos en lassiguientes lneas:

    Poner a 1 (si no lo estaba) el bit WREN del registro EECON1 para habilitar laoperacin de escritura.

    Cargar en EEADR la direccin de la posicin a escribir. Cargar en el registro EEDATA el valor a grabar. Ejecutar la siguiente secuencia que inicia la escritura de cada byte y adems

    sirve de proteccin frente a errores eventuales. Esta secuencia siempre es la

    misma y ha de ejecutarse siempre. MOVLW 55H MOVWF EECON2 ; Escribe 55h en EECON2

  • 8/3/2019 El PIC16F84A

    17/45

    MOVWF AAH MOVWF EECON2 ; Escribe AAh en EECON2 BSF EECON1,WR ; Coloca a 1 el bit de escritura Esta ltima instruccin inicia el proceso de escritura. Cuando se termina, el bit

    EEIF est a 1 y, si ha sido habilitada la interrupcin de EEPROM haciendo uso

    del bit EEIE del registro INTCON, esta interrupcin se genera. Mediante software es necesario poner a cero el bit EEIF.

    DISPOSITIVOS LGICOS MICROPROGRAMABLES El PIC16F84A 5.11

    Veamos un ejemplo de escritura tpico que no utiliza interrupciones:

    ESCRITURA ; Establecer EEADR y EEDATAMOVLW DIRMEN1MOVWF EEADR ; Escribe la direccin en EEADR

    MOVLW DATO1MOVWF EEDATA ; Se escribe el dato en EEDATABSF STATUS,RP0 ; Selecciona el banco 1BSF EECON1,WREN ; Permiso de escritura activado;Comienzo de la secuencia de escrituraMOVLW 0x55MOVWF EECON2 ; Se escribe el dato 55 h en

    EECON2MOVLW 0xAAMOVWF EECON2 ; Se escribe AA h en EECON2BSF EECON1,WR ; Comienza la escrituraBCF EECON1,WREN ; Permiso de escritura

    desactivado

    ESPERA BTFSC EECON1,WR ; Espera a que termine laescritura

    GOTO ESPERABCF STATUS,R0 ; Selecciona el banco 0

    La escritura de cada byte no se iniciar si la secuencia de introducir 55 y AA enEECON2, y activar el bit WR no se sigue exactamente.

    Considerndo lo anterior, es recomendable que durante la secuencia de inicio deescritura se deshabiliten las interrupciones, con el fin de evitar errores no deseados yhabilitarlas posteriormente si van a ser utilizadas.

    Adicionalmente, el bit WREN de EECON1 debe ser activado para habilitar la escritura.Para evitar errores, tambin es recomendable que el bit WREN est desactivado durantetodo el programa excepto en el momento de la escritura. Debemos tener en cuenta queeste bit no se pone a cero automticamente mediante hardware. Una vez iniciado elciclo de escritura, si ponemos a cero WREN, esto no afectar a el ciclo de escriturainiciado. En este caso el bit WR estar inhibido y no se podr poner a uno.

    Despus del ciclo, el bit WR es puesto a cero por hardware y el EEIF es puesto a uno(si EEIE lo est). Si EEIE, est habilitado, EEIF debe ser puesto a cero por software.

    Veamos un ejemplo de escritura tpico que utiliza interrupciones:

  • 8/3/2019 El PIC16F84A

    18/45

    ESCRITURA BCF STATUS,RP0 ; Selecciona el banco 0; Establecer EEADR y EEDATAMOVLW MEN1MOVWF EEADR ; Escribe la direccin en EEADRMOVLW DATO1MOVWF EEDATA ; Se escribe el dato en EEDATA

    BSF STATUS,RP0 ; Selecciona el banco 1BSF EECON1,WREN ; Permiso de escritura activadoBCF INTCON, GIE ; Desabilita interrupciones.;Comienzo de la secuencia de escrituraMOVLW 0x55MOVWF EECON2 ; Se escribe el dato 55 h en

    EECON2MOVLW 0xAAMOVWF EECON2 ; Se escribe AA h en EECON2BSF EECON1,WR ; Comienza la escrituraBSF INTCON,GIE ; Habilita las interrupciones.BCF EECON1,WREN ; Permiso de escritura

    desactivado

    BCF STATUS,R0 ; Selecciona el banco 0

    Verificacin de la escritura

    Dependiendo de la aplicacin, la experiencia en programacin dice que los datosescritos en la EEPROM deben ser verificados comparndolos con el dato que se acabade escribir. Esto debe usarse en aplicaciones en las que un bit de la EEPROM sufreciclos de lectura/escritura hasta rozar el lmite de las especificaciones. Generalmente elfallo de escritura en un bit de la EEPROM ser un bit que se escribe como un 0 lgicopero devuelve un 1 debido a la prdida de ese bit. La siguiente porcin de cdigo es unejemplo de verificacin del dato escrito:

    BCF STATUS,RP0 ; Nos situamos en el banco 0MOVF EEDATA,W ; Debemos estar en el banco 0BSF STATUS,RP0 ; Cambiamos al banco 1BSF EECON1,RD ; Leemos el dato que se guarda

    enBCF STATUS,RP0 ; EEDATA, y cambiamos a banco 0; A continuacin se comprueba que los datos en W en

    EEDATA son los mismosSUBWF EEDATA,W ; Restamos ambos valoresBTFSS STATUS,Z ; Si la operacin es cero, son

    igualesGOTO ERR_ESCRIT ; Si no son iguales, saltamos a

    ERR_ESCRIT..... ; Si son iguales, seguimos con

    el programa

    Rutinas EEPROM

    A continuacin se presentan dos rutinas para escribir y leer en la EEPROM:

    ;**************************************************************; EEPROM_W:; Graba un byte en la EEPROM de datos. La direccin ser la contenida; en EEADR y el dato se le supone previamente introducido en EEDATA

    ;EEPROM_W

  • 8/3/2019 El PIC16F84A

    19/45

    bsf STATUS,RP0 ;Selecciona banco 1bsf EECON1,WREN ;Permiso de escrituramovlw b'01010101' ;Secuencia de escrituramovwf EECON2movlw b'10101010'movwf EECON2

    bsf EECON1,WR ;Orden de escriturabcf EECON1,WREN ;Desconecta permiso de escrituraESPERA

    btfss EECON1,EEIF ;Comprobar bandera de fin de escrituragoto ESPERAbcf EECON1,EEIF ;Reponer flag de fin de escriturabcf STATUS,RP0 ;Seleccin banco 0return

    ;;**************************************************************; EEPROM_R:; Lee un byte de la EEPROM. Se supone al registro EEADR cargado; con la direccin a leer. En EEDATA aparecer el dato ledo.

    ;EEPROM_Rbsf STATUS,RP0 ;Seleccin de banco 1bsf EECON1,RD ;Orden de lecturabcf STATUS,RP0 ;Seleccin de banco 0return

    ;**************************************************************

    Puertos de E/S

    El PIC16F84 dispone de dos puertos digitales de E/S paralelos de uso generaldenominados Puerto A y Puerto B.

    Puerto A

    El puerto A dispone de 5 lneas de la RA0 a la RA4, en la que hay que distinguir la A4o T0CKI (Timer 0 Clock Input) que est compartida con la entrada para el Timer 0(TMR0) a travs de un trigger Schmitt y que cuando se configura como salida es dedrenador abierto, por lo que debe colocarse una resistencia de polarizacin.

  • 8/3/2019 El PIC16F84A

    20/45

    Diagrama de bloques de RA3:RA0 Diagrama de bloques de RA4

    Puerto B

    El puerto B dispone de 8 lneas de E/S que van desde la RB0 a la RB7 (la lnea RB0 oINT es compartida con la entrada de interrupcin externa). Adems, las lneas RB4 aRB7 puede programarse una interrupcin por cambio de estado de cualquiera de estaslneas.

    Diagrama de bloques de RB7:RB4 Diagrama de bloques de RB3:RB0

    DISPOSITIVOS LGICOS MICROPROGRAMABLES El PIC16F84A 5.12

  • 8/3/2019 El PIC16F84A

    21/45

    Cuando se produce una interrupcin por cambio de estado de cualquiera de las lneasRB4 a RB7, para lo cual las lneas deben estar adems programadas como entradas (verregistro INTCON e Interrupciones) el valor de la patilla en modo entrada es comparadocon el valor almacenado en la bscula durante la ltima lectura del Puerto B. Loscambios en las patillas se detectan realizando una operacin OR para la generacin de

    una interrupcin por cambio de estado. Esta interrupcin puede despertar "wake up" almicrocontrolador del modo de reposo SLEEP. El usuario debe borrar la interrupcin enla Rutina de Servicio de Interrupcin RSI de una de las siguientes maneras:

    Borrando la bandera bit 3 de INTCON (RBIE). Leyendo o escribiendo el PORTB y luego borrando el bit RBIF. Esto finaliza la

    condicin "mismacht" y permite que se borre RBIF.

    Una condicin "mismacht" puede producir que el bit RBIF siga a "1". Leyendo el puertoB puede finalizar la condicin de "mismacht" y permitiendo que el bit RBIF sea puestoa "0".

    Adems, todas las lneas del Puerto B disponen de resistencias internas de polarizacinprogramables "pull-up" de alto valor. Cada una de las 8 resistencias pueden seractivadas o deshabilitadas haciendo uso del bit RBPU del registro especial OPTION.Estas resistencias se deshabilitan automticamente si una lnea es programada comosalida as como durante el proceso de Power On Reset.

    Configuracin de los puertos de Entrada/Salida

    Cualquier lnea puede funcionar como entrada o como salida. Sin embargo, si actacomo entrada la informacin que se introduce no se memoriza, por lo que lainformacin debe ser mantenida hasta que sea leda. Si la lnea acta como salida, el bitque procede del bus de datos se guarda en la bscula, con lo que la informacin queofrece esta patita permanece invariable hasta que se reescriba este bit.

    Los bits de cada puerto se configuran mediante los bits correspondientes de dosregistros especiales de control :

    Registro de Datos denominados PORTA PORTB: Se pueden leer o escribirsegn que el puerto correspondiente se utilice como entrada o como salida.

    Registro de Control denominado TRISA TRISB: En los registros de Control seprograma el sentido de funcionamiento de cada una de las lneas de E/S.Colocando un "0" en el correspondiente bit del registro TRISA TRISB, la lneaqueda programada como salida mientras que colocando un "1" la lnea quedaprogramada como entrada. Por ejemplo, si ponemos un 0 en el bit 3 del registroTRISA la patilla RA3 ser una salida y si ponemos un 1 en el bit 4 del registroTRISB entonces la patilla RB4 ser una entrada.

    Los Puertos A y B (PORTA y PORTB) se corresponden con las posiciones 5 y 6 delrea de datos.

    Cuando se produce un reset, todos los bits de los registros TRIS pasan a tener el valor 1

    y todas las lneas de E/S actan como entrada por evidentes motivos de seguridad paraevitar daos irreparables. Todas las patillas de E/S que no se empleen deben ser llevadas

  • 8/3/2019 El PIC16F84A

    22/45

    a +5v, regla de las entradas CMOS, preferiblemente a travs de una resistencia paraevitar que si por error se configurasen como salidas puedan darse problemas sipresentan un estado bajo.

    Para mas informacin, ver"Registro TRISA y TRISB (85h y 86h)"de "Registros del

    PIC16F84A" as como"Instrucciones y puertos"de "Tcnicas de programacin".

    DISPOSITIVOS LGICOS MICROPROGRAMABLES El PIC16F84A 5.13

    Limite de corriente para los puertos

    Los puertos del microcontrolador PIC16F84 son el medio de comunicacin con elmundo exterior, en ellos podremos conectar los perifricos o circuitos necesarios comopor ejemplo los mdulos LCD, teclados matriciales, motores elctricos, etc; pero estas

    conexiones no se podrn realizar arbitrariamente. Existen unas reglas bsicas quedebern cumplirse para que el microcontrolador no sufra daos o se destruya. Para elloes necesario conocer los lmites de corriente que puede manejar el microcontrolador.

    Como anteriormente hemos indicado los puertos A y B del microcontrolador podrn serprogramados como entradas salidas indiferentemente. En el caso de que seanprogramados como salida y presenten un nivel lgico alto actuaran como "fuente"porque suministran corriente y cuando presenten un nivel lgico bajo actuarn como"sumidero" por que reciben corriente.

    Disipacin de potencia total de 800 mW. Mxima corriente de salida a VSS 150 mA. Mxima corriente de salida de VDD 100 mA. Si utilizamos todas las lneas del puerto "A" como fuente, no deber exceder de

    50 mA toda la corriente que suministre este puerto. Si utilizamos todas las lneas del puerto "A" como sumidero, no deber exceder

    de 80 mA toda la corriente que suministre este puerto. Si utilizamos todas las lneas del puerto "B" como fuente, no deber exceder de

    100 mA toda la corriente que suministre este puerto. Si utilizamos todas las lneas del puerto "B" como sumidero, no deber exceder

    de 150 mA toda la corriente que suministre este puerto. La mxima corriente que puede suministrar una sla salida como fuente o

    sumidero es de 25 mA.

    De todas maneras hay que tener en cuenta no superar la disipacin de potencia mxima,que se calcula como sigue:

    Pdis = VDD x (IDD - IOH) + {(VDD-VOH) x IOH} + (VOL x IOL)

    VOH suele ser VDD-0,7 v y VOL 0,6 v.

    El consumo de corriente (IDD) es principalmente funcin de la tensin de alimentacin

    y de la frecuencia. Otros factores, como cambios en E/S, tipo de oscilador, temperaturay otros tienen influencia en el consumo. La IDD para el PIC16F84A-4 est entre 1,8 a

    http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_trisa_y_trisb__85h_y_86h_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_trisa_y_trisb__85h_y_86h_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_trisa_y_trisb__85h_y_86h_http://perso.wanadoo.es/pictob/tecprg.htm#instrucciones_y_puertoshttp://perso.wanadoo.es/pictob/tecprg.htm#instrucciones_y_puertoshttp://perso.wanadoo.es/pictob/tecprg.htm#instrucciones_y_puertoshttp://perso.wanadoo.es/pictob/tecprg.htm#instrucciones_y_puertoshttp://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_trisa_y_trisb__85h_y_86h_
  • 8/3/2019 El PIC16F84A

    23/45

    4.5 mA en configuracin de oscilador RC y XT (FOSC=4 MHz, VDD=5,5V), con laspatillas como entradas y unidas a positivo.

    En caso de que se necesiten utilizar perifricos que manejen mayor cantidad decorriente de la especificada, habr que aplicar un circuito adaptador como por ejemplo

    buffers o transistores.

    DISPOSITIVOS LGICOS MICROPROGRAMABLES El PIC16F84A 5.14

    En la siguiente figura vemos una configuracin tpica en la que se utilizan buffers decorriente, que proporcionan en su salida el mismo nivel lgico que la entrada peropueden controlar corrientes relativamente elevadas. En este caso se utiliza el ULN2803,un circuito integrado que consiste en 8 buffers de potencia capaces de suministrar en susalida hasta 1 A, mucho ms de lo que es capaz de soportar un PIC:

    Temporizador/Contador TMR0

    El temporizador/contador TMR0 es un registro de 8 bits, es decir, un particular tipo deregistro cuyo contenido es incrementado con una cadencia regular y programabledirectamente por el hardware del PIC. Como es de 8 bits, el mximo de la cuenta est en255.

    El TMR0 tiene las siguientes caractersticas:

    Temporizador/Contador de 8 bits. Divisor de 8 bits programable por software. Seleccin de reloj interno y externo. Interrupcin por desbordamiento. Seleccin del flanco del reloj externo.

  • 8/3/2019 El PIC16F84A

    24/45

    Este registro puede usarse para contar eventos externos por medio de un pin de entradaespecial (modo contador) o para contar pulsos internos de reloj de frecuencia constante(modo temporizador). Adems, en cualquiera de los dos modos, se puede insertar unprescaler, es decir un divisor de frecuencia programable que puede dividir por 2, 4, 8,16, 32, 64, 128 o 256. Este divisor puede ser utilizado alternativamente como prescaler

    o del TMR0 o como postscaler del Watch Dog Timer, segn se lo programe.

    En la prctica, a diferencia de los otros registros, el TMR0 no mantiene inalterado elvalor que tiene memorizado, sino que lo incrementa continuamente.

    Si por ejemplo escribimos en l el valor 10, despus de un tiempo igual a cuatro ciclosmquina, el contenido del registro comienza a ser incrementado a 11, 12, 13 y assucesivamente con una cadencia constante y totalmente independiente de la ejecucindel resto del programa.

    DISPOSITIVOS LGICOS MICROPROGRAMABLES El PIC16F84A 5.15

    Una vez alcanzado el valor 255, el registro TMR0 es puesto a cero automticamentecomenzando entonces a contar desde cero y no desde el valor originalmente cargado.

    La frecuencia de conteo es directamente proporcional a la frecuencia de reloj aplicada alPIC y puede ser modificada programando adecuadamente algunos bits de configuracin.

    El modo temporizador se selecciona colocando a 0 el bit T0CS del registro OPTION.En este modo, el Timer0 se incrementa con cada ciclo de instruccin (con el divisor

    desactivado).

    El modo contador se selecciona colocando a 1 el bit T0CS del registro OPTION. Eneste modo, el contador se incrementar con cada flanco de subida o de bajada del pinRA4/T0CKI. El flanco se selecciona con el bit T0SE del registro OPTION.

    Se generar una interrupcin cuando el registro TMR0 se desborda de FFh a 00h. Estedesbordamiento se indicar el el bit T0IF del registro INTCON.

    En la siguiente figura est representado el esquema de bloques internos del PIC quedeterminan el funcionamiento del registro TMR0:

  • 8/3/2019 El PIC16F84A

    25/45

    Fosc/4 y T0CKI representan las dos posibles fuentes de seal de reloj, para el contadorTMR0.

    Fosc/4 es una seal generada internamente por el PIC tomada del circuito de reloj y quees igual a la frecuencia del oscilador dividida por cuatro.

    T0CKI es una seal generada por un posible circuito externo y aplicada al pin T0CKIcorrespondiente al pin 3 del PIC16F84.

    Los bloques T0CS y PSA son dos selectores de seal (multiplexores) en cuya salida sepresenta una de las dos seales de entrada en funcin del valor de los bits T0CS y PSAdel registro OPTION.

    El bloque PRESCALER Predivisor es un divisor programable cuyo funcin es dividirla frecuencia de conteo, interna externa.

    DISPOSITIVOS LGICOS MICROPROGRAMABLES El PIC16F84A 5.16

    El Prescaler

    El PRESCALER consiste en un divisor programable de 8 bits a utilizar en el caso de

    que la frecuencia de conteo enviada al contador TMR0 sea demasiado elevada paranuestros propsitos. Se configura a travs de los bits PS0, PS1 y PS2 del registroOPTION.

    La frecuencia Fosc/4 es una cuarta parte de la frecuencia de reloj. Utilizando un cristalde 4Mhz tendremos una Fosc/4 igual a 1 MHz, con lo que la cadencia de conteo que seobtiene provoca en TMR0 1 milln de incrementos por segundo (1/1.000.000 seg.=1MHz), que para muchas aplicaciones podra resultar demasiado elevada.

    Con el uso del PRESCALER podemos dividir la frecuencia Fosc/4 configurandooportunamente los bits PS0, PS1 y PS2 del registro OPTION segn la siguiente tabla:

  • 8/3/2019 El PIC16F84A

    26/45

    PS2 PS1 PS0 DIVISOR FRECUENCIA DE SALIDA PREESCALER (Hz.)

    0 0 0 2 500.000

    0 0 1 4 250.000

    0 1 0 8 125.000

    0 1 1 16 62.500

    1 0 0 32 31.250

    1 0 1 64 15.625

    1 1 0 128 7.812,5

    1 1 1 256 3.906,25

    Ejemplo prctico:Introducir un retardo igual a un segundo utilizando el registroTMR0.

    Debemos programar el bit T0CS a 0 para seleccionar como fuente de conteo el reloj delPIC, el bit PSA tambin debe estar a 0 para asignar el PRESCALER al registro TMR0en lugar de al Watch Dog Timer y los bits de configuracin del PRESCALER a 100para obtener una frecuencia de divisin igual a 1:32. La frecuencia que obtendremos enTMR0 ser igual a:

    Fosc = 1Mhz / 32 = 31.250 Hz

    Memorizamos en TMR0 el valor 6 de modo que el registro TMR0 alcanza el cerodespus de 250 cuentas (256 - 6 = 250) obteniendo as una frecuencia de paso por cerodel TMR0 igual a:

    31.250 / 250 = 125 Hz

    El siguiente paso ser memorizar en un registro de 8 bits el valor 125 de tal modo que,decrementando este registro en 1 por cada paso por cero de TMR0, se obtenga unafrecuencia de pasos por cero del registro igual a:

    125/125 = 1Hz (1 segundo).En resumen se trata de controlar si TMR0 ha alcanzado el valor cero, luego dereiniciarlo a 6 y decrementar el valor contenido en un registro con valor 125. Cuando elregistro alcance tambin el valor cero, entonces habr trascurrido un segundo.

    DISPOSITIVOS LGICOS MICROPROGRAMABLES El PIC16F84A 5.17

    Encapsulado y marcado del PIC16F84A

    El PIC16F84A puede presentarse en varios encapsulados:

  • 8/3/2019 El PIC16F84A

    27/45

    Encapsulado PDIP tipo DIL ("Dual In Line" Doble En Lnea) de 18 patillas, esel encapsulado tradicional, grande y manejable.

    Encapsulado SOIC de 18 patillas y SSOP de 20 patillas, para montaje superficialSMD, una tecnologa de mayor integracin que ocupa muy poco espacio, perocon un proceso de soldadura ms difcil.

    Marcado del encapsulado:

    XXX... -XX X /XX XXX : Informacin especifica del producto:o XXX... : Dispositivo (PIC16F84A,PIC16LF84A y

    PIC16F84AT,PIC16LF84AT): F: Rango de VDD estndar LF: Rango de VDD extendido, a 200KHz T: Suministrados en carrete de cinta (slo SOIC y SSOP)

    o -XX : Rango de frecuencia -04 = 4 MHz -20 = 20 MHz

    o X : Rango de temperatura: Nada = 0oC a +70oC I = -40oC a +85oC

    o /XX : Tipo de encapsulado: P = PDIP SO = SOIC SS = SSOP

    o XXX : Patrn: Nada = OTP y PIC sin ventana Cdigo = Cdigo especifico QTP, SQTP y ROM

    YY :Ao WW :Semana NNN :Cdigo alfanumrico para rastreo

  • 8/3/2019 El PIC16F84A

    28/45

    Registros del PIC16F84A

    ndice de contenidos

    Registros del PIC16F84Ao ndice de contenidoso Registro Wo La pila o stacko Registro INDF (00h y 80h)o Registro TMR0 (01h)o El Contador de programa PC (02h y 82h)

    El contador de programa y la pilao Registro de Estado (03h y 83h)o Registro FSR (04h y 84h)o

    Registro PORTA y PORTB (05h y 06h)o Registro EEDATA (08h)

    o Registro EEADR (09h)o Registro PCLATH (0Ah y 8Ah)o Registro INTCON (0Bh y 8Bh)o Registro OPTION (80h)o Registro TRISA y TRISB (85h y 86h)o Registro EECON1 (88h)o Registro EECON2 (89h)o Estado predeterminado de los registros

    Anteriormente ya localizamos la seccin de registros especiales en el bloque dememoria RAM, estos estaban repartidos en dos bancos, el 0 y el 1, y situados en las 12primeras posiciones o registros de cada uno (00h-0Bh, y 80h-8Bh). A continuacin sepresentan en bloque y en una tabla:

    http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registros_del_pic16f84ahttp://perso.wanadoo.es/pictob/micropic16f84_2.htm#registros_del_pic16f84ahttp://perso.wanadoo.es/pictob/micropic16f84_2.htm#indice_de_contenidoshttp://perso.wanadoo.es/pictob/micropic16f84_2.htm#indice_de_contenidoshttp://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_whttp://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_whttp://perso.wanadoo.es/pictob/micropic16f84_2.htm#la_pila_o_stackhttp://perso.wanadoo.es/pictob/micropic16f84_2.htm#la_pila_o_stackhttp://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_indf__00h_y_80h_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_indf__00h_y_80h_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_tmr0__01h_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_tmr0__01h_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#el_contador_de_programa_pc__02h_y_82h_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#el_contador_de_programa_pc__02h_y_82h_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#el_contador_de_programa_y_la_pilahttp://perso.wanadoo.es/pictob/micropic16f84_2.htm#el_contador_de_programa_y_la_pilahttp://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_de_estado__03h_y_83h_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_de_estado__03h_y_83h_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_fsr__04h_y_84h_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_fsr__04h_y_84h_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_porta_y_portb__05h_y_06h_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_porta_y_portb__05h_y_06h_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_eedata__08h_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_eedata__08h_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_eeadr__09h_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_eeadr__09h_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_pclath__0ah_y_8ah_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_pclath__0ah_y_8ah_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_intcon__0bh_y_8bh_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_intcon__0bh_y_8bh_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_option__80h_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_option__80h_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_trisa_y_trisb__85h_y_86h_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_trisa_y_trisb__85h_y_86h_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_eecon1__88h_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_eecon1__88h_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_eecon2__89h_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_eecon2__89h_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#estado_predeterminado_de_los_registroshttp://perso.wanadoo.es/pictob/micropic16f84_2.htm#estado_predeterminado_de_los_registroshttp://perso.wanadoo.es/pictob/micropic16f84_2.htm#estado_predeterminado_de_los_registroshttp://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_eecon2__89h_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_eecon1__88h_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_trisa_y_trisb__85h_y_86h_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_option__80h_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_intcon__0bh_y_8bh_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_pclath__0ah_y_8ah_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_eeadr__09h_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_eedata__08h_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_porta_y_portb__05h_y_06h_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_fsr__04h_y_84h_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_de_estado__03h_y_83h_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#el_contador_de_programa_y_la_pilahttp://perso.wanadoo.es/pictob/micropic16f84_2.htm#el_contador_de_programa_pc__02h_y_82h_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_tmr0__01h_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_indf__00h_y_80h_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#la_pila_o_stackhttp://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_whttp://perso.wanadoo.es/pictob/micropic16f84_2.htm#indice_de_contenidoshttp://perso.wanadoo.es/pictob/micropic16f84_2.htm#registros_del_pic16f84a
  • 8/3/2019 El PIC16F84A

    29/45

    DISPOSITIVOS LGICOSMICROPROGRAMABLES

    Registros delPIC16F84A

    6.2

    Banco 0

    Direcc Nombre Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

    00h INDF Direccin de FSR (no es fsicamente un registro)

    01h TMR0 Contador/Temporizador de 8 bits

    02h PCL 8 bits LSB del PC

    03h STATUS IRP RP1 RP0 TO PD Z DC C

    04h FSR Puntero para el Direccionamiento Indirecto

    05h PORTA - - -

    RA4

    T0CKI RA3 RA2 RA1 RA0

    06h PORTB RB7 RB6 RB5 RB4 RB3 RB2 RB1RB0INT

    07h - No implementado

    08h EEDATA Registro de Datos EEPROM

    09h EEADR Registro de Direcciones EEPROM

    0Ah PCLATH - - - 5 bits MSB del PC

    0Bh INTCON GIE EEIE T0IE INTE RBIE T0IF INTF RBIF

  • 8/3/2019 El PIC16F84A

    30/45

    Banco 1

    Direcc Nombre Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

    80h INDF Direccin de FSR (no es fsicamente un registro)

    81h OPTION RBPU INTE T0CS T0SE PSA PS2 PS1 PS0

    82h PCL 8 bits LSB del PC

    83h STATUS IRP RP1 RP0 TO PD Z DC C

    84h FSR Puntero para el Direccionamiento Indirecto

    85h TRISA - - - Direccin de datos del Puerto A

    86h TRISB Direccin de los datos del Puerto B

    87h - No Implementado

    88h ECON1 - - - EEIF WRR WEN WR RD

    89h ECON2 2 REGISTRO DE Control de la EEPROM

    8Ah PCLATH - - - 5 bits MSB del PC

    8Bh INTCON GIE EEIE T0IE INTE RBIE T0IF INTF RBIF

    DISPOSITIVOS LGICOSMICROPROGRAMABLES

    Registros delPIC16F84A

    6.3

    Registro W

    En la figura siguiente se representa un diagrama simplificado de la arquitectura internade los datos en la CPU de los microcontroladores PIC y de los microprocesadorestradicionales relacionado con la ALU:

  • 8/3/2019 El PIC16F84A

    31/45

    Podemos ver los buses por donde circulan los datos, y la Unidad Aritmtico-Lgica ALU (Arithmetic-Logic Unit). Que es la encargada de hacer las operaciones aritmticastales como suma y resta, y operaciones lgicas.

    Observamos que la principal diferencia entre ambos se encuentra en la ubicacin delregistro de trabajo, que para los PICs se denomina W (Working Register), y para lossistemas tradicionales es el Acumulador.

    En los microcontroladores tradicionales todas las operaciones se realizan sobre el

    acumulador. La salida del acumulador esta conectada a una de las entradas de la ALU, ypor lo tanto ste es siempre uno de los dos operandos de cualquier instruccin. Porconvencin, las instrucciones de simple operando (borrar, incrementar, decrementar,complementar), actan sobre el acumulador. La salida de la ALU va solamente a laentrada del acumulador, por lo tanto el resultado de cualquier operacin siemprequedara en el acumulador. Para operar sobre un dato de memoria, despus de realizar laoperacin tendremos que mover siempre el acumulador a la memoria con unainstruccin adicional.

    DISPOSITIVOS LGICOSMICROPROGRAMABLES Registros delPIC16F84A 6.4

  • 8/3/2019 El PIC16F84A

    32/45

    En los microcontroladores PIC, la salida de la ALU va al registro W y tambin a lamemoria de datos, por lo tanto el resultado puede guardarse en cualquiera de los dosdestinos. En las instrucciones de doble operando, uno de los dos datos siempre debeestar en el registro W, como ocurra en el modelo tradicional con el acumulador. En lasinstrucciones de simple operando el dato en este caso se toma de la memoria (tambin

    por convencin).

    La gran ventaja de esta arquitectura es que permite un gran ahorro de instrucciones yaque el resultado de cualquier instruccin que opere con la memoria (sea de simple odoble operando), puede dejarse en la misma posicin de memoria o en el registro W,segn se seleccione con un bit de la misma instruccin. Las operaciones con constantesprovenientes de la memoria de programa (literales) se realizan slo sobre el registro W.

    En la memoria de datos de los PICs se encuentran ubicados casi todos los registros de

    control del microcontrolador y sus perifricos autocontenidos, y tambin las posicionesde memoria de usos generales.Sin embargo el registro W no est implementado dentro

    de los registros especiales del bloque de memoria, si no que est situado a la entrada dela ALU como ya hemos visto anteriormente.

    En resumen, el registro W servir para guardar temporalmente un dato ledo dememoria, y lo usaremos como si del portapapeles del escritorio se tratase. Cuandocopiamos algo (texto, un fichero o lo que sea), el contenido se guarda en elportapapeles, y cuando lo pegamos en su destino, este se copia y el contenido todavapermanece en el portapapeles hasta que cortemos o copiemos otro objeto.

    La pila o stack

    En los microcontroladores PIC el stack es una memoria interna dedicada, de tamaolimitado, separada de las memorias de datos y de programa, inaccesible al programador,y organizada en forma de pila, que es utilizada solamente, y en forma automtica, paraguardar las direcciones de retorno de subrutinas e interrupciones. Cada posicin es de11 bits y permite guardar una copia completa del PC. Como en toda memoria tipo pila,a los datos se accede de forma LIFO (Last In First Out) de manera que el ltimo enentrar es el primero en salir. El tamao del stack en los 16F84 es de 8 posiciones.

    El stack y el puntero interno que lo direcciona, son invisibles para el programador, solose accede a ellos automticamente para guardar o rescatar las direcciones de programa

    cuando se ejecutan las instrucciones de llamada o retorno de subrutinas, cuando seproduce una interrupcin o cuando se ejecuta una instruccin de retorno de ella.

    Registro INDF (00h y 80h)

    El registro INDF (Indirect File) que ocupa la posicin 00 no tiene existencia fsica, porlo que no se podr acceder a l. En realidad este registro sirve nicamente paraespecificar la utilizacin del direccionamiento indirecto junto con el registroFSR. Verel direccionamiento indirecto en "El PIC16F84A".

    http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_fsr__04h_y_84h_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_fsr__04h_y_84h_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_fsr__04h_y_84h_http://perso.wanadoo.es/pictob/micropic16f84.htm#direccionamiento_indirectohttp://perso.wanadoo.es/pictob/micropic16f84.htm#direccionamiento_indirectohttp://perso.wanadoo.es/pictob/micropic16f84.htm#direccionamiento_indirectohttp://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_fsr__04h_y_84h_
  • 8/3/2019 El PIC16F84A

    33/45

    DISPOSITIVOS LGICOSMICROPROGRAMABLES

    Registros delPIC16F84A

    6.5

    Registro TMR0 (01h)

    El registro TMR0 (Timer 0) almacena el valor del contador TMR0, que como yasabemos, est funcionando continuamente e incrementando el valor que tienealmacenado. Las opciones que controlan este contador residen en el registro OPTION.

    El registro TMR0 se incrementa en una unidad con cada impulso de reloj seleccionadomediante el registro OPTION. Cada vez que llega al valor FF, vuelve a 00 generandouna interrupcin, si se ha autorizado, y contina su ciclo indefinidamente.

    El registro TMR0 se puede leer o escribir directamente con cualquier instruccin, con elfin de conocer su posicin actual, o para inicializarlo en un estado determinado. Esimportante saber que despus de cualquier escritura en este registro, es necesario unretardo de dos ciclos de instruccin para que se retome la incrementacin. Este retrasoes independiente de la fuente de reloj usada. Las instrucciones concernidas son MOVFTMR0 o CLRF TMR0.

    Para comprobar el paso por cero sin inferir en el desarrollo regular del recuento, esaconsejable utilizar, por ejemplo, una instruccin MOVF TMR0,W, que no hace masque una lectura.

    El reloj interno deja de funcionar en el modo SLEEP, por lo que no se puede contar con

    sus interrupciones en este modo ni por consiguiente, que salga de este modo defuncionamiento por medio de dicha interrupcin.

    Obsrvese que todas las instrucciones que escriben en el TMR0 ponen a cero alprescaler (divisor), cuando ste est asignado al temporizador.

    El Contador de programa PC (02h y 82h)

    Este registro, normalmente denominado PC (Program Counter), es equivalente al detodos los microprocesadores y contiene la direccin de la prxima instruccin aejecutar. Se incrementa automticamente al ejecutar cada instruccin, de manera que lasecuencia natural de ejecucin del programa es lineal, una instruccin despus de laotra. Algunas instrucciones (que llamaremos de control) cambian el contenido del PCalterando la secuencia lineal de ejecucin. Dentro de estas instrucciones se encuentranGOTO y CALL que permiten cargar en forma directa un valor constante en el PChaciendo que el programa salte a cualquier posicin de la memoria. Otras instruccionesde control son los SKIP o saltos condicionales, que producen un incremento adicionaldel PC si se cumple una condicin especfica, haciendo que el programa salte, sinejecutar, la instruccin siguiente.

    El PC del 16F84 es un registro de 13 bits, lo que permite direccionar 8.192 posiciones

    de memoria de programa, pero que internamente solamente podr direccionar las 1.024

  • 8/3/2019 El PIC16F84A

    34/45

    posiciones de memoria de programa del 16F84. Esto significa que solo hace realmentefalta tener en cuenta 10 bits del PC (210=1.024).

    El PC est implementado por dos registros, PCLATH (5 bits) y PCL (8 bits)

    Los 8 bits de menor peso del PC los proporciona el registro PCL (02h) y adiferencia de la mayora de los microprocesadores convencionales, es tambinun registro accesible al programador como registro de memoria interna de datos.Es decir que cualquier instruccin comn que opere sobre registros puede serutilizada para alterar el PCL y desviar la ejecucin del programa.

    Los 5 bits de mayor peso del PC que no pueden leerse ni escribirse directamenteproceden del registro PCLATH en la direccin 0Ah vy 8Ah.

    DISPOSITIVOS LGICOSMICROPROGRAMABLES

    Registros delPIC16F84A

    6.6

    En la instruccin de salto relativo, el resultado de las mismas slo afecta a los 8 bits demenor peso. Los 5 bits de mayor peso se suministran desde PCLATH. En lasinstrucciones GOTO y CALL se efectua la misma operacin teniendo presente que elPC se codifica mediante 11 bits y se suministran en la propia instruccin, desde elcdigo OP. Los dos bits de ms peso del PC de cargan con los bits 4 y 3 del registroPCLATH.

    Dado que la memoria de programa se organiza en pginas de 2 K, la posicin de lamemoria la indican los 11 bits de menor peso del PC y los 2 bits de mayor peso indican

    la pgina.

    A continuacin se muestra como se carga el PC:

  • 8/3/2019 El PIC16F84A

    35/45

    El reset pone a 0 todos los bits de PCL y PCLATH haciendo que el reinicio comienceen la direccin 0000h.

    El contador de programa y la pila

    Los ocho registros de pila no estan situados en el mismo espacio de memoria que losdems. Son registros de trece bits capaces de contener ntegramente al PC. Suutilizacin es automtica, ya que el PC se introduce en la pila durante la ejecucin deuna instruccin CALL o de una interrupcin, y se extrae de la pila durante la ejecucindel retorno correspondiente.

    Cuando los datos contenidos en el PC son almacenados o extrados de la pila el registroPCLATH no se ve modificado.

    Estos registros de pila deben considerarse como un buffer de memoria circular, lo quesignifica que, si se introduce ms de 8 valores del PC, el noveno valor tomar laposicin del primero, y as sucesivamente.

    Ningn bit de registro indica que la pila est llena, por lo que debemos tener cuidado deque no se desborde.

  • 8/3/2019 El PIC16F84A

    36/45

    DISPOSITIVOS LGICOSMICROPROGRAMABLES

    Registros delPIC16F84A

    6.7

    Registro de Estado (03h y 83h)

    El registro de Estado (STATUS) contienen varios bits de estado de la unidad central, elestado aritmtico de la ALU, el estado del reset y un par de bits de seleccin de pginadenominados RP1 y RP0. Ocupa la posicin 03h del banco 0 y la 83h del banco 1.

    Algunos de estos bits los podemos cambiar manualmente a travs del programa. Otrosno los activamos nosotros, si no que los activa automticamente el PIC cuando se danciertos procesos. Estos bits se llaman flags (banderas). Para hacernos una idea prcticauna bandera se levanta (se pone a 1) cuando ha pasado algo, al igual que ocurre en elftbol con los linieres.

    El registro STATUS est formado por 8 bits:

    R/W-0 R/W-0 R/W-0 R-1 R-1 R/W-x R/W-x R/W-x

    IRP RP1 RP0 /TO /PD Z DC C

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

    R/W significa que el bit correspondiente se puede leer y escribir, mientras que Rsignifica que solamente puede ser ledo. Tambin se indica el estado que se establece

    tras un reset.

    Bit 7, IRP: Seleccin del banco en direccionamiento indirecto. Este bit juntocon el de ms peso del registro FSR sirven para determinar el banco de lamemoria de datos seleccionado. En el PIC16X84 al disponer de dos bancos nose usa y debe programarse como 0.

    Bit 6 y 5, RP0 y RP1: Register Bank Select. Seleccin de pgina o banco de lamemoria con direccionamiento directo. Cada pgina contiene 128 bytes. Comoel PIC16X84 slo tiene dos bancos nicamente se emplea RP0 de forma quecuando vale 0 se accede al banco 0 y cuando vale 1 se accede al banco 1.Despus de un reset, RP0 se pone automticamente a 0. RP1 debe mantenerse a

    0. El bit RP1 deber ser puesto a cero, ya que si no nos saldramos del rango dememoria.

    Bit 4 (flag), TO: Time Out (Tiempo acabado)o 1. Se pone a 1 tras conectar la alimentacin o al ejecutar CLRWDT o

    SLEEP.o 0. Se pone a 0 por desbordamiento del Perro Guardin WDT.

    Bit 3 (flag), PD: Power Down (Apagado).o 1. Se pone automticamente a 1 tras conectar la alimentacin Vdd o

    ejecutar CLRWDT, que resetea el contador WatchDog.o 0. Se pone a 0 al ejecutar la instruccin SLEEP.

    Bit 2 (flag), Z: Ceroo 1 = El resultado de una operacin aritmtica o lgica es 0.o 0 = El resultado es distinto de 0.

  • 8/3/2019 El PIC16F84A

    37/45

    Bit 1 (flag), DC (Digit Carry). Acarreo en el 4 bit de menos peso. Funcionaigual que el bit de Carry descrito a continuacin. De inters en operaciones enBCD

    Bit 0 (flag), C (Carry). Acarreo en el 8 bit o bit de mas peso. Es el bit de"acarreo" en operaciones de suma AADWF y ADDLW as como tambin el bit

    de "llevada" en las instrucciones de sustraccin SUBWF y SUBLW. Tambin loemplean las instrucciones RLF y RRF de rotacin de bits.o Suma

    1. Se pone a 1 cuando se ha producido acarreo en la suma en elbit de mayor peso con las operaciones AADWF y ADDLW.

    0. Se pone a 0 si en la suma no se ha producido acarreo.o Resta

    1. Se pone a 1 si en la resta no se ha producido llevada. 0. Se pone a 0 cuando se ha producido llevada en la resta con las

    operaciones SUBWF y SUBLW.

    DISPOSITIVOS LGICOSMICROPROGRAMABLES

    Registros delPIC16F84A

    6.8

    Posibles configuraciones de los bits de seleccin de pgina RP1 y RP0:

    RP1 RP0 Banco Direccin

    0 0 0 00h a 7Fh

    0 1 1 80h a FFh1 0 2 100h a 17Fh

    1 1 3 180h a 1FFh

    Registro FSR (04h y 84h)

    El contenido del FSR se utiliza para el direccionamiento indirecto junto con el registroINDF. Este registro contiene 8 bits. Verel direccionamiento indirecto en "ElPIC16F84A".

    Registro PORTA y PORTB (05h y 06h)

    Cuando vimos los puertos se coment el uso de estos registros que contienen los niveleslgicos de las patillas de E/S. Cada bit se puede leer o escribir segn la patillacorrespondiente se haya configurado como entrada o como salida.

    Conviene recordar que cualquier lnea puede funcionar como entrada o como salida. Sinembargo, si acta como entrada la informacin que se introduce no se memoriza, por loque la informacin debe ser mantenida hasta que sea leda. Si la lnea acta como salida,

    el bit que procede del bus de datos se guarda en la bscula, con lo que la informacinque ofrece esta patilla permanece invariable hasta que se reescriba este bit.

    http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_indf__00h_y_80h_http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_indf__00h_y_80h_http://perso.wanadoo.es/pictob/micropic16f84.htm#direccionamiento_indirectohttp://perso.wanadoo.es/pictob/micropic16f84.htm#direccionamiento_indirectohttp://perso.wanadoo.es/pictob/micropic16f84.htm#direccionamiento_indirectohttp://perso.wanadoo.es/pictob/micropic16f84.htm#direccionamiento_indirectohttp://perso.wanadoo.es/pictob/micropic16f84.htm#direccionamiento_indirectohttp://perso.wanadoo.es/pictob/micropic16f84.htm#direccionamiento_indirectohttp://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_indf__00h_y_80h_
  • 8/3/2019 El PIC16F84A

    38/45

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

    RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0

    bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0RA4 RA3 RA2 RA1 RA0

    DISPOSITIVOS LGICOSMICROPROGRAMABLES

    Registros delPIC16F84A

    6.9

    Registro EEDATA (08h)

    El registro EEDATA (Datos de EEPROM) guarda el contenido de una posicin de la

    memoria EEPROM de datos antes de su escritura o despus de su lectura, segn leamoso escribamos en ella. Para leerla se sigue un proceso especial que se comentar masadelante. Como ya sabemos la memoria EEPROM es bastante lenta, dato que tendremosen cuenta cuando accedamos a ella para escribirla, pues tarda unos 10 ms en completarel proceso.

    Registro EEADR (09h)

    El registro EEADR (Direccin de EEPROM) guarda la direccin de la posicin dememoria EEPROM cuando queramos acceder a ella, bien para su lectura, o bien para su

    escritura. El igual que con el registro anterior, veremos su uso ms a fondo cuandolleguemos a las instrucciones que lo utilizan.

    El registro EEADR puede direcconar como mximo 256 bytes de los cuales slo los 64primeros estn disponibles, con lo que los dos bits de mayor peso han de tener el valorde '0'.

    Registro PCLATH (0Ah y 8Ah)

    El registro PCLATH (Contador de Programa Alto) ya lo vimos cuando analizamos el

    PCL y su relacin con el PC.

    Registro INTCON (0Bh y 8Bh)

    Este registro contiene varios bits de seleccin de fuentes de interrupcin, el bit deactivacin global de interrupciones y varios flag que indican la causa de unainterrupcin. Sirve para el control global de las interrupciones y para indicar laprocedencia de algunas de ellas, gracias a los bits de estado.

    Se dispone de cuatro potenciales recursos de interrupcin:

    Una fuente externa a travs del pin RB0/INT.

  • 8/3/2019 El PIC16F84A

    39/45

    El desbordamiento del temporizador 0 (TMR0). Un cambio de estado en los pines RB4 a RB7. Programacin de la EEPROM de datos.

    Cada bit del registro INTCON tiene un significado concreto que se muestra en la

    siguiente tabla:

    R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-x

    GIE EEIE T0IE INTE RBIE T0IF INTF RBIF

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

    DISPOSITIVOS LGICOSMICROPROGRAMABLES

    Registros delPIC16F84A

    6.10

    Bit 7, GIE: Habilitacin global de interrupciones (Global Interrupt Enable).o 1: Concede el permiso de interrupciones.o 0: Cancela el permiso de las interrupciones.

    Bit 6, EEIE: Habilitacin de las Interrupciones de la memoria EEPROM.o 1: Permite que se produzcan interrupciones debidas al fin de escritura de

    la EEPROM, etc.o 0: Este tipo de interrupciones estarn inhibidas.

    Bit 5, T0IE: Habilitacin de la interrupcin del temporizador pordesbordamiento (Timer 0 Interrupt Enable).

    o 1: Autoriza las interrupciones debidas al desbordamiento deltemporizador.

    o 0: Interrupcin del temporizador deshabilita de manera que cuando seproduzca el flag correspondiente permanecer inactivo.

    Bit 4, INTE: Habilitacin de la entrada de interrupcin externa (InterruptEnable) por patilla RB0/INT.

    o 1: Autoriza las interrupciones provocadas RB0/INT del puerto B.o 0: Interrupcin externa deshabilita de manera que cuando se produzca

    una interrupcin externa el flag correspondiente permanecer inactivo. Bit 3, RBIE: Habilitacin de las interrupciones del puerto B (RB Interrupt

    Enable).o 1: Autoriza las interrupciones provocadas por un cambio de estado de las

    lneas RB4 a RB7 del puerto B.o 0: Interrupcin del puerto B deshabilitada.

    Bit 2 (flag), T0IF: Bit de interrupcin de desbordamiento del TMR0.o 1: El TMR0 ha rebosado. Se borra por software.o 0: El TMR0 no ha rebosado.

    Bit 1 (flag), INTF: Bit de interrupcin de la Entrada de Interrupcin INT(patilla RB0/INT).

    o 1: La entrada de interrupcin se ha activado (patilla RBO/INT del puertoB). Se borra por software.

    o 0: No hay interrupcin externa.

    Bit 0 (flag), RBIF: Bit de interrupcin del puerto B.

  • 8/3/2019 El PIC16F84A

    40/45

    o 1: Cambio de estado en una de las lneas de RB4 a RB7 del puerto B. Seborra por software.

    o 0: Ninguna lnea de RB4 a RB7 del puerto B ha cambiado.Cada flag o bandera individual debe ponerse a cero por software.

    Solamente hay un vector de interrupcin en la memoria de programa (direccin 0004h),por lo que se deben comprobar los bits de INTCON en la subrutina de interrupcin parasaber cual es la fuente de la misma.

    Cuando llega una interrupcin, el PIC pone el bit GIE a cero, de forma que no seperturbe el tratamiento de la interrupcin en curso, debido a otras interrupcioneseventuales. Este bit se pone automticamente a uno al terminar la subrutina deinterrupcin, con la ejecucin de la instruccin RETFIE.

    Los indicadores de interrupciones correspondientes permanecen funcionales incluso

    cuando no se han autorizado.

    En este caso tambin pueden leerse y escribirse todos los bits que componen esteregistro.

    DISPOSITIVOS LGICOSMICROPROGRAMABLES

    Registros delPIC16F84A

    6.11

    Registro OPTION (80h)El registro OPTION (o registro de opciones) se emplea para programar las opciones deltemporizador TMR0, el tipo de flanco con el que se detecta una interrupcin y laactivacin de las resistencias de polarizacin del puerto B. Ocupa la posicin 81h de lapgina 1 del banco de registros. Debe escribirse usando la instruccin especialOPTION. Esta instruccin carga el contenido de W en el registro OPTION.

    R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1

    /RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0

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

    Bit 7, /RBPU (RB Pull Up). Conexin de las resistencias de polarizacin delPuerto B. Se conectan todas cuando el puerto B actua como entrada.

    o 1: Todas las resistencias son desconectadas.o 0: Las resistencias se activan de forma individual.

    Bit 6, INTDEG (INTerrupt EDGe). Selecciona el tipo de flanco para lainterrupcin externa. Este bit indica el tipo de flanco de la seal externa que hade provocar una interrupcin en la patilla RB0/INT.

    o 1: La interrupcin es producida por el flanco ascendente o de subida.o 0: La interrupcin es producida por el flanco descendente o de bajada.

  • 8/3/2019 El PIC16F84A

    41/45

    Bit 5, T0CS (Timer 0 Signal Source). Seleccin de la fuente de reloj para elTMR0.

    o 1: TMR0 se usa en modo contador de los pulsos introducidos a travs deRA4/T0CKI

    o 0: TMR0 se usa en modo temporizador haciendo uso de los pulsos dereloj internos (Fosc/4).

    Bit 4, T0SE (Timer 0 Signal Edge). Tipo de flanco activo de T0CKI (patillaRA4/T0CKI).

    o 1 = El TMR0 se incrementa con el flanco descendente de la sealaplicada a RA4/T0CK1.

    o 0 = El TMR0 se incrementa con el flanco ascendente. Bit 3, PSA (PreScaler Assignement). Se usa para la asignacin del divisor de

    frecuencias o Prescaler.o 1 = El divisor de frecuencia se asigna al WDT.o 0 = El divisor de frecuencia se asigna a TMR0.

    Bits 0, 1 y 2, PS0, PS1 y PS2 (Prescaler Rate Select Bits). Configura la tasa delvalor del divisor de frecuencia o prescaler. Difiere dependiendo que se hayaasignado al TMR0 o al WDT.

    PS2 PS1 PS0 Divisor TMR0 Divisor WDT

    0 0 0 1:2 1:1

    0 0 1 1:4 1:2

    0 1 0 1:8 1:4

    0 1 1 1:16 1:8

    1 0 0 1:32 1:16

    1 0 1 1:64 1:32

    1 1 0 1:128 1:64

    1 1 1 1:256 1:128

    DISPOSITIVOS LGICOSMICROPROGRAMABLES

    Registros delPIC16F84A

    6.12

    Registro TRISA y TRISB (85h y 86h)

    Los registros TRISA y TRISB los vimos cuando estudiamos los puertos (ver "Puertosde E/S" de "El PIC16F84A"), pero conviene recordar lo siguiente:

    Estos registros son idnticos para el puerto A y el puerto B, con la diferencia deque uno ser de 5 bits y otro de 8 bits, el mismo nmero de bits que tiene cadapuerto.

    Los registros TRIS, tambin son llamados as, sirven para configurar si los bitsde cada puerto sern de entrada o de salida:

    o 1: La patilla del puerto correspondiente ser de entrada

    http://perso.wanadoo.es/pictob/micropic16f84.htm#puertos_de_e_shttp://perso.wanadoo.es/pictob/micropic16f84.htm#puertos_de_e_shttp://perso.wanadoo.es/pictob/micropic16f84.htm#puertos_de_e_shttp://perso.wanadoo.es/pictob/micropic16f84.htm#puertos_de_e_shttp://perso.wanadoo.es/pictob/micropic16f84.htm#puertos_de_e_shttp://perso.wanadoo.es/pictob/micropic16f84.htm#puertos_de_e_s
  • 8/3/2019 El PIC16F84A

    42/45

    o 0: En este caso la patilla actuar como una salida.Para mas informacin, ver"Instrucciones y puertos"de "Tcnicas de programacin".

    Registro EECON1 (88h)

    Este registro contiene configuraciones importantes acerca de la escritura y la lectura dela EEPROM de datos. En concreto tiene 5 bits de control, cuya distribucin ysignificado es el siguiente.

    U-0 U-0 U-0 R/W-0 R/W-x R/W-0 R/S-0 R/S-0

    - - - EEIF WRERR WREN WR RD

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

    U (Unimplemented), No implementado. Se lee como 0.

    Bit 4 (flag): EEIF. Bit de interrupcin de escritura en la memoria EEPROM (EEPROM Interrupt Flag)

    o 1: Este bit se pone a uno al terminar la operacin de escritura en laEEPROM, y debe ponerse a cero por software

    o 0: No se ha completado la operacin de escritura o no ha empezado. Bit 3 (flag), WRERR. Bit de error de escritura (Write Error)

    o 1: Este bit se pone a 1 si se produce un error de escritura de formaprematura (Reset o Watchdog). En este caso, los contenidos de EEADR

    y EEDATA no varan, de manera que el proceso pueda ser repetidocorrectamente.o 0: Se ha completado la operacin de escritura.

    Bit 2, WREN. Bit de habilitacin de escritura. (Write Enable)o 1: Este bit debe ser habilitado para poder escribir en la EEPROMo 0: Deshabilita la escritura de datos en la memoria EEPROM.

    Bit 1, WR. Bit de control de escritura (Write Data)o 1: Indica que se ha iniciado una operacin de escritura. Este bit debe

    ponerse a uno para escribir un dato.o 0: Indica que se ha completado una operacin de escritura. El PIC lo

    pone automticamente a cero Bit 0, RD. Bit de control de lectura (Read Data)

    o 1: Inicia una lectura de la memoria EEPROM. Este bit debe ponerse auno para poder leer un dato.

    o 0: No se ha iniciado una lectura de la EEPROM. El PIC lo poneautomticamente a cero

    En el registro EECON1, los tres primeros bits no estn implementados por los que sulectura es '0'. Los bits de control RD y WR inician operaciones de lectura y escriturarespectivamente. Estos bits slo pueden ser puestos a '1' por software, nunca a '0'. Sonpuestos a '0' cuando se completa la operacin de lectura o escritura.

    http://perso.wanadoo.es/pictob/tecprg.htm#instrucciones_y_puertoshttp://perso.wanadoo.es/pictob/tecprg.htm#instrucciones_y_puertoshttp://perso.wanadoo.es/pictob/tecprg.htm#instrucciones_y_puertoshttp://perso.wanadoo.es/pictob/tecprg.htm#instrucciones_y_puertos
  • 8/3/2019 El PIC16F84A

    43/45

    DISPOSITIVOS LGICOSMICROPROGRAMABLES

    Registros delPIC16F84A

    6.13

    Para leer una posicin de memoria, se debe escribir la direccin en el registro EEADR y

    colocar a '1' el bit de control RD. El dato estar disponible en un prximo ciclo deinstruccin, normalmente en el siguiente, en el registro EEDATA hasta que se lea otro ose escriba en este registro.

    Para escribir un dato en la EEPROM, se debe primero colocar la direccin en el registroEEADR y el dato en el registro EEDATA. Luego. Despus se debe seguir una secuenciaespecfica para comenzar a escribir cada byte, para garantizar no escribir datos en laEEPROM por error. La secuencia es:

    MOVLW 55hMOVWF EECON2 ; Escribe 55h en EECON2MOVLW AAHMOVWF EECON2 ; Escribe AAh en EECON2BSF EECON1,WR ; Pone WR a 1 para comenzar la escritura

    Adems, el bit WREN del registro EECON1 debe estar puesto a '1' para habilitar laoperacin de escritura.

    Ms informacin enUso de la EEPROM.

    Registro EECON2 (89h)

    Este registro no est implementado fsicamente, por lo cual no se puede leer. Tan slosirve para un proceso de proteccin de escritura que consiste en copiar en l unos datosespecficos, con el fin de evitar que un programa por error pueda programar laEEPROM, manipulando simplemente los bits del EECON1.

    Lo veremos mas adelante enUso de la EEPROM.

    Estado predeterminado de los registros

    En la siguiente tabla, se muestran los estados que tienen los registros al alimentar el

    PIC, despus de un reset y al salir del modo SLEEP.Leyenda:

    ( u ) = no cambia ( x ) = desconocido ( - ) = no existe, se lee como 0 ( ? ) = depende de otras condiciones

    Notas:

    1. Uno o ms bits de INTCON pueden quedar afectados a causa de la salida delmodo SLEEP.

    http://perso.wanadoo.es/pictob/micropic16f84_3.htm#uso_de_la_eepromhttp://perso.wanadoo.es/pictob/micropic16f84_3.htm#uso_de_la_eepromhttp://perso.wanadoo.es/pictob/micropic16f84_3.htm#uso_de_la_eepromhttp://perso.wanadoo.es/pictob/micropic16f84_3.htm#uso_de_la_eepromhttp://perso.wanadoo.es/pictob/micropic16f84_3.htm#uso_de_la_eepromhttp://perso.wanadoo.es/pictob/micropic16f84_3.htm#uso_de_la_eepromhttp://perso.wanadoo.es/pictob/micropic16f84_3.htm#uso_de_la_eepromhttp://perso.wanadoo.es/pictob/micropic16f84_3.htm#uso_de_la_eeprom
  • 8/3/2019 El PIC16F84A

    44/45

    2. Cuando la salida del modo SLEEP se produce por una interrupcin y GIE estactivado, el PC se carga con el vector de interrupcin (0004 h).

    Las posibles fuentes de reset afectan de forma diversa a los contenidos de los diferentesregistros de control, de estado o de datos. En la descripcin de cada registro se indica el

    estado de los bits despus de un reset de alimentacin. Es aconsejable examinar estatabla despus de un reset antes de cualquier utilizacin, excepto en el caso de que sereinicie por programa cada registro.

    DISPOSITIVOS LGICOSMICROPROGRAMABLES

    Registros delPIC16F84A

    6.14

    Registro Direc.

    Conexin

    de laalimentac.

    Reset porMLCR

    Resetpor

    WDT

    enmodo

    normal

    Salida del modo SLEEP

    enmodo

    normal

    enmodo

    SLEEPpor WDT

    porinterrupcin

    PC - 000 h 000 h 000 h 000 h PC + 1 PC + 1

    W -xxxxxxxx

    uuuuuuuu

    uuuuuuuu

    uuuuuuuu

    uuuu uuuu uuuu uuuu

    INDF 00 h ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----

    TMR0 01 hxxxx

    xxxx

    uuuu

    uuuu

    uuuu

    uuuu

    uuuu

    uuuuuuuu uuuu uuuu uuuu

    PCL 02 h00000000

    00000000

    00000000

    00000000

    PC+1 PC+12

    STATUS 03 h00011xxx

    000uuuuu

    00010uuu

    00001uuu

    uuu0 0uuu uuu1 0uuu

    FSR 04 hxxxxxxxx

    uuuuuuuu

    uuuuuuuu

    uuuuuuuu

    uuuu uuuu uuuu uuuu

    PORT A 05 h ---x xxxx---u

    uuuu