Documente Academic
Documente Profesional
Documente Cultură
HCM
L Ch Thng
What Is an Interrupt?
(Source: http://www.6502.org/tutorials/interrupts.html)
An interrupt = Occurrence of a condition (an event) Deal with the event while another program is executing Do many things simultaneously
Ref. I. Scott Mackenzie L Ch Thng 2
sites.google.com/site/chithong
L Ch Thng
Interrupts
Hardware Event
When an interrupt occurs, the main program temporarily suspends execution and branches to the interrupt service routine (ISR), perform the operation, and terminates with a return from interrupt instruction (RETI).
Ref. I. Scott Mackenzie L Ch Thng 3
L Ch Thng
sites.google.com/site/chithong
L Ch Thng
Interrupt Sources
2 External Interrupts 2 Timer Interrupts 1 Serial Port Interrupt Timer 2 Interrupt (8052 only)
L Ch Thng
When a falling edge occur at /INT0 pin, External 0 Interrupt occurs. When a falling edge occur at /INT1 pin, External 1 Interrupt occurs. When Timer 0 is overflow, Timer 0 Interrupt occurs. When Timer 1 is overflow, Timer 1 Interrupt occurs. When the transmission is done (transmit buffer is empty) or the reception is done (receiver buffer is full), Serial Port Interrupt occurs.
L Ch Thng
sites.google.com/site/chithong
L Ch Thng
Interrupt Sources
2 external interrupts (/INT0 and /INT1), 2 timer interrupts (TF0 and TF1), a serial port interrupt (RI or TI), and Timer 2 interrupt (8052 only)
Ref. I. Scott Mackenzie L Ch Thng 7
IE (Interrupt Enable) Register EA : Global enable/disable - : Undefined ET2: Enable Timer 2 interrupt ES: Enable Serial port interrupt ET1: Enable Timer 1 interrupt EX1: Enable External 1 interrupt ET0: Enable Timer 0 interrupt EX0: Enable External 0 interrupt 1 = Enable; 0 = Disable
Ref. I. Scott Mackenzie L Ch Thng 8
sites.google.com/site/chithong
L Ch Thng
IE (Interrupt Enable) Register Eg. Timer 1 interrupt is enabled as follow: SETB ET1 SETB EA or MOV IE,#10001000B Eg. External 0 and serial interrupts are enabled as follow: SETB EX0 SETB ES SETB EA or MOV IE,#10010001B Ref. I. Scott Mackenzie L Ch Thng
Interrupt Priority
PT2 PS PT1 PX1 PT0 PX0
PT2 : Priority for Timer 2 interrupt PS: Priority for Serial port interrupt PT1: Priority for Timer 1 interrupt PX1: Priority for External 1 interrupt PT0: Priority for Timer 0 interrupt PX0: Priority for External 0 interrupt 1 = Higher Level; 0 = Lower Level
L Ch Thng
10
sites.google.com/site/chithong
L Ch Thng
Interrupt Priority
PT2 PS PT1 PX1 PT0 PX0
IP (Interrupt Priority) Register If 2 interrupts occur simultaneously a high-priority ISR executes If a low-priority ISR is executing when a high-priority interrupts the low-priority ISR is interrupted A high-priority interrupt can interrupt a low-priority ISR. A high-priority ISR cannot be interrupted. If 2 interrupts of the same priority occur simultaneously a fixed polling sequence determines which is serviced first The polling sequence is external 0, Timer 0, external 1, Timer 1, serial port, Timer 2.
Ref. I. Scott Mackenzie L Ch Thng 11
Interrupt Flags
When an event occurs the corresponding interrupt flag is set Interrupt occurs
5 Interrupt Sources: 2 external interrupt, 2 timer interrupt and 1 serial port interrupt 6 Interrupt Flags: IE0, IE1, TF0, TF1, TI, and RI
L Ch Thng
12
sites.google.com/site/chithong
L Ch Thng
Interrupt Flags
When an event occurs the corresponding interrupt flag is set Interrupt occurs
When a falling edge occur at /INT0 pin the IE0 flag is set External 0 Interrupt occurs When a falling edge occur at /INT1 pin the IE1 flag is set External 1 Interrupt occurs When Timer 0 is overflow the IE0 flag is set Timer 0 Interrupt occurs When Timer 1 is overflow the IE1 flag is set Timer 1 Interrupt occurs When the transmission is done (transmit buffer is empty) or the reception is done (receiver buffer is full) the TI or RI flag is set Serial Port Interrupt occurs.
Ref. I. Scott Mackenzie L Ch Thng 13
Interrupt Vectors
When an interrupt is accepted, the value loaded into PC is called interrupt vector. It is the address of the start of the ISR.
INTERRUPT System reset External 0 Timer 0 External 1 Timer 1 Serial port Timer 2
Ref. I. Scott Mackenzie
sites.google.com/site/chithong
L Ch Thng
Processing Interrupts
When an interrupt (an event) occurs: The corresponding interrupt flag is set The current instruction completes execution. The PC is saved on the stack. The PC is loaded with the interrupt vector, which is the address of the start of the ISR. The interrupt flag is automatically cleared, except RI &TI (and TF2 & EXF2 for 8052) The ISR executes and takes action in response to the interrupt. The ISR finishes with a RETI (return from interrupt) instruction. This retrieves the old value of the PC from the stack and execution of the main program continues.
Ref. I. Scott Mackenzie L Ch Thng 15
An Example
Assume that External 0 interrupt was enabled. When a falling edge (or level 0) is applied to pin P3.2 (/INT0) IE0 is set (automatically by hardware) The current PC is saved on the stack PC 0003H (and the main program is interrupted) The instruction at address 0003H (i.e. the first instruction of the ISR for External 0) executes. When the ISR is done, the RETI instruction retrieves the old value of the PC from the stack and the main program continues. Question: What will happen if there is NO falling edge (or level 0) applied to pin P3.2 (/INT0) (i.e. NO interrupt signal occur) but bit IE0 is set by software (i.e. by using SETB IE0)?
Ref. I. Scott Mackenzie L Ch Thng 16
sites.google.com/site/chithong
L Ch Thng
External Interrupt
A push-button is connected to pin P3.2 (/INT0). A falling edge is created when pushing this button. Write a program that sets pin P1.7 when pushing the button down.
L Ch Thng
17
External Interrupt
A push-button is connected to pin P3.2 (/INT0). A falling edge is created when pushing this button. Write a program that sets pin P1.7 when pushing the button down.
ORG 0000H LJMP MAIN ORG 0003H ;ISR External Int 0 SETB P1.7 RETI ORG 0030H ;Main program MAIN: SETB EA SETB EX0 ;Enable Ext Int 0 SETB IT0 ;Falling edge SJMP $ END
L Ch Thng
18
sites.google.com/site/chithong
L Ch Thng
Practice Problem 1
A push-button is connected to pin P3.2 (/INT0). A falling edge is created when pushing this button. Write a program that creates one 10-ms pulse at pin P1.7 when pushing the button down.
L Ch Thng
19
Practice Problem 1
A push-button is connected to pin P3.2 (/INT0). A falling edge is created when pushing this button. Write a program that creates one 10-ms pulse at pin P1.7 when pushing the button down.
ORG 0000H LJMP MAIN ORG 0003H SETB P1.7 ACALL DELAY10MS CLR P1.7 RETI ORG 0030H MAIN:MOV TMOD,#01H SETB EA SETB EX0
Ref. I. Scott Mackenzie
SETB IT0 SJMP $ DELAY10MS: MOV TH0,#(-10000) MOV TL0,#(-10000) SETB TR0 JNB TF0,$ CLR TF0 CLR TR0 END
L Ch Thng 20
sites.google.com/site/chithong
10
L Ch Thng
Practice Problem 2
A push-button is connected to pin P3.3 (/INT1). A falling edge is created when pushing this button. Write a program that increases the content of location 40H of internal RAM when pushing the button down.
L Ch Thng
21
Practice Problem 2
An push-button is connected to pin P3.3 (/INT1). A falling edge is created when pushing this button. Write a program that increases the content of location 40H of internal RAM.
ORG 0000H LJMP MAIN ORG 0013H ;Int vector of external int 1 INC 40H RETI ORG 0030H MAIN:SETB EA SETB EX1 ;Enable ext int 1 SETB IT1 ;Falling edge SJMP $ END
Ref. I. Scott Mackenzie L Ch Thng 22
sites.google.com/site/chithong
11
L Ch Thng
L Ch Thng
23
L Ch Thng
24
sites.google.com/site/chithong
12
L Ch Thng
Memory Organization
3-byte instruction
L Ch Thng
25
L Ch Thng
26
sites.google.com/site/chithong
13
L Ch Thng
Practice Problem 1
Write a program using Timer 1 and interrupt to create a 20 kHz square wave on P1.7. (Crystal 24 MHz)
L Ch Thng
27
Practice Problem 1
Write a program using Timer 1 and interrupt to create a 20 kHz square wave on P1.7. (Crystal 24 MHz)
ORG 0000H ;Reset LJMP MAIN ORG 001BH ;Interrupt vector of Timer 1 T0ISR: CPL P1.7 RETI ORG 0030H MAIN: MOV TMOD,#20H MOV TH1,#-50 SETB TR1 SETB EA SETB ET1 SJMP $ END
L Ch Thng
28
sites.google.com/site/chithong
14
L Ch Thng
Practice Problem 2
Write a program using Timer 1 and interrupt to output data from A to Port 1 every 100 us. Use crystal 12 MHz.
L Ch Thng
29
Practice Problem 2
Write a program using Timer 1 and interrupt to output data from A to Port 1 every 100 us. Use crystal 12 MHz.
ORG 0000H LJMP MAIN ORG 001BH ;Interrupt vector of Timer 1 MOV P1,A RETI ORG 0030H MAIN: MOV TMOD,#20H MOV TH1,#-100 SETB TR1 SETB EA SETB ET1 SJMP $ END
L Ch Thng
30
sites.google.com/site/chithong
15
L Ch Thng
Practice Problem 3
Write a program using Timer and interrupt to send data from A to serial port (UART 8 bit, 1200 baud) every 250 us. Use crystal 12 MHz.
L Ch Thng
31
Practice Problem 3
Write a program using Timer and interrupt to send data from A to serial port (UART 8 bit, 1200 baud) every 250 us. Use crystal 12 MHz.
ORG 0000H LJMP MAIN ORG 000BH ACALL PHAT RETI ORG 0030H MAIN: MOV TMOD,#22H MOV SCON,#52H MOV TH1,#-26 SETB TR1 MOV TH0,#-250 SETB TR0 SETB EA SETB ET0 SJMP $
Ref. I. Scott Mackenzie
PHAT:
L Ch Thng
32
sites.google.com/site/chithong
16
L Ch Thng
L Ch Thng
33
L Ch Thng
34
sites.google.com/site/chithong
17
L Ch Thng
L Ch Thng
35
Practice Problem 1
Write a program using Timer 1 and interrupt to create a 100 Hz square wave on P1.2. (Crystal 24MHz)
L Ch Thng
36
sites.google.com/site/chithong
18
L Ch Thng
Practice Problem 1
Write a program using Timer 1 and interrupt to create a 100 Hz square wave on P1.2. (Crystal 24MHz)
ORG 0000H LJMP CTCHINH ORG 001BH LJMP CTNGATTIMER1 ORG 0030H CTCHINH: MOV TMOD,#10H SETB EA SETB ET1 SETB TF1 ; p ngt SJMP $ CTNGATTIMER1: CPL P1.2 CLR TR1 MOV TH1,#HIGH(-10000) MOV TL1,#LOW(-10000) SETB TR1 RETI END
L Ch Thng
37
Practice Problem 2
Write a program using Timer 1 and interrupt to complement P1.2 every 1 sec. (Crystal 12 MHz)
L Ch Thng
38
sites.google.com/site/chithong
19
L Ch Thng
Practice Problem 2
Write a program using Timer 1 and interrupt to complement P1.2 every 1 sec. (Crystal 12 MHz)
ORG 0000H LJMP CTCHINH ORG 001BH LJMP CTNGATTIMER1 ORG 0030H CTCHINH: MOV TMOD,#10H SETB EA SETB ET1 SETB TF1 ; p ngt SJMP $ CTNGATTIMER1: CPL P1.2 CLR TR1 MOV TH1,#HIGH(-10000) MOV TL1,#LOW(-10000) SETB TR1 RETI END
L Ch Thng
39
L Ch Thng
40
sites.google.com/site/chithong
20
L Ch Thng
L Ch Thng
41
L Ch Thng
42
sites.google.com/site/chithong
21
L Ch Thng
L Ch Thng
43
L Ch Thng
44
sites.google.com/site/chithong
22
L Ch Thng
Furnace Controller
Using interrupts, design an 8051 furnace controller that keeps a building at 20oC 1oC. Temperature sensors are connected to /INT0 and /INT1 and provide /HOT and /COLD signals. The furnace ON/OFF solenoid is connected to P1.7. /HOT = 0 if T > 21oC /COLD = 0 if T < 19oC P1.7 = 1 : Furnace ON P1.7 = 0 : Furnace OFF
P3.2
P3.3
L Ch Thng
45
Furnace Controller
Using interrupts, design an 8051 furnace controller that keeps a building at 20oC 1oC.
ORG 0000H LJMP MAIN ORG 0003H CLR P1.7 RETI ORG 0013H SETB P1.7 RETI ORG 0030H MOV IE,#85H SETB IT0 SETB IT1 SETB P1.7 JB P3.2,SKIP CLR P1.7 SJMP $ END
E0ISR:
E1ISR:
;turn furnace on
MAIN:
SKIP:
;enable external 0 & 1 interrupts ;negative edge triggered for external 0 ;negative edge triggered for external 1 ;turn furnace on ;if T > 21 degrees, ; turn furnace off ;do nothing
L Ch Thng
46
sites.google.com/site/chithong
23
L Ch Thng
P3.2
L Ch Thng
47
L Ch Thng
48
sites.google.com/site/chithong
24
L Ch Thng
P3.2
50 ms
L Ch Thng
49
L Ch Thng
50
sites.google.com/site/chithong
25
L Ch Thng
P3.2
L Ch Thng
51
sites.google.com/site/chithong
26
L Ch Thng
References
I. Scott Mackenzie, The 8051 Microcontroller Cc ti liu trn Internet khng trch dn hoc khng ghi tc gi
L Ch Thng
53
sites.google.com/site/chithong
27