Está en la página 1de 8

INTERRUPCIONES

Se trata de un acontecimiento que hace que el micro deje de lado lo que se encuentra realizando, atienda ese suceso y luego regrese y contine con la actividad que estaba realizando. Hay dos tipos de interrupciones posibles, una es mediante una accin externa (es decir por la activacin de uno de sus pines), la otra es interna (por ejemplo cuando ocurre el desbordamiento de uno de sus registros)

INTERRUPCIONES
Cada fuente de interrupcin posee dos bits asociados a ella: Una Bandera (terminada en F) de Interrupcin, la cual es activada (en alto) por el evento para solicitar una interrupcin. Una Mscara (terminada en E) Local de Interrupcin, la cual si est desactivada (en bajo) bloquear la solicitud de interrupcin correspondiente, pero si est activada (en alto) permitir la solicitud de Interrupcin.

INTERRUPCIONES
Adems existe una mscara de interrupcin global GIE (INTCON<7>), la cual bloquear todas las solicitudes de interrupcin si est desactivada (GIE=0). Algunas fuentes de interrupcin tambin poseen una segunda mscara de interrupcin global denominada PEIE (INTCON<6>). De hecho, acta sobre todas las fuentes de interrupcin, excepto las interrupciones debidas a al pin INT, el sobre flujo del Timer 0 y las interrupciones del puerto B (INTF, T0IF y RBIF).

INTERRUPCIONES
De acuerdo a lo anterior, la nica manera en que una solicitud de interrupcin provoca en efecto una interrupcin en el programa es cuando: La mscara global est activada (GIE=1). (En su caso) la mscara global de perifricos est activada (PEIE=1) La mscara local est activada Ocurre un evento que activa la bandera correspondiente.

INTERRUPCIONES
Proceso de reconocimiento de una interrupcin
Cuando se cumplen las siguientes tres condiciones simultneamente:

El bit GIE est activado (en alto) Se produce un evento que solicita interrupcin (se activa alguna de las banderas de interrupcin) Est activada la mscara correspondiente a la bandera activada.

La CPU es interrumpida inmediatamente y ejecuta lo siguiente: Termina la ejecucin de la instruccin actual. Desactiva el bit GIE (GIE=0) para bloquear cualquier otra solicitud de interrupcin. La direccin de programa de la siguiente instruccin a ejecutar es guardada en el stack. Ejecuta un salto a la localidad de programa 0004h denominada vector de interrupcin, en donde el usuario deber haber colocado el inicio de la rutina de atencin a la interrupcin. Ejecuta la rutina de atencin a la interrupcin escrita por el usuario, en la cual ste podr constatar la fuente de interrupcin consultando por comparacin las banderas de interrupcin. La rutina de atencin a la interrupcin deber limpiar los bits de la bandera que solicit la interrupcin antes de rehabilitar interrupciones, para evitar interrupciones recursivas. La rutina de atencin deber terminar con una instruccin RETFIE(en asembler), la cual activa nuevamente el bit GIE (GIE=1) y lee el stack para continuar la ejecucin del programa que fue interrumpido en la siguiente instruccin.

INTERRUPCIONES
#include <htc.h> __CONFIG(0x3F71); void main(void) { while (1){ } }

void interrupt nombre (void) {


}

include <htc.h> __CONFIG(0x3f71); void init(void) { // port directions: 1=input, 0=output TRISB = 0b00000000; }

void interrupt nombre (void) { if (T0IF==1) { T0IF=0; PORTB=~PORTB; TMR0=60; }

void main(void) { init(); } T0CS=0; // Con valor de cero acta como temporizador PSA=0; // prescaler asignado al timer 0 // bits configuracin prescaler como indica la tabla 111 = 256 GIE=1; // Interrupcin global T0IE=1: // habilitador interrupcin timer 0 PS0=1; PS1=1; PS2=1; //OPTION=0b00000111; se puede declarar utilizando el registro completo T0IF=0; TMR0=60; while (1) { } }

También podría gustarte