Para impedir esta condición de huida, hay que detectar una dirección ilegal en el circuito
MC68HC705J1A. Si la CPU intenta sacar una instrucción de una dirección que no está en la EPROM ($0300–
$07CF, $07F0–$07FF), ROM ($07EE–$07EF) o RAM ($00C0–$00FF), se genera un 'reset' para obligar volver
a empezar al programa.
Interrupciones
A veces es útil interrumpir un proceso normal para responder a algunos eventos inusuales. Por ejemplo,
el MC68HC705J1A pueden interrumpirse por cualquiera de estas fuentes de interrupción:
1. Aplicando un 0 en el pin de interrupción externa IRQ .
2. Aplicando un 1 en cualquiera de los pins PA3–PA0, con tal de que la función de interrupción del puerto esté
habilitada.
3. Por un desbordamiento (overflow) del temporizador (timer) (TOF) o una interrupción en tiempo real (RTIF)
solicitada desde el temporizador multifuncional interno del sistema, si éste está habilitado.
4. Por la instrucción de interrupción por software (SWI).
Si se hace una interrupción mientras la CPU está ejecutando una instrucción, la instrucción se completa
antes de que la CPU responda a la interrupción.
Las interrupciones se pueden inhibir poniendo el bit I del registro de código de condición (CCR) o poniendo
a 0 los bits de control de la interrupción individual habilitada para cada fuente de interrupción. El 'reset' fuerza
al bit I a 1 y pone a 0 todos los bits de interrupciones locales habilitados, para impedir interrupciones durante la
inicialización del procedimiento. Cuando el bit I es 1, no se reconoce ninguna interrupción (excepto la
instrucción SWI). Sin embargo, las fuentes de interrupción puede todavía registrar una demanda, que será
respetada un momento más tarde, cuando el bit I se ponga a 0.
La
Figura 21
muestra cómo las interrupciones encajan en el flujo normal de las instrucciones en la CPU. Las
interrupciones causan que los registros del procesador se guarden en la pila y el bit de interrupción enmascarada
sea puesto a 1, para prevenir interrupciones adicionales, hasta que la interrupción presente haya sido terminada.
El vector de interrupción apropiado apunta entonces a los puntos de la dirección de arranque de la rutina de
servicio de interrupción
(Tabla
En la realización de la rutina de servicio de interrupción, una instrucción RTI (qué normalmente es la última
instrucción de un servicio de rutina de interrupción) causa que se recuperen los contenidos del registro, de la
pila. Puesto que el contador de programa está cargado con el valor que fue previamente guardado en la pila y el
proceso continúa desde donde salió antes de la interrupción. La
restablecidos de la pila en el orden opuesto que fueron guardados.
Timer Interno
IRQ
Intrucción SWI
Reset (POR, LVI, Pin, COP, o dirección ilegal
Tabla 10. Vectores de Dirección para Interrupciones y Reset en el MC68HC705J1A
10).
Fuente de Interrupción o Reset
o Pins del puerto A
Figura 20
Dirección del Vector
$07F8, $07F9
$07FA, $07FB
$07FC, $07FD
$07FE, $07FF
Nota: Cuando ocurre una interrupción, los registros
de la CPU son guardados en la pila (stack) en este
orden: PCL, PCH, X, A, CCR. Al volver de una
interrupción, los registros se recuperan de la pila
(stack) en el orden inverso.
Figura 20. Orden de guardar los registros en la pila
cuando se produce una Interrupción
45
muestra los registros que son