Microcontrollers

Polling and Interrupts in Microcontrollers

Consider a state where all input/output transfers of data are controlled by the program. When peripherals require attention, they signal the microprocessor by changing the voltage level of an input line. The microprocessor can then respond by jumping to a program service routine for the device. On completion of the routine, a return to the main program occurs. Program control of inputs/outputs is therefore a loop to read inputs and update outputs continuously, with jumps to service routines as needed. This process of repeatedly checking each peripheral device to see if it is ready to send or accept a new byte is referred to as polling.

An option to program control is interrupt control. An interrupt involves a peripheral device activating a separate interrupt request line. The reception of an interrupt results in the microprocessor suspending execution of its main program and jumping to the service routine for the peripheral. The interrupt must not lead to a loss of data and an interrupt handling routine has to be incorporated in the software so that the state of processor registers and the last address accessed in the main program are stored in dedicated locations in memory. Following the interrupt service routine, the contents of the memory are restored and the microprocessor can continue executing the main program from where it was interrupted.

During an interrupt, the following process takes place:

  1. The CPU waits until the end of the instruction it is currently executing before dealing with the interrupt.
  2. All the CPU registers are pushed on the stack and a bit set to stop further interrupts occurring during interruption. Note that the stack is a special area of memory in which program counter values can be stored when a subroutine is to be executed. The program counter gives the address of the next program instruction in a program and thus storing this value enables the program to be resumed at the place where it broke off to execute the interrupt.
  3. The CPU then establishes the address of the interrupt service routine to be executed. Some microprocessors have dedicated interrupt pins and the pin that is selected determines which address is to be utilized. Other microprocessors have only one interrupt pin and the interrupting device must then supply data that tells the microprocessor where the interrupt service routine is located. Some microprocessors have both kinds of interrupt inputs. The starting address of an interrupt service routine is called an interrupt vector. The block of memory assigned to store the vectors is known as the vector table. Vector addresses are fixed by the chip manufacturer.
  4. The CPU branches to the interrupt service routine.
  5. After completion of this routine, the CPU registers are returned from the stack and the main program continues from the point it left off.
Fig 1.0: Interrupt signal to microprocessor

The block diagram below illustrates the Interrupt Control Process:

Fig 1.1: Interrupt Control

Unlike a subroutine call, which is located at a specific point in a program, an interrupt can be called from point in the program. The program does not control when an interrupt occurs; the control lies with the interrupting event. For some interrupts it is possible to program the microprocessor to ignore the interrupt request signal unless an enable bit has been set. Such interrupts are referred to as maskable. As an example, with Intel 8051, interrupt sources are individually enabled or disabled through the bit-addressable register IE (interrupt enable) at address 0A8H, a 0 disabling an interrupt and a 1 enabling it. Furthermore, there is a global enable/disable bit in the IE register that is set to enable all external interrupts or cleared to disable all external interrupts.

Related: Beginner’s Step-by-Step Coding Course: Learn Computer Programming the Easy Way 

Share
John Mulindi

John Mulindi has a background in a technical field and he writes on topics ranging from automation, computer systems, embedded systems, mechatronics to measurement and control.

Recent Posts

Rigid-Flex PCBs: Enhancing Durability and Flexibility in Electronic Devices

The world of electronics is constantly evolving, allowing designers and manufacturers to push the boundaries…

2 months ago

Key Features of PIC16X84 Family of Microcontrollers

PIC microcontrollers are fabricated by Microchip Technology. PIC16C84 and PIC16F84 are the two microcontrollers in…

9 months ago

ADD Instruction in Intel 8051 (MCS-51) Microcontroller

The ADD instruction tells the microcontroller’s CPU to add the source byte to register A…

9 months ago

Main Features of Intel 8086 Microprocessor

8-bit microprocessors are limited in their speed (the number of instructions that can be executed…

9 months ago

Basic Features of 68HC11 Family of Microcontrollers

The 68HC11 (also abbreviated as 6811 or HC11) is an 8-bit microcontroller that was introduced…

9 months ago

Process Synchronization using Semaphores

Mutual exclusion typically imposes some conditions on access to a given resource by two or…

9 months ago