
6. Interrupt controller
MC97F6108A User’s manual
54
6.7
Multi-interrupt
If two requests of different priority levels are received simultaneously, the request of higher priority level
is served first. If more than one interrupt request are received, the interrupt polling sequence determines
which request is served first by hardware. However, for special features, multi-interrupt processing can
be executed by software.
Figure 18. Effective Timing of Multi-Interrupt
Figure 18 shows an example of multi-interrupt processing. While INT1 is served, INT0 which has higher
priority than INT1 is occurred. Then INT0 is served immediately and then the remaining part of INT1
service routine is executed. If the priority level of INT0 is same or lower than INT1, INT0 will be served
after the INT1 service has completed.
An interrupt service routine may be only interrupted by an interrupt of higher priority and, if two interrupts
of different priority occur at the same time, the higher level interrupt will be served first. An interrupt
cannot be interrupted by another interrupt of the same or a lower priority level. If two interrupts of the
same priority level occur simultaneously, the service order for those interrupts is determined by the
scan order.
Example: Software Multi Interrupt
INT1: MOV IE, #03H
; Enable INT0, INT1
MOV IP, #01H
MOV
IPH, #00H
; interrupt level of INT0 is 1 (INT1 is in level 0)
SETB EA
;Enable global interrupt (necessary for multi interrupt)
Occur
INT0 Interrupt
Main Program
Service
INT1 ISR
INT0 ISR
RETI
RETI
Set EA
Occur
INT1 Interrupt