17
8051 Interrupt Programming By Dr. Min He.

DPA

Embed Size (px)

DESCRIPTION

Presentation

Citation preview

Page 1: DPA

8051 Interrupt Programming

By Dr. Min He.

Page 2: DPA

8051 Interrupts Interrupt sources and priority levels Interrupt polling priority Interrupt vector table Registers used by interrupts Hardware steps in executing interrupts Software steps to enable an interrupt Handling external interrupts Interrupt Programming

2

Page 3: DPA

Introducing Interrupts Interrupts and resets are among the most useful mechanisms

that a computer system provides. Benefits provided by interrupts and resets:

– I/O operations are performed more efficiently

– Errors are handled more smoothly, and

– CPU utilization is improved. An interrupt is an event that requires the CPU to stop normal

program execution and perform a special piece of code called Interrupt Service Routine (ISR) related to the event.– External Interrupt: an external signal that is used to get the

attention of the CPU– Internal Interrupt: all microcontrollers has on-chip peripheral

devices such as timers, A/D converters, serial peripheral interface, and so on. Signals asserted by these devices to get the attentions of the CPU are called internal interrupts.

– Software Interrupt: internal interrupt generated by software errors such as illegal opcodes, overflow, divided-by-zero, and underflow.

Page 4: DPA

Interrupt Service RoutineSimilar to a procedure call, except that it can occur between any two instructions of the

program is transparent to the running program (usually) is typically not explicitly requested by the program calls a routine at an address determined by the type

of interrupt, not by the program atomically changes some processor mode bits in

some special function register, such as TCON in 8051.

Page 5: DPA

5

Common 8051 Interrupts There are 5 interrupt sources in common 8051.

A unique number is assigned to each interrupt:

Interrupt Name Number

External Interrupt 0 INT0 0

Timer Interrupt 0 TF0 1

External Interrupt 1 INT1 2

Timer Interrupt 1 TF1 3

Serial Interrupt 1 R1+T1 4

Timer 2 TF2 5 Can set up two interrupt levels.

Page 6: DPA

6

Interrupt Polling Priority Upon Reset

1. External Interrupt 0

2. Timer Interrupt 0

3. External Interrupt 1

4. Timer Interrupt 1

5. Serial Communication

Page 7: DPA

7

Interrupt Vector TableInterrupt ISR ROM

Address (Hex)Pin Flag Clearing

Reset 0000 9 Auto

External Hardware interrupt 0 (INT0)

0003 P3.2 Auto

Timer 0 Interrupt (TF0)

000B Auto

External Hardware interrupt 1 (INT1)

0013 P3.3 Auto

Timer 1 Interrupt (TF1)

001B Auto

Serial COM Interrupt (RI and TI)

0023 Programmer clears it.

Page 8: DPA

8

Registers Used by Interrupts IE (Interrupt Enable): to enable interrupts

IP: set interrupt priority if needed

TCON: if external interrupt is used, set control bit: edge-triggered vs. level-triggered.

EA -- ET2 ES ET1 EX1 ET0 EX0

TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

-- -- PT2 PS PT1 PX1 PT0 PX0

Page 9: DPA

9

Hardware Steps in Executing an Interrupt

1. Finish executing current instruction and save the address of the next one (PC) on the stack.

2. Save status of all the interrupts internally (not on the stack).

3. Jump to interrupt vector table4. Get the address of the ISR from interrupt

vector table, and jump to execute the ISR.5. The microcontroller get PC from top of stack

and returns to the place where it was interrupted upon executing the RETI instruction of the ISR.

Page 10: DPA

10

Software Steps to Enable an Interrupt

Set EA to enable interruptEA=1;

Set the corresponding interrupt bit in IE to enable a specific interrupt Example: ET0 = 1; enable timer 0 overflow interruptEX0 = 1; enable external interrupt 0

Page 11: DPA

11

External Interrupts --Level-triggered vs. Edge-triggered

Level-triggered: Default mode upon reset of the 8051 A low-level signal triggers the interrupt. The low signal must be held low before the execution

of ISR and must be removed before RETI.

Edge-triggered: A high-to-low signal triggers the interrupt Need to set TCON.0(IT0)/TCON.2(IT1) TCON.1(IE0) and TCON.3(IE1) are set when an

falling edge is detected and cleared by RETI.

Page 12: DPA

12

Use TCON Register to Setup External Interrupts

TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

D7 D0

• IE1/IE0: external interrupt 1 & 0 edge flag. Set by CPU when the external interrupt edge is detected. Cleared by CPU when the interrupt is processed.

• IT1/IT0: external interrupt 1 & 0 type control bit. Set/cleared by software to specify falling edge/low-level triggered interrupts.

Page 13: DPA

13

Sampling of External Interrupts Level-triggered external interrupt: To ensure the

activation of the hardware interrupt at the INTn pin, the duration of the low-level signal should be around 4 machine cycles, but not more. This is due to the fact that the level-triggered interrupt is not latched.

Edge-triggered external interrupt: the external source must be held high for at least one machine cycle, and then held low for at least one machine cycle to ensure that the transition is seen by the microcontroller.

Page 14: DPA

14

Interrupt-in-service Flag: IEx

Used to keep track of edge-triggered external interrupt only

The falling edge is latched by interrupt-in-service flag: IE0/IE1 is set by CPU when external interrupt is detected.

No other external interrupt on the same pin will be responded when IE0/IE1 is raised.

These flags are cleared when the ISRs are finished upon execution of instruction RETI.

Page 15: DPA

15

Interrupt Programming 1. In main: set interrupt mode

Ex: Enable external interrupt 0, set it to be edge triggered:

IT0=1; // set INT0 to be edge triggered EX0=1; // enable INT0 EA=1; // enable interrupt 2. Write ISR function:

bit my_flag; …. void chg_mode(void) interrupt 0 { my_flag=1; }

3. Notice: No function prototype is needed for interrupt service routine.

The interrupt keyword tells the compiler function chg_mode is an ISR. The number tell the compiler the interrupt source for the ISR.

Page 16: DPA

16

Example: Furnace ControllerUsing interrupts, design an 8051 furnace controller that keeps a building at 20C+/-1C.Solution:

The furnace ON/OFF solenoid is connected to P1.7 such that: P1.7 = 1 for furnace ON, P1.7=0 for furnace OFF.

Temperature sensor is connected to external interrupt 0 and 1 to provide HOT and COLD signal.

Page 17: DPA

Reading Assignment

“Embedded System Design with the C8051”, by Han-Way Huang. ISBN: 978-0495-47174-5, Publisher: Cengage Learning, Copyright: 2009. Chapter 6, sections 1, 2, 4.

17