
55
AT85C51SND3B
7632D–MP3–01/07
Interrupt System
The AT85C51SND3B derivatives, like other control-oriented computer architectures,
employ a program interrupt method. This operation branches to a subroutine and per-
forms some service in response to the interrupt. When the subroutine completes,
execution resumes at the point where the interrupt occurred. Interrupts may occur as a
result of internal AT85C51SND3B activity (e.g., timer overflow) or at the initiation of
electrical signals external to the microcontroller (e.g., keyboard). In all cases, interrupt
operation is programmed by the system designer, who determines priority of interrupt
service relative to normal code execution and other interrupt service routines. All of the
interrupt sources are enabled or disabled by the system designer and may be manipu-
lated dynamically.
A typical interrupt event chain occurs as follows:
An
internal or
external device
initiates
an
interrupt-request
signal. The
AT85C51SND3B latches this event into a flag buffer.
The priority of the flag is compared to the priority of other interrupts by the interrupt
handler. A high priority causes the handler to set an interrupt flag.
This signals the instruction execution unit to execute a context switch. This context
switch breaks the current flow of instruction sequences. The execution unit
completes the current instruction prior to a save of the program counter (PC) and
reloads the PC with the start address of a software service routine.
The software service routine executes assigned tasks and as a final activity
performs a RETI (return from interrupt) instruction. This instruction signals
completion of the interrupt, resets the interrupt-in-progress priority and reloads the
program counter. Program operation then continues from the original point of
interruption.
Six interrupt registers are used to control the interrupt system:
–
Two 8-bit registers are used to enable separately the interrupt sources: IEN0
–
Four 8-bit registers are used to establish the priority level of the different
Interrupt System
Priorities
Each interrupt sources of the AT85C51SND3B can be individually programmed to one
of four priority levels. This is accomplished by one bit in the Interrupt Priority High regis-
ters (IPH0 and IPH1) and one bit in the Interrupt Priority Low registers (IPL0 and IPL1).
This provides each interrupt source four possible priority levels according to
Table 70.Table 70. Priority Levels
A low-priority interrupt is always interrupted by a higher priority interrupt but not by
another interrupt of lower or equal priority. Higher priority interrupts are serviced before
lower priority interrupts. The response to simultaneous occurrence of equal priority inter-
rupts is determined by an internal hardware polling sequence detailed in
Table 71.
Thus, within each priority level there is a second priority structure determined by the
IPHxx
IPLxx
Priority Level
0
Lowest
0
1
0
2
1
3
Highest