Professional Documents
Culture Documents
16F84
Pgina #1
8/4/2010 8:57:57 AM
Sistemas Digitales II
16F84.
Opera con arquitectura Harvard. Esta arquitectura accesa el programa y los datos en dos separadas memorias. El CI tiene un canal para la memoria del programa y un canal para la memoria de los datos. Separando datos y programa se mejora la arquitectura de Von Neumann donde los datos y el programa se ejecutan en el mismo ciclo de busqueda (accesan el mismo canal). Todas las instrucciones se ejecutan en 40 nS @ 10 Mhz excepto para programas que llevan saltos. El PIC 16F84 puede direccionar 1K x 14 de memoria de programa. El 16F84 tiene una ALU de 8 bits y un registro de trabajo (W). La ALU es una unidad aritmetica y lgica de proposito general, procesa operaciones booleanas y lgicas entre el registro de trabajo y los registros de archivo.
1.0.- ORGANIZACION DE LA MEMORIA DEL 16F84. Tiene dos bolques de memoria, estos son memoria de datos y memoria de programa, cada bloque tiene su propio canal. La memoria de datos se divide en dos: 1) RAM de proposito general. 2) Funcin especial de registros (SFRs).
1.1.- Organizacin del programa de memoria. Tiene un contador de programa con capacidad para direccionar 8k x 14 en espacio para memoria del programa. Para el 16F84 los primeros 1K x 14 (0000h - 03ffh) son para la implementacin fisica. Cuando se accesa ms de la localizacin fisica causa wrap around. El vector de reinicio esta en 0000h y el vector de interrupciones esta en 0004h. De 0000h a 03ffh se conoce como espacio disponible de memoria para el usuario. 1.2.- Organizacin de la memoria de datos.
MC Sergio Lujn Maldonado Pgina #2 8/4/2010 8:57:57 AM
Sistemas Digitales II Esta dividida en dos areas: 1) Registros de Funcin Especial (FSR). 2) Registros de Proposito General (GPR). 1.2.1.- Registros de Funcin Especial. Estos registros son usados por el CPU para controlar la operacin del dispositivo. Estos son registros se encuentran en RAM esttica. En la figura 1 se muestran los registros.
Direccin de Archivo Direccin de Archivo
00h 01h 02h 03h 04h 05h 06h 07h 08h 09h 0Ah 0Bh 4Fh 50h
* Dir. Indirecto * TMR0 OPTION PCL PCL STATUS STATUS FSR FSR PORTA TRISA
80h 81h 82h 83h 84h 85h 86h 87h 88h 89h 8Ah 8Bh CFh D0h
* No es un registro fisico
FFh
Figura 1.- Mapa de Memoria de los registros de archivo. 4Fh - 0Ch = 43h ( Los 68 registros son 44H, de 0 a 43H). Poner hoja con el resumen de los registros. Los registros de funcin especial se dividen en dos: a) Ncleo (Core) b) Perifericos.
Pgina #3
8/4/2010 8:57:57 AM
Sistemas Digitales II
R/W-0 RPO
R-1 TO
R-1 PD
R/W-x Z
R/W-x DC
R/W-x C Bit 0
Bit 7: IRP: Register Bank Select Bit. (Usado en direccionamiento indirecto). 0 = Banco 0,1 (00h - FFh) 1 = Banco 2,3 (100h - 1ffh) El IRP no se usa por el PIC 16F84. Bit 6-5: RP1:RP0: Register Bank Select Bits. (Usado en direccionamiento indirecto). 00 = Banco 0 (00h-7Fh) [Usado para variables o datos]. 01 = Banco 1 (80h-FFh) [Usado para accesar el hardware y puertos]. 10 = Banco 2 (100h-17Fh) 11 = Banco 3 (180h-1FFh) Cada banco es de 128 Bytes. Solamente RP0 es usado por el 16F84. Bit 4,3 . TO y PD.- Indican el modo en el cul el CPU responde a un inicio de ejecucin o a un wake up del modo sleep. TO PD FUNCION
1 0 0 1 1 1 0 0 POWER ON WDT RESET WDT WAKE UP RESET O INT DURANTE "SLEEP"
Bit 2: Z: Zero Bit. 1 = El resultado de una operacin aritmetica fue cero. 0 = El resultado de una operacin aritmetica no fue cero.
Pgina #4
8/4/2010 8:57:57 AM
Sistemas Digitales II Bit 1: DC: Digit Carry/Borrow. Cuando es mayo de 0Fh. 1 = Se tuvo acarreo. (Del cuarto bit menos significativo). 0 = No se tuvo acarreo. Bit 0: C: Carry/Borrow. 1 = Acarreo del digito ms significativo ocurri. 0 = No ocurri acarreo en el digito ms significativo. Contador del Programa. (PCL y PCLATH). El contador del programa (PC) es de 13 bits de longitud. El PCL es el registro del byte bajo (bits de 0 a 7), en el cual se puede leer y escribir. La parte alta del PC (bits del 8 al 12) no es directamente para leerse ni tampoco para escribirse esta parte proviene del registro PCLATH (PC Latch). El PCLATH es un registro de retencin para el registro PC. El contenido del PCLATH es transferido a la parte alta del PC cuando el PC es cargado con un valor nuevo, esto ocurre en las transferencias de control (CALL, GOTO) o cuando se escribe en el PCL. 12 8 7 0
PCLATH
PCL
El 16F84 tiene 1K para la memoria del programa. Las instrucciones de transferencia de control (CALL, GOTO) tiene 11 bits de direccionamiento, estos 11 bits permiten rangos de transferencias de 2K del programa de memoria, esto es con la finalidad para futura expasin de memoria del 16F84. Los dos ltimos bits ms significativos del PCLATH que especifican la pgina de la memoria del programa, estos bits se utilizan para transferencia de control o cuando se ejecuta una interrupcin (GOTO o CALL). El 16F84 ignora estos bytes y no es recomendable cambiarlos, estan includos para compatibilidad con productos futuros.
Nota: Son 3 formas de manipular la informacin en el PIC: 1) Valores Inmediatos. 2) Direccionamiento de registro. 3) Direccionamiento Indirecto.
Pgina #5
8/4/2010 8:57:57 AM
Sistemas Digitales II
Direccionamiento indirecto, registro INDF y FSR. El INDF no es un registro fsico. El direccionamiento del INDF la direccin esta contenida en el registro FSR, el FSR es un apuntador y esto es direccionamiento indirecto y el INDF almacena el dato. Los datos se almacenan y se obtienen en forma de arreglo. Ejemplo de direccionamiento indirecto. (INDF y FSR). Registro de archivo 05 contiene el valor de 10h. Registro de archivo 06 contiene el valor de 0Ah. Carga el valor de 05 en el registro FSR. Una lectura en el registro INDF va a retornar el valor de 10h. Incrementar el valor del registro FSR en uno (FSR=06h). Una lectura en el registro INDR va a retornar el valor de 0Ah. *** NOTA:Ver la figura 1 para ver el mapeo de los registro de archivo, Tambin se puede usar el registro w para pasar valores al INDF y FSR. Cuando se trabaja con direccionamiento indirecto se tiene que hacer uso del registro FSR como apuntador y del registro INDF para almacenar el dato. El registro FSR puede accesar los 256 registros (0 a 255), pero accesa primero 128 y despus 128 que son los que contiene cada banco (banco 0 y banco 1), y para accesar a cada banco se hace por medio del Registro de Status. Se puede ve como direccionamiento indirecto: mov [dir],reg ;Instrucciones equivalente de Microprocesador 80X86 mov reg,[dir] ; No las soporta el PIC.
Pgina #6
8/4/2010 8:57:57 AM
Sistemas Digitales II
Puertos de E/S
El 16F84 tiene dos puertos que son PORTA y PORTB, algunas patas del circuito son multiplexadas con otras funciones para realizar otras tareas en el circuito. Registros PORTA y TRISA. El puerto A es de 5 bits de longitud con latch (RA4, RA3, RA2, RA1, RA0). RA4 es una entrada del tipo Schmitt Trigger (Un circuito Schmitt esta diseado para aceptar una seal que cambia con lentitud y produce una salida libre de oscilaciones, tienen tiempos de transicin muy breves normalmente alrededor de los 10 nS que son independientes de las caractersticas de la seal de entrada). Tambin RA4 es una salida de drenaje abierto (Open Drain Output.- Algunos dispositivos CMOS [Complementary Metal Oxide Semiconductor] estn disponibles con salida de drenaje abierto que es lo opuesto a colector abierto en TTL. En la salida se necesita una resistencia externa para producir un nivel de voltaje alto, por que ne la configuracin se ha eliminado el MOSFET de canal P). Todas las otras patas del puerto A tienen entradas y salidas TTL. El registro TRISA configura las entradas del puerto como entradas o como salidas. Ponendio 1 en el bits pone la pata correspondiente como entrada y poniendo 0 pone la pata correspondiente como salida.
RA4/TOCK1 es pata compartida para usarse como entrada para reloj externo. TTL.- Entradas TTL. ST.- Schmitt Trigger. O5h 85h BIT
BIT 7 BIT 6 BIT 5 BIT 4 BIT 3 BIT 2 BIT 1 BIT 0 PORTA * * * RA4/TOCK1 RA3 RA2 RA1 RA0 TRISA * * * TRISA4 TRISA3 TRISA2 TRISA1 TRISA0
Pgina #7
8/4/2010 8:57:57 AM
Sistemas Digitales II
Registros PORTB y TRISB. El puerto B es bidireccional de 8 bits, el registro de direcciones para los datos de este puerto es el registro TRISB. Las patas RB7, RB6, RB5, y RB4 tienen opcin para interrupcin, solamente se activa cuando se pueden configurar cuando el puerto esta funcionando en el modo de entrada. Un 1 en registro TRISB pone la pata correspondiente como entrada y 0 la pone como salida. Cada pata del puerto B tiene internamente weak pull up. (Weak-->Debil, poco, etc.). Un bit de control activa o desactiva esta opcin, en el registro OPTION BIT7.Esta opcin se desactiva automaticamente cuando se configura el puerto como salida.
NOMBRE RB0/INT RB1 RB2 RB3 RB4 RB5 RB6 RB7 BIT bit 0 bit 1 bit 2 bit 3 bit 4 bit 5 bit 6 bit 7 BUFFER TTL/ST (1 TTL TTL TTL ST TTL TTL/ST (2 TTL/ST (2 FUNCION E/S O INT EXTERNA E/S E/S E/S E/S (@) E/S (@) E/S (@) (&&) E/S (@) ($$)
(1 Es buffer de entrada Schmitt Trigger cuando se configura como interrupcin externa (2 Es buffer de entrada Schmitt Trigger cuando se configura como modo de programacin serie @ Con opcin de interrupcin. && Reloj de la programacin serie $$ Datos de la programacin serie.
BIT
BIT 7 BIT 6 BIT 5 BIT 4 BIT 3 BIT 2 BIT 1 BIT 0
O6h PORTB RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0
86h TRISB TRISB7 TRISB6 TRISB5 TRISB4 TRISB3 TRISB2 TRISB1 TRISB0
81h OPTION RBPU' INTEDG T0CS T0SE PSA PS2 PS1 PS0
Pgina #8
8/4/2010 8:57:57 AM
Sistemas Digitales II
OPTION REGISTER. (Registro Opcin). En este registro se puede leer y escribir, contiene 8 bits que sirven para configurar el: TMR0/WDT pre-escalable, INT, y en el puerto B Weak Pull Up.
R/W RBPU' bit 7 R/W INTEDG 6 R/W T0CS 5 R/W T0SE 4 R/W PSA 3 R/W PS2 2 R/W PS1 1 R/W PS0 0
Bit 7: RBPU. Habilita Pull Up en el puerto B. 1 = Se des-habilita Pull Up. 0 = Se habilita Pull Up. Bit 6: INTEDG. Interrupt Edge Selector.Bit para seleccionar flanco de interrupcin. 1 = Interrupcin en el flanco ascendente. 0 = Interrupcin en el flanco descendente. Bit 5: T0CS. TMR0 Signal Source. Bit de seleccin para la fuente de reloj. 1 = Transicin en la pata RA4/T0CKI 0 = Ciclo interno de pulso de reloj (CLKOUT). BIT 4: T0SE. TMR0 Signal Edge. Selecciona flanco para reloj. 1 = Incrementa en flanco negativo (1-0) en la pata RA4/T0CKI. 0 = Incrementa en flanco positivo (0-1) en la pata RA4/T0CKI. BIT 3: PSA. Prescaler Asignment. Asignacin Pre-escalable. 1 = Asignacin pre-escalable para WDT. 0 = Asignacin pre-escalable para TMR0. BITS 2,1,0: PS2, PS1, PS0. Prescaler Value. Bits de seleccin para la preescala.
PS 210 000 001 010 011 100 101 110 111 TMRO TIEMPO 1:2 1:4 1:8 1:16 1:32 1:64 1:128 1:256 WDT TIEMPO 1:1 1:2 1:4 1:8 1:16 1:32 1:64 1:128
Pgina #9
8/4/2010 8:57:57 AM
Sistemas Digitales II
ITCON REGISTER. Este registro se puede leer y escribir, contiene bits que se utilizan para habilitar las interrupciones. Una interrupcin es un evento de hardware que detiene la ejecucin de la linea del programa para responder al evento del hardware por medio de software y una vez que se ejecuta vuelve a la linea del programa donde se di la interrupcin.R/W interrupcin R/Wdiferente y tiene un manejador de esta. Cada R/W es R/W R/W R/W R/W R/W
GIE bit 7 EEIE 6 T0IE 5 INTE 4 RBIE 3 T0IF 2 INTF 1 RBIF 0
Bit 7: GIE. Global Interrupt Enable. Habilitador Global de Interrupciones. 1 = Habilita todas las interrupciones. 0 = Des-habilita todas las interrupciones. Bit 6: EEIE. EE Habilitacin de interrupcin completa. 1 = Hablita EE, escribe interrupcin completa. 0 = Des-habilita EE. Bit 5: T0IE. TMR0 Interrupt Enable. Habilitacin de interrupcin del TMR0. 1 = Habilita la interrupcin TMR0. 0 = Des-habilita la interrupcin TMR0. BIT 4: INTE. Interrupt Enable. Habilita interrupcin RB0/INT. 1 = Habilita la interrupcin RB0/INT. 0 = Des-habilita la interrupcin RB0/INT. BIT 3: RBIE. RB Interrupt Enable.Habilita la interrupcin para cambiar de puerto. 1 = Habilita la interrupcin cambio de puerto RB. 0 = Des-habilita la interrupcin cambio de puerto RB. BIT 2: T0IF. TMR0 Overflow Interrupt Flag. Bandera de desbordamiento. 1 = TMR0 tiene sobre-flujo. ( De FFh a 00h) 0 = TMR0 no tiene sobre-flujo. BIT 1: INTF. RB0/INT Interrupt Flag. Bandera de interrupcin. 1 = Ocurri interrupcin RB0/INT. 0 = No Ocurri interrupcin RB0/INT. BIT 0: RBIF. RB Port Change Interrupt. Cambio en RB. 1 = Se activa cuando cambia unos de los bits RB7, RB6, RB5, RB4. 0 = Cuando no cambiaron los bits RB7, RB6, RB5, RB4.
Pgina #10
8/4/2010 8:57:57 AM
Sistemas Digitales II
Mdulo TIMER0 y registro TMR0. Un timer lo podemos definir como un contador con entrada y salida en paralelo que puede ser accesado por el bus interno del procesador. Un timer usa fuente constante de reloj. El 16F84 tiene un mdulo de timer nombrado como TIMER0 el cual tiene las siguientes caracteristicas: * Contador de 8 bits. * Se puede leer y escribir. * Precalador programable de 8 bits. * Seleccin de reloj externo o interno. * Interrupcin de desbordamiento de FFh-00h. * Seleccin de flanco para reloj externo. Memoria de datos EEPROM.(EEPROM Data Memory). Para accesar esta memoria se usan los siguientes registros de archivos de funcin especial: * EECON1 * EECON2 * EEDATA * EEADR EEDATA. Contiene 8 bits de datos los cules se pueden leer y escribir. EEADR. Contiene la direccin de las localides de la EEPROM. Este registro puede direccionar 256 localidades de memoria en la EEPROM. En el 16F84 solo los primeros 64 bytes estan implementados. Los 2 ultimos bits deben ponerse a 0. ( 2 a la 6 = 64 ). Registros EECON1 y EECON2. El registro EECON1 es de control, contiene implementados 5 bits los 3 restantes ms significativos no existen y se leen como cero.
U bit 7 U bit 6 U bit 5 R/W EEIF bit 4 R/W WRERR bit 3 R/W WREN bit 2 R/S WR bit 1 R/S RD bit 0
Pgina #11
8/4/2010 8:57:57 AM
Sistemas Digitales II
Bit 4. EEIF. EEPROM Interrupt Flag. Bandera de interrupcin de escritura. 1 = Se completo operacin de escritura. 0 = No se completo operacin de escritura o no ha iniciado operacin. Este bit debe ser limpiado por medio de software. Bit 3. WRERR. EPROM Error Flag. Bandera de error. 1 = Operacin de escritura terminada prematuramente. (Por un reset). 0 = Se completo la operacin. Bit 2. WREN. EEPROM Write Enable Bit. Habiltar escritura. 1 = Permite ciclos de escritura. 0 = No permite escribir en la EEPROM. Bit 1. WR. Write Control Bit. Bit de control de escritura. 1 = Inicia ciclo de escritura. Se pone en 0 por Hardware, solamente mediante software se activa 1). 0 = El ciclo de escritura se complet. Bit 0. RD. Read Control Bit. Bit de control de lectura. 1 = Inicia ciclo de lectura. Se pone en 0 por Hardware, solamente mediante software se activa 1). 0 = No inicia ciclo de lectura. El registro EECON2 no es un registro fsico y si se lee este registro todos los bits se leen como CEROS. Este registro se utiliza solamente para la secuencia de escritura. Caractersticas Especiales del CPU. Todos los microcontroladores tienen funciones especiales para trabajar en aplicaciones de tiempo real, las caractersticas del 16F84 son las siguientes: Seleccin de Oscilador. Reset ( POR.- Power on Reset, PWRT.- Power up Timer, OST.- Oscillator Start up Timer). Interrupciones. WDT (Watch Dog Timer). Sleep
Pgina #12
8/4/2010 8:57:57 AM
Sistemas Digitales II
ORGANIZACION DE LA MEMORIA. Se divide en dos: 1) Memoria del programa. 2) Memoria de datos, la cual esta se puede dividir en 2: 2.1) Los registros de archivos de funcin especial (RAM). 2.2) La memoria de datos en EEPROM 64 x 8. Memoria del programa (FLASH ROM) Para el 16F84 tiene implementados 1K x 14 de memoria. En esta memoria se graban o se almacenan el programa o cdigos que el microncontrolador debe ejecutar. El 16F84 tiene un contador de programa de 13 bits el cual puede direccionar 8K x 14, pero solamente tiene implementados 1K x 14 (0000h03FFh). Vector de Reset. Cuando ocurre un reset en el microcontrolador, el contador del programa se pone en 0000h. En la primera direccin (0000h) se debe poner todo lo relacionado con la inicializacin del mismo. Vector de Interrupcin. Cuando el microcontrolador recibe una seal de interrupcin, el contador del programa apunta a la direccin 04h de la memoria, aqu se deben escribir todas las instrucciones necesarias para atender dicha interrupcin. Pila (Stack). Se usan para guardar el valor del contador del programa cuando se hace un llamado a una subrutina o cuando se atiende una interrupcin. Contiene 8 niveles de pila.
Pgina #13
8/4/2010 8:57:57 AM