Anda di halaman 1dari 5

INTERRUPCIONES

INTERRUPCIONES
Una de las caractersticas ms importante de los microcontroladores, es que tienen la posibilidad de manejar interrupciones, que son mecanismos por los cuales un evento interno o externo puede interrumpir la ejecucin de un programa en cualquier momento. A partir de ese momento se produce un salto a una subrutina de a tencin de interrupcin. sta subrutina atiende inmediatamente el evento y retoma la ejecucin del programa donde estaba en el momento de ser interrumpido, continuando con la tarea justo donde se dej. Hay dos tipos de interrupciones posibles: Mediante una accin externa, es decir por la activacin de uno de sus pines. Interna, por ejemplo cuando ocurre el desbordamiento de uno de sus registros. Mientras se est ejecutando una interrupcin no se puede producir otra interrupcin, el pic no lo permite. Una cosa importante a tener en cuenta al usar interrupciones es que cuando estas se producen podramos estar trabajando con registros que pueden ser modificados en la propia interrupcin, como el acumulador o el STATUS. Para que la interrupcin no eche a perder el buen funcionamiento del programa principal conviene guardar los valores de estos registros en otras variables que no vayamos a modificar. Antes de salir de la interrupcin volvemos a restaurar los valores guardados y todo solucionado.

FUENTES DE INTERRUPCIN
En el PIC 16f84 hay 4 fuentes de interrupciones: 1. Interrupcin externa INT: Por el pin RB0/INT, que regresa al PIC del modo SLEEP (interrupcin externa). 2. Interrupcin RBI: Por los pines RB4 a RB7, configurados como entrada y en caso de que alguno de ellos cambie de estado (interrupcin externa). 3. Interrupcion T01: Por desbordamiento del registro TMR0, cuando este registro pasa de 255 a 0 en decimal 0xFF a 0x00 en hexa (interrupcin interna). 4. Interrupcin EE1: Al completar la escritura de la EEPROM de datos (interrupcin interna). El programa deber tener mecanismos para identificar la causa de la interrupcin. Esto se hace mediante las banderas de interrupciones, cada interrupcin tiene su propia bandera y es un bit del registro INTCON, que cambia de estado de 0 a 1 cuando se produce la interrupcin, salvo la ltima que se encuentra en el registroEECON1

FUNCIONAMIENTO DE UNA INTERRUPCIN


1. Salva el valor actual del contador de programa (PC), en la pila.

2. El bit GIE (Global Interrup Enable) del registro INTCON es puesto a cero, que deshabilita cualquier otra interrupcin.
3. El PC se carga con el valor de 004h, que es la posicin del vector de interrupcin. 4. Comienza a ejecutarse el programa de atencin a la interrupcin que se encuentra partir de la direccin 004h, o indica a que direccin de programa saltar, donde esta la subrutina. Hay un nico vector de interrupcin en la direccin 004h. Sea cual sea la interrupcin, el programa se carga en la direccin 004h. A continuacin se debe comprobar los diferentes indicadores para saber cual es el dispositivo que produjo la interrupcin y actuar segn sea el caso.

En el PIC16F84 las interrupciones se comportan casi como subrutinas, ya que produce el mismo efecto que si el programa tuviera un call 004h en el punto donde se produjo la interrupcin, ejecutando la subrutina de atencin de interrupcin.

REGISTRO INTCON
El programa deber tener mecanismos para identificar la causa de la interrupcin. Esto se hace mediante las banderas de interrupciones, cada interrupcin tiene su propia bandera y es un bit del registro INTCON, que cambia de estado de 0 a 1 cuando se produce la interrupcin, salvo la ltima que se encuentra en el registroEECON1

Bits del registro INTCON

Para RB0/INT la bandera es INTF (Bit1) Para los pines RB4 a RB7 , es RBIF (Bit0) ParaTMR0 , es T0IF (Bit2) Para la EEPROM , es EEIF (Bit4) en el registro EECON1.

Anda mungkin juga menyukai