You are on page 1of 27

ĐH Bách Khoa TP.

HCM Lê Chí Thông

The 8051 Microcontroller


Chapter 6
Interrupts

Lê Chí Thông
chithong@hcmut.edu.vn
sites.google.com/site/chithong
Ref. I. Scott Mackenzie, The 8051 Microcontroller

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í Thông 2

sites.google.com/site/chithong 1
CuuDuongThanCong.com https://fb.com/tailieudientucntt
ĐH Bách Khoa TP.HCM Lê Chí Thông

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í Thông 3

ISR vs. Subroutine


• Similarity: CPU executes another program and then returns to
the original program.
• Difference: It is NOT known when the main program suspends
execution.

ISR_NAME: SUBROUTINE_NAME:
… …
… …
RETI RET

Ref. I. Scott Mackenzie Lê Chí Thông 4

sites.google.com/site/chithong 2
CuuDuongThanCong.com https://fb.com/tailieudientucntt
ĐH Bách Khoa TP.HCM Lê Chí Thông

Interrupt Sources
• 2 External Interrupts
• 2 Timer Interrupts
• 1 Serial Port Interrupt
• Timer 2 Interrupt (8052 only)

Ref. I. Scott Mackenzie Lê Chí Thông 5

When an Interrupt occurs?


An interrupt = Occurrence of a condition (an event)

• 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.

Ref. I. Scott Mackenzie Lê Chí Thông 6

sites.google.com/site/chithong 3
CuuDuongThanCong.com https://fb.com/tailieudientucntt
ĐH Bách Khoa TP.HCM Lê Chí Thông

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í Thông 7

Enabling and Disabling Interrupts


EA - ET2 ES ET1 EX1 ET0 EX0

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í Thông 8

sites.google.com/site/chithong 4
CuuDuongThanCong.com https://fb.com/tailieudientucntt
ĐH Bách Khoa TP.HCM Lê Chí Thông

Enabling and Disabling Interrupts


EA - ET2 ES ET1 EX1 ET0 EX0

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í Thông 9

Interrupt Priority
- - PT2 PS PT1 PX1 PT0 PX0

IP (Interrupt Priority) Register

• 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
Ref. I. Scott Mackenzie Lê Chí Thông 10

sites.google.com/site/chithong 5
CuuDuongThanCong.com https://fb.com/tailieudientucntt
ĐH Bách Khoa TP.HCM Lê Chí Thông

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í Thông 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

Ref. I. Scott Mackenzie Lê Chí Thông 12

sites.google.com/site/chithong 6
CuuDuongThanCong.com https://fb.com/tailieudientucntt
ĐH Bách Khoa TP.HCM Lê Chí Thông

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í Thông 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 FLAG VECTOR ADDRESS
System reset RST 0000H
External 0 IE0 0003H
Timer 0 TF0 000BH
External 1 IE1 0013H
Timer 1 TF1 001BH
Serial port RI or TI 0023H
Timer 2 TF 2 or EXF2 002BH
Ref. I. Scott Mackenzie Lê Chí Thông 14

sites.google.com/site/chithong 7
CuuDuongThanCong.com https://fb.com/tailieudientucntt
ĐH Bách Khoa TP.HCM Lê Chí Thông

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í Thông 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í Thông 16

sites.google.com/site/chithong 8
CuuDuongThanCong.com https://fb.com/tailieudientucntt
ĐH Bách Khoa TP.HCM Lê Chí Thông

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.

Ref. I. Scott Mackenzie Lê Chí Thông 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

Ref. I. Scott Mackenzie Lê Chí Thông 18

sites.google.com/site/chithong 9
CuuDuongThanCong.com https://fb.com/tailieudientucntt
ĐH Bách Khoa TP.HCM Lê Chí Thông

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.

Ref. I. Scott Mackenzie Lê Chí Thông 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 SETB IT0


LJMP MAIN SJMP $
ORG 0003H DELAY10MS:
SETB P1.7 MOV TH0,#(-10000)
ACALL DELAY10MS MOV TL0,#(-10000)
CLR P1.7 SETB TR0
RETI JNB TF0,$
ORG 0030H CLR TF0
MAIN:MOV TMOD,#01H CLR TR0
SETB EA END
SETB EX0
Ref. I. Scott Mackenzie Lê Chí Thông 20

