Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Contiene los bits que permiten (1) o prohiben (0) las interrupciones provocadas por
los perifricos internos del microcontrolador y que no estaban contempladas en
INTCON.
Ocupa la direccin 8Ch y para que cumplan su funcin los bits de PIE1 es
necesario que PEIE=1 en INTCON <6>. El bit PSPIE solo es valido en los
modelos de 40 pines, mantenindose a 0 en los que tienen 28 pines.
Note 1: PSPIE is reserved on PIC16F873A/876A devices; always maintain this bit clear.
Contiene los bits de permiso de interrupcin de las tres causas que no figuran en
PIE1. La de fin de escritura en la EEPROM, colisin de bus en el modo SSP y
produccin de una captura o una comparacin en el mdulo CCP2.
Lgica de Interrupciones:
Simular un programa que trabaja la interrupcin RB0/INT para ir acumulando
los flancos de subida que vayan ingresando por el pin RB0.
list p=16f877
include "p16f877.inc"
BUCLE
nop ;No operacion
nop
goto BUCLE ;Ir a BUCLE
END
Introduccin
Una interrupcin, como el nombre lo sugiere, es un evento que hace que el
microcontrolador deje de realizar lo que est haciendo y pase a ejecutar otra
tarea. Al finalizar retorna a su actividad inicial.
El PIC16F88 tiene hasta 12 fuentes de interrupciones PIC, el PIC16F628A tiene
10 y el PIC16F877A tiene 15. El registro INTCON (figuras 7.1.1 y 7.1.2)
contiene las banderas de interrupciones generadas por diferentes eventos.
Tambin contiene los bits de habilitacin global y particular de las distintas
fuentes de interrupcin (observar las diferencias en algunos bits de este registro a
lo largo de los siguientes temas).
Las banderas de interrupciones PIC se activan independientemente del estado de
sus bits de habilitacin o del bit de habilitacin global GIE.
El bit GIE del registro INTCON permite habilitar o deshabilitar la generacin de
interrupciones. Cuando estn habilitadas (GIE=1) y el bit de habilitacin
particular y la bandera correspondiente se activan, se produce un salto al vector
de interrupcin (direccin 0x0004). Las interrupciones individuales pueden
habilitarse/deshabilitarse a travs de sus bits de habilitacin en diferentes
registros. El bit GIE se borra al producirse un reset, por lo tanto la generacin de
interrupciones est deshabilitada normalmente.
La instruccin RETFIE se emplea para salir de la rutina de servicio a la
interrupcin (ISR), as como rehabilitar la generacin de interrupciones.
Las banderas de las interrupciones INT, RB y del Timer0 se encuentran en el
registro INTCON. Las banderas de interrupcin de los perifricos estn
contenidas en los registros PIR1 y PIR2 (16F877A), mientras que los bits de
habilitacin correspondientes se encuentran en los registros PIE1 y PIE2
(16F877A). El bit de habilitacin de interrupciones de perifricos (PEIE) est en
el registro INTCON.
Interrupcin INT
La interrupcin externa en el pin RB0/INT se activa por flanco ascendente o
descendente, dependiendo del bit INTEDG del registro OPTION_REG. Cuando
aparece una transicin vlida en el pin RB0/INT, la bandera INT0IF del registro
INTCON toma un valor de 1. Esta interrupcin puede ser habilitada/deshabilitada
con el bit INT0IE del registro INTCON. La bandera INT0IF tiene que ser
borrada por software dentro de la ISR antes de rehabilitar esta interrupcin. La
interrupcin INT puede despertar al PIC, si el bit INT0IE se program en 1 antes
de ingresar al modo Sleep. El estado del bit GIE determina si se produce o no el
salto al vector de interrupcin despus del despertar (los detalles aparecen en las
secciones 6.11 MODO DE BAJO CONSUMO (Sleep) PIC16F88 o 6.19
MODO DE BAJO CONSUMO (Sleep) PIC16F628A y PIC16F877A del
libro).
void interrupt(void);
Lo nico que el usuario tiene que hacer es escribir la definicin de esta funcin
(rutina de servicio a la interrupcin ISR) para manejar interrupciones en la
aplicacin que est desarrollando. mikroC se encarga de salvar y recuperar de la
pila (stack) los registros W, STATUS, FSR y PCLATH.
//INT1.c
//Declaracin de las 12 variables necesarias para la conexin
//del mdulo LCD.
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D4 at RB0_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D7 at RB3_bit;
void main(){
OSCCON=0x40; //Oscilador interno a 1MHz.
while (OSCCON.IOFS==0);//Esperar mientras el oscilador est inestable.
ANSEL=0x00; //Bits AN6:AN0 como E/S digital.
GIE_bit=1; //Interrupciones habilitadas.
NOT_RBPU_bit=0; //Pull ups habilitados.
INTEDG_bit=0; //INT por flanco descendente.
void interrupt(void)
{
Delay_ms(20);
if (RB0_bit==0) contador++; //Pulsador presionado.
while (RB0_bit==0); //Esperar mientras siga presionado.
if (contador >100) contador=0;
INTF_bit=0;
}
Interrupciones PIC16F877A
INTERRUPCIONES PARA EL PIC 16F877A
Una subrutina de interrupcin es aquella que se ejecuta cada vez que se solicita una
interrupcin.
Hasta la opcin 4 las tiene el PIC 16F84A, uno de los PICS de la familia 16FXX. Iniciaremos
con la opcin 1: interrupcin por la terminal RB0.
Es un registro de lectura y escritura que se encuentra en los cuatro bancos de memoria del PIC,
ocupando las direcciones 0x0Bh, 0x8Bh, 0x10Bh, 0x18Bh. Tiene la misin de ser usado para
controlar las interrupciones provocadas por el TMR0, cambio de estado en las cuatro lneas de
ms peso del puerto B y activacin de la terminal RB0/INT. GIE es el bit de permiso global de
todas las interrupciones.