LUCAS-NÜLLE C515C Guia De Ejercicios Para El Estudiante página 55

Tabla de contenido
Programación C de microcontroladores (C515C)
2. Compilar una rutina de servicio de interrupción y tratar la interrupción con el
software
Las rutinas de servicios de interrupción poseen, para el Compilador SDCC empleado,
la siguiente estructura:
void ex3_isr (void) interrupt IEX3_VECTOR using 1
{
...
Con la palabra clave interrupt se comunica al Compilador que la función es una
rutina de servicio de interrupción (ISR). La siguiente indicación IEX3_VECTOR
especifica al vector de interrupción que está definido en el archivo de
encabezamiento mcs51reg.h por medio de una instrucción #define. La indicación
using 1 determina el banco de registro a emplear.
Dentro del cuerpo de la función de la rutina de servicio de interrupción (llaves) se
deberá introducir el tratamiento de interrupción.
3. Conexión global de todas las interrupciones registradas en el programa
principal
Finalmente se deben conectar de forma global todas las interrupciones. A ese fin se
deberá poner el bit 7 (EA) en el registro de funciones especiales IEN0:
EA = 1;
Notas:
La interrupción externa3 puede ser activada por un flanco descendente o ascendente en el
pin de puerto P1.0. El flanco que se debe utilizar para activar la rutina de servicio de
interrupción se puede configurar con el bit de control I3FR en el registro de funciones
especiales T2CON. Partiendo de la inicialización del Puerto1 tras un RESET de MC con 0xff
y el estado del interruptor /S1, sin tarjeta chip insertada en la unidad de Tarjeta Inteligente
de I2C, se configurará la interrupción externa3 en estado inicial para que sea activada por el
flanco descendente (I3FR=0). Este flanco se genera cuando se inserta una tarjeta chip. Al
retirar la tarjeta de la unidad de Tarjeta Inteligente de I2C, se abre el interruptor /S1
generando un flanco ascendente. Por consiguiente, antes de retirar la tarjeta chip, se debe
tener en cuenta la reacción de la interrupción externa3 respecto a este flanco (I3FR=1).
Puesto que las teclas son componentes mecánicos, al accionarlas se produce un rebote de
los contactos en el rango de milisegundos, lo que puede activar varias interrupciones y dar
lugar a una ejecución errónea del programa. La solución de este problema reside en la
inserción de un tiempo de anulación de rebote. Adicionalmente se deberá reposicionar el
Edge-Flag de la interrupción3 antes de finalizar la rutina de servicio de interrupción para
impedir la activación de interrupciones múltiples.
CMC 5-2 Bloque de ensayos 2
}
// Activación de todas las interrupciones
CMC 5
51
Tabla de contenido
loading

Este manual también es adecuado para:

Sh5004-1e

Tabla de contenido