sites.google.com/site/chithong 10
CuuDuongThanCong.com https://fb.com/tailieudientucntt
ĐH Bách Khoa TP.HCM Lê Chí Thông

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.

Ref. I. Scott Mackenzie Lê Chí Thông 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í Thông 22

sites.google.com/site/chithong 11
CuuDuongThanCong.com https://fb.com/tailieudientucntt
ĐH Bách Khoa TP.HCM Lê Chí Thông

An Example of a Program Using Small ISR


ORG 0000H ;Reset
LJMP MAIN
ORG 000BH ;Interrupt vector of Timer 0
T0ISR:…

RETI ;Return to main program
MAIN: …

END

Ref. I. Scott Mackenzie Lê Chí Thông 23

An Example of a Program Using Large ISR


ORG 0000H ;Reset
LJMP MAIN
ORG 0003H ;Interrupt vector of External 0
LJMP E0ISR
ORG 000BH ;Interrupt vector of Timer 0
LJMP T0ISR
ORG 0013H ;Interrupt vector of External 1
LJMP E1ISR
ORG 001BH ;Interrupt vector of Timer 1
LJMP T1ISR
ORG 0023H ;Interrupt vector of serial port
LJMP SPISR
ORG 0030H
MAIN: …
SJMP $
E0ISR: …
RETI
T0ISR: …
RETI
… Mackenzie
Ref. I. Scott Lê Chí Thông 24
END

sites.google.com/site/chithong 12
CuuDuongThanCong.com https://fb.com/tailieudientucntt
ĐH Bách Khoa TP.HCM Lê Chí Thông

Memory Organization

ISR Vector table

3-byte instruction

Ref. I. Scott Mackenzie Lê Chí Thông 25

Timer (8 bit) Interrupt


Write a program using Timer 0 and interrupt to create a 10 kHz square
wave on P1.0. (Crystal 12 MHz)
ORG 0000H ;Reset
LJMP MAIN
ORG 000BH ;Interrupt vector of Timer 0
T0ISR: CPL P1.0
RETI
ORG 0030H
MAIN: MOV TMOD,#02H
MOV TH0,#-50
SETB TR0
MOV IE,#82H
SJMP $
END

Ref. I. Scott Mackenzie Lê Chí Thông 26

sites.google.com/site/chithong 13
CuuDuongThanCong.com https://fb.com/tailieudientucntt
ĐH Bách Khoa TP.HCM Lê Chí Thông

Practice Problem 1
Write a program using Timer 1 and interrupt to create a 20 kHz square
wave on P1.7. (Crystal 24 MHz)

Ref. I. Scott Mackenzie Lê Chí Thông 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

Ref. I. Scott Mackenzie Lê Chí Thông 28

sites.google.com/site/chithong 14
CuuDuongThanCong.com https://fb.com/tailieudientucntt
ĐH Bách Khoa TP.HCM Lê Chí Thông

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.

Ref. I. Scott Mackenzie Lê Chí Thông 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

Ref. I. Scott Mackenzie Lê Chí Thông 30

sites.google.com/site/chithong 15
CuuDuongThanCong.com https://fb.com/tailieudientucntt
ĐH Bách Khoa TP.HCM Lê Chí Thông

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.

Ref. I. Scott Mackenzie Lê Chí Thông 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 PHAT: JNB TI,$


LJMP MAIN CLR TI
ORG 000BH MOV SBUF,A
ACALL PHAT RET
RETI END
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 Lê Chí Thông 32

sites.google.com/site/chithong 16
CuuDuongThanCong.com https://fb.com/tailieudientucntt
ĐH Bách Khoa TP.HCM Lê Chí Thông

Timer (16 bit) Interrupt


Write a program using Timer 0 and interrupt to create a 1 kHz square
wave on P1.1. (Crystal 12 MHz)

Ref. I. Scott Mackenzie Lê Chí Thông 33

Timer (16 bit) Interrupt


