Fases de interrupción
Como resumen de todo lo explicado hasta ahora, pasamos a enumerar las acciones que realiza automáticamente el microcontrolador y las que el diseñador debe tener encuenta a la hora de confeccionar el programa:
1° El programa debe habilitar las interrupciones correspondientes mediante una instrucción en la inicialización similar a la siguiente:
movlw b'10111000' ; Activa interrupción del TMR0 (TOIE), por flanco en RBO (INT)
movwf INTCON ; por cambio en líneas del Puerto B (RBIE) y la general (GIE).
2° Cuando ocurre una interrupción elflag correspondiente (TOIF, INTF o RBIF) se activa. Si el bit de permiso correspondiente (TOIE, INTE o RBIE) está a "1" y el bit de habilitación de todas las interrupciones GIE está a "1", se producela interrupción.
3° Para evitar que se produzca otra interrupción mientras se está atendiendo a otra anterior, el bit GIE se pone automáticamente a "0" por hardware.
4° El valor del contadorde programa (PC) se guarda en la pila.
5° El PC se carga con el valor 004h, que es el vector de interrupciones.
6º El programa debe comenzar la subrutina de atención a la interrupción con unsalto a la posición de memoria, donde se encuentra las instrucciones correspondientes a la interrupción.
ORG 0 ; Dirección de comienza del programa.
goto Inicio
ORG 4 ; Vector de interrupción.goto ServicioInterrupcion
7° Seguidamente el programa debe guardar todos los registros que puedan ser modificados por la subrutina de atención a la interrupción.
CBLOCK Guarda_WGuarda_STATUS '
Guarda_RegistroA
Guarda_RegistroB
8º Primero preserva los valores que tenían W y STATUS antes de producirse la interrupción. No se puede utilizar la instrucción "mov STATUS.W" porquecorrompe el contenido del STATUS.
ServicioInterrupcion
movwf Guarda_W
swapf STATUS,W
movwf Guarda_STATUS
movf RegistroA,W
movwf Guarda_RegistroA
movf...
Regístrate para leer el documento completo.