Contenido>Indice>Intro Tutor

INTRODUCCIÓN


Una interrupción es una señal de llamada que detiene temporalmente la ejecución del programa principal para realizar una nueva tarea.

Cuando se habla de "realizar una nueva tarea", se trata de la ejecución de una serie de instrucciones que realizan una acción determinada, pero limitada en el tiempo, y que al finalizar hará que se siga ejecutando el programa principal justo en el punto donde y como de dejó antes de producirse la interrupción.

flujo_inerrupcion.GIF (1130 bytes)

Este conjunto de instrucciones o sentencias, forman lo que se conoce como subrutina de servicio de interrupción. Cada fuente de interrupción del µC, tiene reservada un área de memoria de código para albergar este conjunto de instrucciones, 8 bytes contiguos para la familia 51. La primera dirección de estas 8, recibe el nombre de vector de interrupción. Si la extensión de la subrutina de interrupción supera el área reservada para ella, entonces mediante instrucción se salta a otra zona libre donde no haya problemas de espacio.

Cuando se produce una interrupción, la CPU guarda en memoria de pila el valor del contador de programa PC (que contiene la dirección de código que contiene la siguiente instrucción que se tiene que ejecutar, pero después de finalizarse la interrupción) y seguidamente lo carga con el vector de interrupción.

Así, se comenzará con la ejecución de la subrutina de servicio de interrupción y lo primero que tendrá que hacer es, guardar en la memoria de pila (empilar) los valores de los registros utilizados por el programa principal para que no sean solapados por los de la subrutina, después realizará la acción correspondiente a la interrupción ejecutando las instrucciones necesaria para ello, seguidamente, recuperará de la pila (desempilar) los valores de los registros utilizados por el programa principal, pero en orden inverso, y finalmente dará fin a la subrutina la instrucción de retorno de subrutina de interrupción, RET I, pero antes desactivará el flag que solicito es interrupción si es que no lo desactiva el sistema de interrupciones

A la vuelta de la interrupción, el programa seguirá ejecutándose en las mismas condiciones en las que se dejó antes de la misma y habrá sufrido una demora de tiempo que es la suma de los tiempos: de salto de ida, de ejecución de todas las instrucciones de la subrutina, de salto de vuelta.

i088.gif (541 bytes)La memoria de pila es de tipo LIFO (Last In Frist Out), la instrucción para el empilado es PUSH, y para el desempilado, POP. El contador de programa, PC, es el único registro que empila y desenpila la CPU de la familia 51 de forma automática, es decir, por hardware. El resto de los registros compartidos por el programa principal y la subrutina, tienen que ser empilados y desempilados por software, de forma manual, utilizando las instrucciones arriba mencionadas, tarea que corresponde al programador.

El 8051 básico tiene cinco fuentes de interrupción con 2 niveles de prioridad. Todas estas fuentes de interrupción son << enmascarables>>, es decir, se pueden habilitar por software. Después de la inicialización todas las interrupciones están inhibidas.

fuentes_de_interup.GIF (1726 bytes)

El registro IE sirve para habilitar o inhibir individualmente las fuentes de interrupción.

   


   Contenido>Indice>Intro Tutor