Write a program using Timer 0 and interrupt to create a 1 kHz square
wave on P1.1. (Crystal 12 MHz)
ORG 0000H CTNGATTIMER0:
LJMP CTCHINH CPL P1.1
ORG 000BH CLR TR0
LJMP CTNGATTIMER0 MOV TH0,#HIGH(-500)
ORG 0030H MOV TL0,#LOW(-500)
CTCHINH: SETB TR0
MOV TMOD,#01H RETI
MOV TH0,#HIGH(-500) END
MOV TL0,#LOW(-500)
SETB TR0
SETB EA
SETB ET0
SJMP $

Ref. I. Scott Mackenzie Lê Chí Thông 34

sites.google.com/site/chithong 17
CuuDuongThanCong.com https://fb.com/tailieudientucntt
ĐH Bách Khoa TP.HCM Lê Chí Thông

Timer (16 bit) Interrupt


Write a program using Timer 0 and interrupt to create a 1 kHz square
wave on P1.1. (Crystal 12 MHz)
ORG 0000H CTNGATTIMER0:
LJMP CTCHINH CPL P1.1
ORG 000BH CLR TR0
LJMP CTNGATTIMER0 MOV TH0,#HIGH(-500)
ORG 0030H MOV TL0,#LOW(-500)
CTCHINH: SETB TR0
MOV TMOD,#01H RETI
SETB EA END
SETB ET0
SETB TF0 ; Ép ngắt
SJMP $

Ref. I. Scott Mackenzie Lê Chí Thông 35

Practice Problem 1
Write a program using Timer 1 and interrupt to create a 100 Hz
square wave on P1.2. (Crystal 24MHz)

Ref. I. Scott Mackenzie Lê Chí Thông 36

sites.google.com/site/chithong 18
CuuDuongThanCong.com https://fb.com/tailieudientucntt
ĐH Bách Khoa TP.HCM Lê Chí Thông

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 CTNGATTIMER1:
LJMP CTCHINH CPL P1.2
ORG 001BH CLR TR1
LJMP CTNGATTIMER1 MOV TH1,#HIGH(-10000)
ORG 0030H MOV TL1,#LOW(-10000)
CTCHINH: SETB TR1
MOV TMOD,#10H RETI
SETB EA END
SETB ET1
SETB TF1 ; Ép ngắt
SJMP $

Ref. I. Scott Mackenzie Lê Chí Thông 37

Practice Problem 2
Write a program using Timer 1 and interrupt to complement P1.2
every 1 sec. (Crystal 12 MHz)

Ref. I. Scott Mackenzie Lê Chí Thông 38

sites.google.com/site/chithong 19
CuuDuongThanCong.com https://fb.com/tailieudientucntt
ĐH Bách Khoa TP.HCM Lê Chí Thông

Practice Problem 2
Write a program using Timer 1 and interrupt to complement P1.2
every 1 sec. (Crystal 12 MHz)
ORG 0000H CTNGATTIMER1:
LJMP CTCHINH CPL P1.2
ORG 001BH CLR TR1
LJMP CTNGATTIMER1 MOV TH1,#HIGH(-10000)
ORG 0030H MOV TL1,#LOW(-10000)
CTCHINH: SETB TR1
MOV TMOD,#10H RETI
SETB EA END
SETB ET1
SETB TF1 ; Ép ngắt
SJMP $

Ref. I. Scott Mackenzie Lê Chí Thông 39

Two Square Waves Using Timer Interrupts


Write a program using interrupts to create 7 kHz and 500 Hz square
waves on P1.7 and P1.6. (Crystal 12 MHz)

Ref. I. Scott Mackenzie Lê Chí Thông 40

sites.google.com/site/chithong 20
CuuDuongThanCong.com https://fb.com/tailieudientucntt
ĐH Bách Khoa TP.HCM Lê Chí Thông

Two Square Waves Using Timer Interrupts


Write a program using interrupts to create 7 kHz and 500 Hz square
waves on P1.7 and P1.6
ORG 0000H T0ISR: CPL P1.7
LJMP MAIN RETI
ORG 000BH T1ISR: CPL P1.6
LJMP T0ISR CLR TR1
ORG 001BH MOV TH1,#HIGH(-1000)
LJMP T1ISR MOV TL1,#LOW(-1000)
ORG 0030H SETB TR1
MAIN: MOV TMOD,#12H RETI
MOV IE,#8AH END
MOV TH0,#-71
SETB TR0
MOV TH1,#HIGH(-1000)
MOV TL1,#LOW(-1000)
SETB TR1
SJMP $

