
445
CHAPTER 18
INTERRUPT FUNCTIONS
User’s Manual U12790EJ2V0UD
18.4.4 Multiple servicing interrupt
Acknowledgment of an interrupt request while another interrupt is being serviced is called multiple interrupt
servicing.
Multiple interrupt servicing does not take place unless interrupts (except the non-maskable interrupt) are enabled
to be acknowledged (IE = 1). Acknowledgment of another interrupt request is disabled (IE = 0) when one interrupt
has been acknowledged. Therefore, to enable multiple interrupt servicing, the EI flag must be set to 1 during interrupt
servicing, to enable other interrupts.
Multiple interrupt servicing may not occur even when interrupts are enabled. This is controlled by the priorities
of the interrupts. Although two types of priorities, default priority and programmable priority, may be assigned to an
interrupt, multiple interrupt servicing is controlled by using the programmable priority.
If an interrupt with the same priority level as or a higher priority than the interrupt currently being serviced occurs,
that interrupt can be acknowledged and serviced. If an interrupt with a priority lower than that of the interrupt currently
being serviced occurs, that interrupt cannot be acknowledged and serviced.
An interrupt that is not acknowledged and serviced because it is disabled or it has a low priority is held pending.
This interrupt is acknowledged after servicing of the current interrupt has been completed and one instruction of the
main routine has been executed.
Multiple interrupt servicing is not enabled while the non-maskable interrupt is being serviced.
Table 18-4 shows the interrupts to which multiple interrupt servicing can be applied, and Figure 18-13 shows an
example of multiple interrupt servicing.
Table 18-4. Interrupt Requests Enabled for Multiple Interrupt Servicing
Maskable Interrupt Request
PR = 0
PR = 1
IE = 1
IE = 0
IE = 1
IE = 0
Non-maskable interrupt
D
ISP = 0
E
D
ISP = 1
E
D
E
D
Software interrupt servicing
E
D
E
D
Remarks 1. E: Multiple interrupt servicing enabled
2. D: Multiple interrupt servicing disabled
3. ISP and IE are the flags contained in the PSW
ISP = 0: An interrupt with higher priority is being serviced
ISP = 1: An interrupt request is not acknowledged or an interrupt with lower priority
is being serviced
IE = 0:
Interrupt request acknowledgment is disabled
IE = 1:
Interrupt request acknowledgment is enabled
4. PR is a flag contained in PR0L and PR0R.
PR = 0: Higher priority level
PR = 1: Lower priority level
Interrupt being
serviced
Non-maskable
Interrupt
Request
Interrupt Request
Maskable interrupt