Está en la página 1de 5

Registro PIR2

El registro PIR2 contiene los bits de banderas da la interrupcin.

Leyenda: (-) Bit no implementado, (R/W) - Bit de lectura/escritura, (0) Despus del reinicio, el bit se pone a

o o o o o o o o o o o o o

cero

OSFIF - Oscillator Fail Interrupt Flag bit (bit de bandera de la interrupcin de fallo en el oscilador)
1 - Se ha producido un fallo en el oscilador del sistema. La entrada de reloj ha sido conmutada al oscilador interno INTOSC. El bit debe ponerse a cero por software. 0 - El oscilador del sistema funciona correctamente.

C2IF - Comparator C2 Interrupt Flag bit (bit de bandera de la interrupcin del comparador C2)
1 - La salida del comparador analgico C2 ha sido cambiada (el bit C2OUT). El bit debe ponerse a cero por software. 0 - La salida del comparador analgico C2 no ha sido cambiada.

C1IF - Comparator C1 Interrupt Flag bit (bit de bandera de la interrupcin del comparador C1)
1 - La salida del comparador analgico C1 ha sido cambiada (el bit C1OUT). El bit debe ponerse a cero por software. 0 - La salida del comparador analgico C1 no ha sido cambiada

EEIF - EE Write Operation Interrupt Flag bit (bit de bandera de la interrupcin de la operacin de escritura en la memoria EEPROM)
1 - La operacin de escritura en la memoria EEPROM se ha completado. El bit debe ponerse a cero por software. 0 - La operacin de escritura en la memoria EEPROM no se ha completado o todava no se ha iniciado.

BCLIF - Bus Collision Interrupt Flag bit (bit de bandera de la interrupcin de colisin de bus en el MSSP)
1 - Se ha producido una colisin de bus en el MSSP al ser configurado para el modo maestro I2C. El bit debe ponerse a cero por software. 0 - No se ha producido colisin de bus en el MSSP.

ULPWUIF - Ultra Low-power Wake-up Interrupt Flag bit (bit de bandera de la interrupcin para salir del modo de ultra bajo consumo - la reactivacin)
1 - Se ha cumplido la condicin de salir del modo de ultra bajo consumo. El bit debe ponerse a cero por software. 0 - No se ha cumplido la condicin de salir del modo de ultra bajo consumo.

CCP2IF - CCP2 Interrupt Flag bit (bit de la interrupcin del mdulo 2 de Comparacin/Captura/PWM - CCP2)
1 - Se ha cumplido la condicin de la interrupcin del CCP2 (CCP2 es una unidad para captar, comparar y generar una seal PWM). Dependiendo del modo de operacin (modo captura o modo comparacin), se produce una captura o la igualdad en la comparacin. En ambos casos, el bit debe volverse a cero por software. El bit no se utiliza en el modo PWM. 0 -No se ha cumplido la condicin de la interrupcin del CCP2.

Vamos a hacerlo en mikroBasic...

' Secuencia de activacin del mdulo ULPWU main: PORTA.0 = 1 ' Pin PORTA.0 se pone a uno ANSEL,ANSELH = 0 ' Todos los pines de E/S se configuran como digitales TRISA = 0 ' Los pines del puerto PORTA se configuran como salidas Delay_ms(1) ' Cargar el capacitor

PIR2.ULPWUIF = 0 PCON.ULPWUE = 1 TRISA.0 = 1 PIE2.ULPWUIE = 1 INTCON.GIE = 1 INTCON.PEIE = 1 asm SLEEP ...

' ' ' ' ' ' ' '

Bandera ULPWUIF se pone a cero Habilitar el funcionamiento del mdulo ULPWU PORTA.0 se configura como entrada Habilitar la interrupcin por el mdulo ULPWU Habilitar todas las interrupciones no enmascaradas Habilitar las interrupciones de los perifricos Instruccin Asm Pasar al modo de bajo consumo

Registro PCON
El registro PCON contiene solamente dos bits de banderas utilizados para diferenciar entre un Power-on reset (POR), un Brown-out reset (BOR), un reinicio por el temporizador perro guardin (WDT) y un reinicio externo por el pin MCLR.

Leyenda: (-) Bit no implementado, (R/W) - Bit de lectura/escritura, (1) - Despus del reinicio, el bit se pone a uno, (0) Despus del reinicio, el bit se pone a cero

ULPWUE - Ultra Low-Power Wake-up Enable bit (bit de habilitacin para salir del modo de ultra bajo consumo - la reactivacin) o o
1 - Se habilita salir del modo de ultra bajo consumo. 0 - No se habilita salir del modo de ultra bajo consumo.

SBOREN - Software BOR Enable bit (bit de habilitacin del BOR por software) o o o o o o
1 - Se habilita Brown-out reset. 0 - Se deshabilita Brown-out reset.