Ref. I. Scott Mackenzie Lê Chí Thông 41

Character Output Using Interrupts


Write a program using interrupts to continually transmit the ASCII code set
(excluding control codes) to a terminal attached to the 8051’s serial port (1200
baud, 12 MHz crystal). The ASCII codes consist of 95 graphic codes (20H to 7EH) and
33 control codes (00H to 1FH, and 7FH).
ORG 0000H SPISR: CJNE A,#7FH,SKIP
LJMP MAIN MOV A,#20H
ORG 0023H SKIP: MOV SBUF,A
LJMP SPISR INC A
ORG 0030H CLR TI
MAIN: MOV TMOD,#20H RETI
MOV TH1,#-26 END
SETB TR1
MOV SCON,#42H
MOV IE,#90H
MOV A,#20H
SETB TI
SJMP $

Ref. I. Scott Mackenzie Lê Chí Thông 42

sites.google.com/site/chithong 21
CuuDuongThanCong.com https://fb.com/tailieudientucntt
ĐH Bách Khoa TP.HCM Lê Chí Thông

Character Output Using Interrupts (2)


Write a program using interrupts to continually transmit the ASCII code set
(excluding control codes) to a terminal attached to the 8051’s serial port (1200
baud, 12 MHz crystal). The ASCII codes consist of 95 graphic codes (20H to 7EH) and
33 control codes (00H to 1FH, and 7FH).

Ref. I. Scott Mackenzie Lê Chí Thông 43

Character Output Using Interrupts (2)


Write a program using interrupts to continually transmit the ASCII code set
(excluding control codes) to a terminal attached to the 8051’s serial port (1200
baud, 12 MHz crystal). The ASCII codes consist of 95 graphic codes (20H to 7EH) and
33 control codes (00H to 1FH, and 7FH).
ORG 0000H SPISR: CLR TI
LJMP MAIN MOV SBUF,A
ORG 0023H INC A
LJMP SPISR CJNE A,#7FH,SKIP
ORG 0030H MOV A,#20H
MAIN: MOV SCON,#52H SKIP: RETI
MOV TMOD,#20H END
MOV TH1,#-26
SETB TR1
MOV A,#20H
MOV IE,#90H
SJMP $

Ref. I. Scott Mackenzie Lê Chí Thông 44

sites.google.com/site/chithong 22
CuuDuongThanCong.com https://fb.com/tailieudientucntt
ĐH Bách Khoa TP.HCM Lê Chí Thông

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
P3.2
P1.7 = 1 : Furnace ON
P1.7 = 0 : Furnace OFF P3.3

Ref. I. Scott Mackenzie Lê Chí Thông 45

Furnace Controller
Using interrupts, design an 8051 furnace controller that keeps a building at 20oC ± 1oC.
ORG 0000H
LJMP MAIN
ORG 0003H
E0ISR: CLR P1.7 ;turn furnace off
RETI
ORG 0013H
E1ISR: SETB P1.7 ;turn furnace on
RETI
ORG 0030H
MAIN: MOV IE,#85H ;enable external 0 & 1 interrupts
SETB IT0 ;negative edge triggered for external 0
SETB IT1 ;negative edge triggered for external 1
SETB P1.7 ;turn furnace on
JB P3.2,SKIP ;if T > 21 degrees,
CLR P1.7 ; turn furnace off
SKIP: SJMP $ ;do nothing
END

Ref. I. Scott Mackenzie Lê Chí Thông 46

sites.google.com/site/chithong 23
CuuDuongThanCong.com https://fb.com/tailieudientucntt
ĐH Bách Khoa TP.HCM Lê Chí Thông

Intrusion Warning System (1)


Design an intrusion warning system using interrupts that sounds a 400 Hz tone using
loudspeaker connected to P1.7 whenever a door sensor connected /INT0 makes a
high-to-low transition.

P3.2

Ref. I. Scott Mackenzie Lê Chí Thông 47

Intrusion Warning System (1)


