Me he confundido un poco con la definición de la interrupción pendiente. Es decir, cuando este bit se establecerá en 1 y se leerá utilizando la instrucción RIM.
Mi confusión es que:
Cuando ocurre una interrupción (digamos RST 7.5): 1. Saltamos a la dirección vectorial para RST 7.5. 2. Las interrupciones ahora están deshabilitadas. 3. Ahora, mientras se realiza esta rutina, digamos que RST 5.5 / 6.5 se mantiene alto:
-
¿Esto establecería el bit pendiente respectivo en 1? Para esto, ¿se debería mantener el pasador alto hasta que se ejecute la rutina de servicio y regresemos al programa principal?
O
- ¿Esto establecería el bit pendiente y luego el usuario puede decidir qué hacer?
Segundo escenario: Supongamos que se produce una interrupción RST 6.5. 1. Saltamos a ISR para RST 6.5. 2. Las interrupciones están deshabilitadas.
Escenario 1: RST 7.5 se produce. ¿Saltaría el procesador a la rutina de servicio a mitad de camino de la ejecución de RST 6.5 o continuaría su ejecución ya que las interrupciones están deshabilitadas, pero hacer el registro para el almacén 1 de RST 7.5 y luego RST 7.5 se clasificaría como una interrupción pendiente? a 1 para instrucción RIM). Del mismo modo, si RST 5.5 sube, ¿sería una interrupción pendiente?
Escenario 2: En el ISR para RST 6.5, uso la instrucción EI explícitamente para permitir interrupciones, ahora si ocurre RST 7.5, ¿se derivaría a la ubicación del servicio? y RST 5.5 se contaría como una interrupción pendiente?
Estos escenarios anteriores me han confundido enormemente y los libros los han expresado de manera muy ambigua y cualquier ayuda sería excelente.
Gracias