POR - Power-on Reset Status bit (bit de estado Power - on reset)


1 - No se ha producido Power - on reset 0 - Se ha producido Power - on reset. El bit debe ponerse a uno por software despus de que se haya producido un Power - on reset.

BOR - Brown-out Reset Status bit (bit de estado Brown - out reset)
1 - No se ha producido Brown - out reset. 0 - Se ha producido Brown - out reset. El bit debe ponerse a uno por software despus de que se haya producido Brown - out reset.

Registros PCL y PCLATH


La memoria de programa del PIC16F887 es de 8K y tiene 8192 localidades para el almace-namiento de programa. Por esta razn, el contador de programa (PC) debe de ser de 13 bits de anchura (213 = 8192). Para habilitar el acceso a una localidad de memoria de programa durante el funcionamiento del microcontrolador, es necesario acceder a su direccin por medio de los registros SFR. Como todos los registros SFRson de 8 bits de anchura, este registro de direccionamiento es creado al combinar dos registros independientes: el byte bajo (de 8 bits) del contador de programa ocupa el registro PCL, mientras que el byte alto (5 bits) ocupa el registro PCLATH. Si la ejecucin de programa no afecta al contador de programa, el valor de este registro (PCL y PCLATH) va incrementndose automtica y constantemente:+1, +1, +1, +1...

De esta manera, el programa se ejecuta como est escrito - instruccin a instruccin, seguido por un incremento de direccin constante.

Si el contador de programa ha sido cambiado por software, debe tomar en cuenta lo siguiente:

Los ocho bits inferiores (el byte inferior) del registro PCL son de lectura/escritura, mientras que los cinco bits superiores del registro PCLATH son de slo escritura. El registro PCLATH se borra con cada reinicio. En el lenguaje ensamblador, el valor del contador de programa est marcado con PCL y se refiere slo a los ocho bits ms bajos. Usted debe tener cuidado al utilizar la instruccin en ensamblador ADDWF PCL. Esto es una instruccin de salto que especifica la localidad destino al aadir un nmero a la direccin actual. Se utiliza con frecuencia para saltar a la tabla de bsqueda o a la tabla de ramificacin de programa y leerlas. Un problema surge si el registro PCLATH ha sido cambiado al aadir un nmero a la direccin actual. La ejecucin de una instruccin sobre el registro PCL causa simultneamente la sustitucin de los bits del contador de programa por los contenidos de los dos registros, PCLATH y PCL. De todos modos, el registro PCL puede acceder slo a 8 bits inferiores del resultado de la instruccin, pues el siguiente salto ser completamente incorrecto. La solucin a este problema es poner estas instrucciones en las direcciones que terminan en xx00h. De esta manera se habilitan los saltos de programa hasta 255 localidades. Si se ejecutan los saltos ms largos por medio de esta instruccin, el registro PCLATH debe ser incrementado por 1 cada vez que se produce desbordamiento en el registro PCL. Al llamar una subrutina o al ejecutarse un salto (instrucciones CALL y GOTO), el microcontrolador es capaz de proporcionar solamente direccionamiento de 11 bits. Similar a la RAM que est dividida en bancos, la ROM est dividida en las cuatro pginas de 2K cada una. Las instrucciones dentro de estas pginas se ejecutan regularmente. Dicho de manera sencilla, como el procesador est proporcionado con una direccin de 11 bits del programa, es capaz de direccionar cualquier localidad dentro de 2KB.

La siguiente figura muestra el salto a la direccin del subprograma PP1. Sin embargo, si una subrutina o una direccin de salto no est en la misma pgina que la localidad de salto, se deben proporcionar dos bits superiores que faltan al escribir en el registro PCLATH. La siguiente figura muestra el salto a la direccin de la subrutina PP2.

En ambos casos, cuando la subrutina llega a las instrucciones RETURN, RETLW o RETFIE (vuelta al programa principal), el microcontrolador continuar con la ejecucin de programa desde donde se interrumpi, ya que la direccin de retorno se empuja y se guarda en la pila que consiste en registros de 13 bits, como hemos mencionado.

DIRECCIONAMIENTO INDIRECTO
Adems del direccionamiento directo, que es lgico y claro (basta con especificar la direccin de un registro para leer su contenido), este microcontrolador es capaz de realizar el direccionamiento indirecto por los registros INDF y FSR. A veces esto facilita el proceso de escribir un programa. El procedimiento entero est habilitado ya que el registro INDF no es real (no existe fsicamente), sino que solamente especifica el registro cuya direccin est situada en el registro FSR. Por esta razn, escribir o leer los datos del registro INDF realmente significa escribir o leer del registro cuya direccin est situada en el registro FSR. En otras palabras, direcciones de registros se especifican en el registro FSR, y su contenido se almacena en el registro INDF. La diferencia entre el direccionamiento directo e indirecto se muestra en la siguiente figura: