Existen de tres a doce eventos que pueden generar interrupciones en los PIC16CXX existentes hasta el momento, pero nada impide que puedan agregarse más en versiones futuras.
Funcionamiento
En los 16CXX las interrupciones se comportan casi exactamente igual
que las subrutinas. Desde el punto de vista del control del programa, al
producirse una interrupción se produce el mismo efecto que ocurriría
si el programa tuviese un CALL 0004h en el punto en que se produjo
la interrupción. En uno de los registros de control del sistema
de interrupciones existe un bit de habilitación general de interrupciones
GIE, que debe ser programado en 1 para que las interrupciones puedan actuar.
Al producirse una interrupción, este bit se borra automáticamente
para evitar nuevas interrupciones. La instrucción RETFIE que se
utiliza al final de la rutina de interrupción, es idéntica
a un retorno de subrutina, salvo que además coloca en uno automáticamente
el bit GIE volviendo a habilitar las interrupciones. Dentro de la rutina
de interrupción, el programa deberá probar el estado de los
flags de interrupción de cada una de las fuentes habilitadas, para
detectar cual fue la que causo la interrupción y así decidir
que acción tomar.
Fuentes
La señal que produce la interrupción es en realidad una
sola, que resulta de la combinación de todas las fuentes posibles
y de los bits de habilitación. Existen dos grupos de fuentes, unas
que se habilitan con solo colocar en uno el bit GIE, y otras que además
necesitan que este puesto a uno el bit PEIE. En algunas versiones de los
16CXX solo existe el primer grupo. Además, cada fuente de interrupciones
tiene su respectivo bit de habilitación individual.
Las fuentes de interrupción varían con cada versión, y pueden ser por ejemplo:
· Interrupción externa por pin RB0/INT
· Desborde del Timer 0 o RTCC
· Cambio en el estado de los bits 4 a 7 del puerto B
· Desborde del timer 1
· Desborde del timer 2
· Interrupción del capture/compare 1
· Interrupción del capture/compare 2
· transmisión o recepción de un caracter por la
interface serie sincrónica
· transmisión o recepción de un caracter por la
interface serie asincrónica
· Fin de conversión A/D
· Lectura/escritura del puerto paralelo de comunicación
con otros microprocesadores
· Escritura de EEPROM finalizada