Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Las interrupciones son recursos muy empleados en programación de sistemas digitales, que permiten incluso
la emulación de sistemas multitarea.
Una interrupción es la detención temporal en la ejecución del programa principal, de la tarea principal, debido
a la aparición de un evento ante el cual el sistema digital debe responder de forma inmediata. La respuesta se
realiza en forma de ejecución de una función, llamada función de atención a la interrupción.
El 8051 básico tiene cinco fuentes de interrupción, mientras que la versión 8052 cuenta con seis. Todas estas
fuentes de interrupción son “enmascarables”, es decir, se pueden habilitar o no por software. Después de la
inicialización del microcontrolador, todas las interrupciones están inhibidas. El registro IE sirve para habilitar
o inhibir individualmente las fuentes de interrupción.
Fuentes de Interrupción
Las cinco fuentes de interrupción que posee el microcontrolador 8051 son:
Se puede definir que ocurra una interrupción externa ante una activación a nivel bajo (interrupción por nivel)
o por la detección de un cambio de estado de alto a bajo (interrupción por flanco negativo o de bajada). Para
definir el modo de activación de la interrupción se emplean los bits IT0 e IT1, que corresponden a los bits 0 y
2 respectivamente del registro TCON.
Otros dos bits del registro TCON reflejan el estado de estas fuentes de interrupción. Se trata de los bits IE0 e
IE1, que ocupan respectivamente los bits 1 y 3 de dicho registro. Estos dos bits se ponen a ‘1’ cuando se
satisface la condición de interrupción (nivel bajo o flanco de bajada según la configuración de la
interrupción) y, a continuación, si está habilitada la fuente de interrupción, la unidad de control tratará de
ejecutar la función de atención a la interrupción externa correspondiente.
Cuando se incia la llamada a esta función, el bit IE0 (o IE1) se vuelve a poner a ‘0’ automáticamente cuando
el evento detectado es un flanco de bajada. Por el contrario, si la interrupción es activo por nivel bajo, el
indicador IE0 (o IE1) permanece a ‘1’ mientras permanezca dicho nivel bajo.
Los indicadores TF0 y TF1, que corresponden, respectivamente, a los bits 5 y 7 del registro TCON, reflejan
las peticiones de interrupción de estas dos fuentes. Estos indicadores se ponen a ‘1’ cuando se produce un
desbordamiento del contador (excepto en el caso del timer 1 funcionando en modo 3). Cuando se produce una
interrupción de un timer, el indicador (TF0 o TF1) se vuelve a poner a ‘0’ automáticamente en el momento de
la llamada a la función de atención a la interrupción.
1/4
Informática Industrial Interrupciones en el 8051
Puerto Serie
Hay dos indicadores que reflejan las peticiones de interrupción del puerto serie. Se trata de R1, que indica una
petición de interrupción debida a la recepción de un byte, o de T1, que indica que el buffer de transmisión está
libre y dispuesto para el envío de un nuevo byte. Estos indicadores no se ponen automáticamente a ‘0’ en el
momento en que se atiende a la interrupción. Los dos indicadores dan lugar a la misma interrupción por lo
que en la función de atención a la interrupción debe preguntarse cuál es el flag puesto a ‘1’ para actuar en
consecuencia. Es necesario, por tanto, que la puesta a ‘0’ de este indicador se realice por programa después de
dicha consulta.
Cuando el procesador acepta una petición de interrupción, se ejecuta una llamada automática a la función de
atención a dicha fuente de interrupción. Posteriormente pone a ‘1’ un indicador interno que señala que está en
curso una interrupción y finalmente, ejecuta la llamada.
2/4
Habilitación y prioridad de las interrupciones
Después de la inicialización del microcontrolador, todas las fuentes de interrupción están inhibidas debido a
que se han puesto a cero los bits del registro IE. El registro IE es un registro de función especial con dirección
0A8h. Al ser una dirección múltiplo de 8, sus bits son direccionables individualmente. Para poder utilizar el
mecanismo de interrupciones es necesario, por tanto, comenzar por habilitar la o las fuentes de interrupción
empleadas por la aplicación. La función de los 8 bits del registro IE se muestra a continuación.
Es posible con una única instrucción modificar uno sólo de estos bits sin modificar el estado de los otros. Y
por otro lado, cualquiera que sea el estado de los otros 7 bits, es posible suspender completamente la atención
de interrupciones poniendo EA a 0. Posteriormente, la puesta a 1 de este mismo bit permite de nuevo la
atención de las interrupciones de acuerdo con el estado de los otros 7 bits.
Ejemplo
En un programa se desea atender las interrupciones procedentes del puerto serie y de una fuente externa
conectada a la patilla INT0.
En este caso se debería asignar a IE el valor binario 00010001B que prepara la atención de las dos fuentes
elegidas. Posteriormente la activación de EA permite la atención de las interrupciones, mientras que su
desactivación suspendería esta atención sin modificar IE.0 ni IE.4
Es recomendable dejar a ‘0’ los bits no utilizados (bit IE.6 e IE.5) para que el programa sea compatible con
microcontroladores 8052 u otros núcleos más modernos. En general, no han de habilitarse interrupciones que
no vayan a utilizarse
En el ejemplo, el microcontrolador puede atender a dos fuentes de interrupción. Es importante saber cuál de
estas dos fuentes sería atendida en caso de ser detectadas ambas en el mismo ciclo de máquina. El orden de
comprobación por defecto es:
3/4
Informática Industrial Interrupciones en el 8051
En el caso de de que la aparición suceda en ciclos de máquina diferentes, se atenderán por orden de aparición.
El registro IP es un registro de función especial con dirección 0B8H. Sus bits son direccionables de forma
individual.
En caso de que dos indicadores de interrupción con igual nivel de prioridad se activen a la vez, la jerarquía
implícita determinada por la secuencia de comprobación es la que determina el orden en que se atienden estas
dos interrupciones.
Si una interrupción con nivel de prioridad ‘1’ aparece durante la ejecución de la función de atención a una
interrupción de prioridad ‘0’, la ejecución de esta función es interrumpida y se atenderá a la interrupción de
nivel de prioridad superior.
4/4