8085 Interrupts - GDLC
8085 Interrupts - GDLC
LAKSHMI.B.E. 1
Interrupts
Interrupt is a process where an external device
can get the attention of the microprocessor.
◦ The process starts from the I/O device
◦ The process is asynchronous.
TYPES OF INTERRUPT:
SOFTWARE
AND HARDWARE
LAKSHMI.B.E. 2
• Classification of Interrupts
– Interrupts can be classified into two types:
• Maskable Interrupts (Can be delayed or Rejected)
• Enable Or Disable By EI And DI Instruction
LAKSHMI.B.E. 3
Interrupts
• An interrupt is considered to be an emergency
signal that may be serviced.
– The Microprocessor may respond to it as soon as
possible.
LAKSHMI.B.E. 4
Responding to Interrupts
Responding to an interrupt may be immediate
or delayed depending on whether the interrupt
is maskable or non-maskable and whether
interrupts are being masked or not.
There are two ways of redirecting the execution
to the ISR depending on whether the interrupt is
vectored or non-vectored.
VECTOR
Interrupt name Maskable Vectored
ADDRESS
INTR Yes No --
6
The 8085 Interrupts
• When a device interrupts, it actually wants the MP
to give a service which is equivalent to asking the
MP to call a subroutine. This subroutine is called
ISR (Interrupt Service Routine)
• The ‘EI’ instruction is a one byte instruction and is
used to Enable the non-maskable interrupts.
• The ‘DI’ instruction is a one byte instruction and is
used to Disable the non-maskable interrupts.
• The 8085 has a single Non-Maskable interrupt.
– The non-maskable interrupt is not affected by the value
of the Interrupt Enable flip flop.
LAKSHMI.B.E. 7
The 8085 Interrupts
• The 8085 has 5 interrupt inputs.
– The INTR input.
• The INTR input is the only non-vectored interrupt.
• INTR is maskable using the EI/DI instruction pair.
LAKSHMI.B.E. 8
8085 Interrupts
LAKSHMI.B.E. 9
Interrupt Vectors and the Vector
Table
• An interrupt vector is a pointer to where the
ISR is stored in memory.
• All interrupts (vectored or otherwise) are
mapped onto a memory area called the
Interrupt Vector Table (IVT).
– The IVT is usually located in memory page 00
(0000H - 00FFH).
– The purpose of the IVT is to hold the vectors that
redirect the microprocessor to the right place when
an interrupt arrives.
LAKSHMI.B.E. 10
The 8085 Non-Vectored Interrupt
Process
1. The interrupt process should be enabled using the EI instruction.
2. The 8085 checks for an interrupt during the execution of every
instruction.
3. If INTR is high, MP completes current instruction, disables the
interrupt and sends INTA (Interrupt acknowledge) signal to the device
that interrupted
4. INTA allows the I/O device to send a RST instruction through data
bus.
5. Upon receiving the INTA signal, MP saves the memory location of the next
instruction on the stack and the program is transferred to ‘call’ location (ISR Call)
specified by the RST instruction
LAKSHMI.B.E. 11
The 8085 Non-Vectored
Interrupt Process
LAKSHMI.B.E. 12
The 8085 Maskable/Vectored
Interrupts
• The 8085 has 4 Masked/Vectored interrupt inputs.
– RST 5.5, RST 6.5, RST 7.5
• They are all maskable.
• They are automatically vectored according to the following
table:
Interrupt Vector
RST 5.5 002CH
RST 6.5 0034H
RST 7.5 003CH
– The vectors for these interrupt fall in between the vectors for the
RST instructions. That’s why they have names like RST 5.5 (RST
5 and a half).
LAKSHMI.B.E. 13
Masking RST 5.5, RST 6.5 and
RST 7.5
• These three interrupts are masked at two
levels:
– Through the Interrupt Enable flip flop and the
EI/DI instructions.
• The Interrupt Enable flip flop controls the whole
maskable interrupt process.
– Through individual mask flip flops that control the
availability of the individual interrupts.
• These flip flops control the interrupts individually.
LAKSHMI.B.E. 14
Maskable Interrupts and vector locations
RST7.5 Memory
RST 7.5
M 7.5
RST 6.5
M 6.5
RST 5.5
M 5.5
INTR
LAKSHMI.B.E. 15
The 8085 Maskable/Vectored Interrupt
Process
LAKSHMI.B.E. 16
The 8085 Maskable/Vectored Interrupt
Process
LAKSHMI.B.E. 17
Manipulating the Masks
• The Interrupt Enable flip flop is manipulated
using the EI/DI instructions.
LAKSHMI.B.E. 18
How SIM Interprets the Accumulator
7 6 5 4 3 2 1 0
M6.5
SDO
SDE
XXX
M5.5
M7.5
MSE
R7.5
Serial Data Out RST5.5 Mask
RST7.5 }
RST6.5 Mask 0 - Available
1 - Masked
Mask
Mask Set Enable
Enable Serial Data
0 - Ignore bits 0-2
0 - Ignore bit 7
1 - Set the masks according
1 - Send bit 7 to SOD pin
to bits 0-2
LAKSHMI.B.E. 19
SIM and the Interrupt Mask
• Bit 0 is the mask for RST 5.5
• Bit 1 is the mask for RST 6.5
• Bit 2 is the mask for RST 7.5.
• If the mask bit is 0, the interrupt is available.
• If the mask bit is 1, the interrupt is masked.
LAKSHMI.B.E. 20
• Bit 3 (Mask Set Enable - MSE) is an enable for
setting the mask.
• If it is set to 0 the mask is ignored and the old
settings remain.
• If it is set to 1, the new setting are applied.
• The SIM instruction is used for multiple
purposes and not only for setting interrupt
masks.
– It is also used to control functionality such as Serial
Data Transmission.
– Therefore, bit 3 is necessary to tell the
microprocessor whether or not the interrupt masks
should be modified
LAKSHMI.B.E. 21
SIM and the Interrupt Mask
• The RST 7.5 interrupt is the only 8085 interrupt that has memory.
– If a signal on RST7.5 arrives while it is masked, a flip flop will
remember the signal.
– When RST7.5 is unmasked, the microprocessor will be interrupted
even if the device has removed the interrupt signal.
– This flip flop will be automatically reset when the microprocessor
responds to an RST 7.5 interrupt.
LAKSHMI.B.E. 22
Using the SIM Instruction to Modify the Interrupt
Masks
M7.5
M6.5
M5.5
SDO
MSE
R7.5
SDE
XXX
- Disable 6.5 bit 1 = 1
– First, determine the contents of the accumulator
- Enable 7.5 bit 2 = 0
- Allow setting the masks bit 3 = 1 0 0 0 0 1 0 1 0
- Don’t reset the flip flop bit 4 = 0
- Bit 5 is not used bit 5 = 0
- Don’t use serial data bit 6 = 0 Contents of accumulator are: 0AH
- Serial data is ignored bit 7 = 0
LAKSHMI.B.E. 23
Triggering Levels
LAKSHMI.B.E. 24
Determining the Current
Mask Settings
• RIM instruction: Read Interrupt Mask
– Load the accumulator with an 8-bit pattern
showing the status of each interrupt pin and mask.
LAKSHMI.B.E. 25
RIM sets the Accumulator’s different bits
LAKSHMI.B.E. 26
The RIM Instruction and the
Masks
• Bits 0-2 show the current setting of the mask for
each of RST 7.5, RST 6.5 and RST 5.5
• They return the contents of the three mask flip flops.
• They can be used by a program to read the mask settings in
order to modify only the right mask.
LAKSHMI.B.E. 27
The RIM Instruction and the
Masks
• Bits 4-6 show whether or not there are pending
interrupts on RST 7.5, RST 6.5, and RST 5.5
• Bits 4 and 5 return the current value of the RST5.5 and
RST6.5 pins.
• Bit 6 returns the current value of the RST7.5 memory
flip flop.
LAKSHMI.B.E. 28
Pending Interrupts
• Since the 8085 has five interrupt lines,
interrupts may occur during an ISR and remain
pending.
– Using the RIM instruction, it is possible to can
read the status of the interrupt lines and find if
there are any pending interrupts.
LAKSHMI.B.E. 29
TRAP
• TRAP is the only non-maskable interrupt.
– It does not need to be enabled because it cannot be
disabled.
• It has the highest priority amongst interrupts.
• It is edge and level sensitive.
– It needs to be high and stay high to be recognized.
– Once it is recognized, it won’t be recognized again
until it goes low, then high again.
LAKSHMI.B.E. 31
Issues in Implementing INTR
Interrupts
• How long can the INTR remain high?
– The INTR line must be deactivated before the EI is
executed. Otherwise, the microprocessor will be
interrupted again.
– Once the microprocessor starts to respond to an
INTR interrupt, INTA becomes active (=0).
33
34
PIN 7
RST 7.5
M7.5’
R 7.5
RST 7.5
ACKNOWLEDGE
MENT
MSE
35
The End
… Thank you …
36