CAUSAS DE INTERRUPCION
Los pic16f877a tienen 4 causas de interrupcion o fuentes posibles de interrupcion:
1.- Activacion de la patita RB0/INT
2.- Desbordamiento del temporizador TMR0
3.- Cambio de estado en una de las 4 patitas de mas peso (RB7 - RB4) de la puerta B
4.- Finalizacion de la escritura en la EEPROM de datos
Cuando ocurre cualquiera de los 4 sucesos indicados se origina una peticion de interrupcion, que si se acepta y se atiende comienza depositando el valor del PC (contador de programa) actual en la Pila, poniendo el bit GIE = 0 y cargando en el PC el valor 0004 H, que es el vector de interrupcion donde se desvia el flujo de control.
Cada fuente de interrupcion dispone de un señalizador o "flag", que es un bit que se pone automaticamente a 1 cuando se produce. Ademas cada fuente de interrupcion tiene otro bit de permiso, que segun su valor permite o prohibe la realizacion de dicha interrupcion.
EL REGISTRO DE CONTROL DE INTERRUPCION "INTCON"
La mayor parte de los señalizadores y bits de permiso de las fuentes de interrupcion en los pic16f887a estan implementadas sobre los bits de registro "INTCON, que ocupa la direccion 0bH del banco 0, hallandose duplicada en todos los bancos.
GIE: Permiso global de interrupcion
1: Permite la ejecucion de todas las interrupciones
0: Prohibe todas las interrupciones
EEIE: Permiso de interrupcion por fin de escritura de la EEPROM
1: Permite se origine una interrupcion cuando termina la escritura de la EEPROM
0: Prohibe esta interrupcion
T0IE: Permiso de interrupcion de sobrepasamiento del TMR0
1: permite una interrupcion al desbordarse el TMR0
0: Prohibe esta interrupcion
INTE: Permiso de interrupcion por el pulso externo en RB0/INT
1: Interrupcion al activarse RB0/INT
0: Prohibe esta interrupcion
RBIE: Permiso de interrupcion por cambio de estado en RB7 - RB4
1: Permite esta interrupcion
0: Prohibe esta interrupcion
T0IF: Señalizador o bandera de sobrepasamiento del TMR0
1: se pone a 1 cuando ha ocurrido el sobrepasamiento
0: Indica que el TMR0 no se ha desbordado
INTF: Señalizador o bandera de activacion de la patita RB0/INT
1: se pone a 1 cuando ha ocurrido el pulso
0: no ha ocurrido nada
RBIF: Señalizador o bandera de cambio de estado de las patitas RB7-RB4
1: se pone a 1 cuando ha ocurrido
0: no ha ocurrido nada
|