Interrupts 8051 Microcontroller

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 25

Interrupts in 8051

Introduction

• A single microcontroller can serve several devices by two ways


 Interrupts
 Polling
• In Interrupts, Whenever any device needs its service, the device
notifies the microcontroller by sending it an interrupt signal
• Upon receiving an interrupt signal, the microcontroller interrupts
whatever it is doing and serves the device
• In Polling, The microcontroller continuously monitors the status of
all devices in Round-robin manner.
• When the conditions are for a given device are met, it performs the
service.
• After that, it moves on to monitor the next device until every one is
serviced
What is an Interrupt?

• An interrupt is an external or internal event that interrupts


the microcontroller to inform it that a device needs its service
• The program which is associated with the interrupt is called
the Interrupt Service Routine (ISR) or interrupt handler
Maskable vs Non-Maskable Interrupts
Maskable Interrupts
• A maskable interrupt is one that programmaer can ignore
by setting (or clearing) a bit in an interrupt control register.
• Typically, the microcontroller might allow multiple interrupt
sources, but application requires only few of them. The
programmer can mask off the unused interrupts

Non Maskable Interrupts


• Non-maskable interrupts are those interrupts which do not
get gated by the interrupt control register -- they ALWAYS
interrupt, no matter what state the microcontroller is in.
• Typically these are used for CRITICIAL or FATAL conditions,
or for system reset functions.
Interrupts in 8051

There are SIX interrupts in 8051


• Reset – power-up reset
• Two interrupts are set aside for the timers:
 one for timer 0 and one for timer 1
• Two interrupts are set aside for hardware external interrupts
 P3.2 and P3.3 are for the external hardware interrupts
INT0 (or EX1), and INT1 (or EX2)
• Serial communication has a single interrupt that belongs to
both receive and transfer
Interrupt Priority
• When the 8051 is powered up, the priorities are assigned
according to the following
Interrupt Vector Table of 8051
Enabling and Disabling of Interrupts
• Upon reset, all interrupts are disabled (masked),
meaning that none will be responded to by the
microcontroller, even if they are activated
• The interrupts must be enabled by software in
order for the microcontroller to respond to them
• There is a register called IE (interrupt enable) that
is responsible for enabling (unmasking) and
disabling (masking) the interrupts
IE Register (Interrupt Enable Register)

• Bit D7 of the IE register (EA) must be set to high to allow


the rest of register to take effect
• The value of EA
 If EA = 1, interrupts are enabled and will be responded
to if their corresponding bits in IE are high
 If EA = 0, no interrupt will be responded to, even if the
associated bit in the IE register is high
Timer Interrupt
• The timer flag (TF) is raised when the timer rolls over
• In polling TF, we have to wait until the TF is raised
• The problem with this method is that the microcontroller is
tied down while waiting for TF to be raised, and can not do
anything else
• If the timer interrupt in the IE register is enabled, whenever
the timer rolls over, TF is raised, and the microcontroller is
interrupted in whatever it is doing, and jumps to the
interrupt vector table to service the ISR.
• Hence, using interrupts, the problem of tying down the
microcontroller is solved.
• In this way, the microcontroller can do other tasks until it is
notified that the timer has rolled over
External Interrupts in 8051

• The 8051 has two external hardware interrupts


• Pin 12 (P3.2) and pin 13 (P3.3) of the 8051, designated as INT0
and INT1, are used as external hardware interrupts
• The interrupt vector table locations 0003H and 0013H are set
aside for INT0 and INT1
• There are two activation levels for the external hardware
interrupts
 Level trigged
 Edge trigged
External Interrupts in 8051
Level Triggered Interrupts

• In the level-triggered mode, INT0 and INT1 pins are


normally high
• If a low-level signal is applied to them, it triggers the
interrupt. Then the microcontroller stops whatever it is
doing and jumps to the interrupt vector table to service
that interrupt
• The low-level signal at the INT pin must be removed
before the execution of the last instruction of the ISR,
RETI; otherwise, another interrupt will be generated
• This is called a level-triggered interrupt and is the
default mode upon reset of the 8051
Level Triggered Interrupts
According to one manufacturer’s data sheet,
• The pin must be held in a low state until the start of the execution of ISR
 If the INTx pin is brought back to a logic high before the start of the
execution of ISR there will be no interrupt
 If INTx pin is left at a logic low after the RETI instruction of the ISR,
another interrupt will be activated after one instruction is executed
• To ensure the activation of the hardware interrupt at the INTx pin, make
sure that the duration of the low-level signal is around 4 machine cycles,
but no more
Edge Triggered Interrupts

• To make INT0 and INT1 edge-triggered interrupts, we must


program the bits of the TCON register
• The TCON register holds the IT0 and IT1 flag bits, that
determine level- or edge-triggered mode of the hardware
interrupt
• IT0 and IT1 are also referred to as TCON.0 and TCON.2 since
the TCON register is bit addressable
Edge Triggered Interrupts
Edge Triggered Interrupts
Edge Triggered Interrupts
• In edge-triggered interrupts, the external source must be held
high for at least one machine cycle, and then held low for at
least one machine cycle
• The falling edge of pins INT0 and INT1 are latched by the 8051
and are held by the TCON.1 and TCON.3 bits of TCON register
• It indicates that the interrupt is being serviced now and on
this INTx pin, and no new interrupt will be responded to until
this service is finished
Edge Triggered Interrupts
Please note that
• When the ISRs are finished (that is, upon execution of RETI),
these bits (TCON.1 and TCON.3) are cleared, indicating that
the interrupt is finished and the 8051 is ready to respond to
another interrupt on that pin
• During the time that the interrupt service routine is being
executed, the INTn pin is ignored, no matter how many times
it makes a high-to-low transition
 RETI clears the corresponding bit in TCON register (TCON.1
or TCON.3)
 There is no need for instruction CLR TCON.1 before RETI in
the ISR associated with INT0
Serial Interrupts in 8051

• TI (transfer interrupt) is raised when the last bit of the framed


data, the stop bit, is transferred, indicating that the SBUF
register is ready to transfer the next byte
• RI (received interrupt) is raised when the entire frame of data,
including the stop bit, is received
Serial Interrupts in 8051

• In the 8051 there is only one interrupt set aside for serial
communication
 This interrupt is used to both send and receive data
 If the interrupt bit in the IE register (IE.4)is enabled, when
RI or TI is raised the 8051 gets interrupted and jumps to
memory location 0023H to execute the ISR
 In that ISR we must examine the TI and RI flags to see
which one caused the interrupt and respond accordingly
Priority of Interrupts

• We can alter the sequence of interrupt priority by assigning a higher


priority to any one of the interrupts by programming a register
called IP (interrupt priority)
• To give a higher priority to any of the interrupts, we make the
corresponding bit in the IP register high
• When two or more interrupt bits in the IP register are set to high,
they are serviced according to the default priority
 All the interrupts are latched and kept internally and till the
interrupt is being serviced, all other interrupts would be ignored.
 Upon RETI, No low-priority interrupt can get the immediate
attention of the CPU until the 8051 has finished servicing the
high-priority interrupts
IP Register
Support for Interrupts in Embedded C
• The 8051 compiler have extensive support for the interrupts
• They assign a unique number to each of the 8051 interrupts

You might also like