Design an intrusion warning system using interrupts that sounds a 400 Hz tone using
loudspeaker connected to P1.7 whenever a door sensor connected /INT0 makes a
high-to-low transition.
ORG 0000H T1ISR: CLR TR1
LJMP MAIN MOV TH1,#HIGH(-1250)
ORG 0003H MOV TL1,#LOW(-1250)
LJMP E0ISR CPL P1.7
ORG 001BH SETB TR1
LJMP T1ISR RETI
ORG 0030H END
MAIN: SETB IT0
MOV TMOD,#10H
MOV IE,#81H
SJMP $
E0ISR: SETB TF1
SETB ET1
RETI

Ref. I. Scott Mackenzie Lê Chí Thông 48

sites.google.com/site/chithong 24
CuuDuongThanCong.com https://fb.com/tailieudientucntt
ĐH Bách Khoa TP.HCM Lê Chí Thông

Intrusion Warning System (2)


Design an intrusion warning system using interrupts that sounds a 400 Hz tone for
50 ms (using loudspeaker connected to P1.7) whenever a door sensor connected
/INT0 makes a high-to-low transition.

P3.2

50 ms

Ref. I. Scott Mackenzie Lê Chí Thông 49

Intrusion Warning System (2)


Design an intrusion warning system using interrupts that sounds a 400 Hz tone for
50 ms (using loudspeaker connected to P1.7) whenever a door sensor connected
/INT0 makes a high-to-low transition.
ORG 0000H SETB ET0
LJMP MAIN SETB ET1
ORG 0003H RETI
LJMP E0ISR T0ISR: CLR TR0
ORG 000BH CLR ET0
LJMP T0ISR CLR ET1
ORG 001BH RETI
LJMP T1ISR T1ISR: CLR TR1
ORG 0030H MOV TH1,#HIGH(-1250)
MAIN: SETB IT0 MOV TL1,#LOW(-1250)
MOV TMOD,#11H CPL P1.7
MOV IE,#81H SETB TR1
SJMP $ RETI
E0ISR: MOV TH0,#HIGH(-50000) END
MOV TL0,#LOW(-50000)
SETB TR0
SETB
Ref. I. Scott TF1
Mackenzie Lê Chí Thông 50

sites.google.com/site/chithong 25
CuuDuongThanCong.com https://fb.com/tailieudientucntt
ĐH Bách Khoa TP.HCM Lê Chí Thông

Intrusion Warning System (3)


Design an intrusion warning system using interrupts that sounds a 400 Hz tone for
1 second (using loudspeaker connected to P1.7) whenever a door sensor connected
/INT0 makes a high-to-low transition.

P3.2

Ref. I. Scott Mackenzie Lê Chí Thông 51

Intrusion Warning System (3)


Design an intrusion warning system using interrupts that sounds a 400 Hz tone for
1 second (using loudspeaker connected to P1.7) whenever a door sensor connected
/INT0 makes a high-to-low transition.
ORG 0000H SETB ET1
LJMP MAIN RETI
ORG 0003H T0ISR: CLR TR0
LJMP E0ISR DJNZ R7,SKIP
ORG 000BH CLR ET0
LJMP T0ISR CLR ET1
ORG 001BH LJMP EXIT
LJMP T1ISR SKIP: MOV TH0,#HIGH(-50000)
ORG 0030H MOV TL0,#LOW(-50000)
MAIN: SETB IT0 SETB TR0
MOV TMOD,#11H EXIT: RETI
MOV IE,#81H T1ISR: CLR TR1
SJMP $ MOV TH1,#HIGH(-1250)
E0ISR: MOV R7,#20 MOV TL1,#LOW(-1250)
SETB TF0 CPL P1.7
SETB TF1 SETB TR1
SETB
Ref. I. Scott ET0
Mackenzie Lê Chí Thông RETI 52
END

sites.google.com/site/chithong 26
CuuDuongThanCong.com https://fb.com/tailieudientucntt
ĐH Bách Khoa TP.HCM Lê Chí Thông

References

• I. Scott Mackenzie, The 8051 Microcontroller


• Các tài liệu trên Internet không trích dẫn hoặc không ghi tác
giả

Lê Chí Thông 53

sites.google.com/site/chithong 27
CuuDuongThanCong.com https://fb.com/tailieudientucntt

You might also like