Sunteți pe pagina 1din 27

H Bch Khoa TP.

HCM

L Ch Thng

The 8051 Microcontroller Chapter 6 Interrupts


L Ch Thng 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 Thng 2

sites.google.com/site/chithong

H Bch Khoa TP.HCM

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

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: RETI SUBROUTINE_NAME: RET

Ref. I. Scott Mackenzie

L Ch Thng

sites.google.com/site/chithong

H Bch Khoa TP.HCM

L Ch Thng

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

Ref. I. Scott Mackenzie

L Ch Thng

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 Thng

sites.google.com/site/chithong

H Bch Khoa TP.HCM

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

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 Thng 8

sites.google.com/site/chithong

H Bch Khoa TP.HCM

L Ch Thng

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 Thng

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 Thng

10

sites.google.com/site/chithong

H Bch Khoa TP.HCM

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

Ref. I. Scott Mackenzie

L Ch Thng

12

sites.google.com/site/chithong

H Bch Khoa TP.HCM

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

FLAG RST IE0 TF0 IE1 TF1 RI or TI TF 2 or EXF2


L Ch Thng

VECTOR ADDRESS 0000H 0003H 000BH 0013H 001BH 0023H 002BH


14

sites.google.com/site/chithong

H Bch Khoa TP.HCM

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

H Bch Khoa TP.HCM

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.

Ref. I. Scott Mackenzie

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

Ref. I. Scott Mackenzie

L Ch Thng

18

sites.google.com/site/chithong

H Bch Khoa TP.HCM

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.

Ref. I. Scott Mackenzie

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

H Bch Khoa TP.HCM

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.

Ref. I. Scott Mackenzie

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

H Bch Khoa TP.HCM

L Ch Thng

An Example of a Program Using Small ISR


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

;Return to main program

Ref. I. Scott Mackenzie

L Ch Thng

23

An Example of a Program Using Large ISR


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

L Ch Thng

24

sites.google.com/site/chithong

12

H Bch Khoa TP.HCM

L Ch Thng

Memory Organization

ISR Vector table

3-byte instruction

Ref. I. Scott Mackenzie

L Ch Thng

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 Thng

26

sites.google.com/site/chithong

13

H Bch Khoa TP.HCM

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)

Ref. I. Scott Mackenzie

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

Ref. I. Scott Mackenzie

L Ch Thng

28

sites.google.com/site/chithong

14

H Bch Khoa TP.HCM

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.

Ref. I. Scott Mackenzie

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

Ref. I. Scott Mackenzie

L Ch Thng

30

sites.google.com/site/chithong

15

H Bch Khoa TP.HCM

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.

Ref. I. Scott Mackenzie

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:

JNB TI,$ CLR TI MOV SBUF,A RET END

L Ch Thng

32

sites.google.com/site/chithong

16

H Bch Khoa TP.HCM

L Ch Thng

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 Thng

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 LJMP CTCHINH ORG 000BH LJMP CTNGATTIMER0 ORG 0030H CTCHINH: MOV TMOD,#01H MOV TH0,#HIGH(-500) MOV TL0,#LOW(-500) SETB TR0 SETB EA SETB ET0 SJMP $ CTNGATTIMER0: CPL P1.1 CLR TR0 MOV TH0,#HIGH(-500) MOV TL0,#LOW(-500) SETB TR0 RETI END

Ref. I. Scott Mackenzie

L Ch Thng

34

sites.google.com/site/chithong

17

H Bch Khoa TP.HCM

L Ch Thng

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 LJMP CTCHINH ORG 000BH LJMP CTNGATTIMER0 ORG 0030H CTCHINH: MOV TMOD,#01H SETB EA SETB ET0 SETB TF0 ; p ngt SJMP $ CTNGATTIMER0: CPL P1.1 CLR TR0 MOV TH0,#HIGH(-500) MOV TL0,#LOW(-500) SETB TR0 RETI END

Ref. I. Scott Mackenzie

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)

Ref. I. Scott Mackenzie

L Ch Thng

36

sites.google.com/site/chithong

18

H Bch Khoa TP.HCM

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

Ref. I. Scott Mackenzie

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)

Ref. I. Scott Mackenzie

L Ch Thng

38

sites.google.com/site/chithong

19

H Bch Khoa TP.HCM

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

Ref. I. Scott Mackenzie

L Ch Thng

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 Thng

40

sites.google.com/site/chithong

20

H Bch Khoa TP.HCM

L Ch Thng

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 LJMP MAIN ORG 000BH LJMP T0ISR ORG 001BH LJMP T1ISR ORG 0030H MAIN: MOV TMOD,#12H MOV IE,#8AH MOV TH0,#-71 SETB TR0 MOV TH1,#HIGH(-1000) MOV TL1,#LOW(-1000) SETB TR1 SJMP $ T0ISR: CPL P1.7 RETI T1ISR: CPL P1.6 CLR TR1 MOV TH1,#HIGH(-1000) MOV TL1,#LOW(-1000) SETB TR1 RETI END

Ref. I. Scott Mackenzie

L Ch Thng

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 8051s 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 LJMP MAIN ORG 0023H LJMP SPISR ORG 0030H MAIN: MOV TMOD,#20H MOV TH1,#-26 SETB TR1 MOV SCON,#42H MOV IE,#90H MOV A,#20H SETB TI SJMP $ SPISR: CJNE A,#7FH,SKIP MOV A,#20H SKIP: MOV SBUF,A INC A CLR TI RETI END

Ref. I. Scott Mackenzie

L Ch Thng

42

sites.google.com/site/chithong

21

H Bch Khoa TP.HCM

L Ch Thng

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 8051s 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 Thng

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 8051s 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 LJMP MAIN ORG 0023H LJMP SPISR ORG 0030H MAIN: MOV SCON,#52H MOV TMOD,#20H MOV TH1,#-26 SETB TR1 MOV A,#20H MOV IE,#90H SJMP $ SPISR: CLR TI MOV SBUF,A INC A CJNE A,#7FH,SKIP MOV A,#20H SKIP: RETI END

Ref. I. Scott Mackenzie

L Ch Thng

44

sites.google.com/site/chithong

22

H Bch Khoa TP.HCM

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

Ref. I. Scott Mackenzie

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:

;turn furnace off

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

Ref. I. Scott Mackenzie

L Ch Thng

46

sites.google.com/site/chithong

23

H Bch Khoa TP.HCM

L Ch Thng

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 Thng

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 LJMP MAIN ORG 0003H LJMP E0ISR ORG 001BH LJMP T1ISR ORG 0030H MAIN: SETB IT0 MOV TMOD,#10H MOV IE,#81H SJMP $ E0ISR: SETB TF1 SETB ET1 RETI T1ISR: CLR TR1 MOV TH1,#HIGH(-1250) MOV TL1,#LOW(-1250) CPL P1.7 SETB TR1 RETI END

Ref. I. Scott Mackenzie

L Ch Thng

48

sites.google.com/site/chithong

24

H Bch Khoa TP.HCM

L Ch Thng

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 Thng

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 LJMP MAIN ORG 0003H LJMP E0ISR ORG 000BH LJMP T0ISR ORG 001BH LJMP T1ISR ORG 0030H MAIN: SETB IT0 MOV TMOD,#11H MOV IE,#81H SJMP $ E0ISR: MOV TH0,#HIGH(-50000) MOV TL0,#LOW(-50000) SETB TR0 SETB TF1 Ref. I. Scott Mackenzie SETB ET0 SETB ET1 RETI T0ISR: CLR TR0 CLR ET0 CLR ET1 RETI T1ISR: CLR TR1 MOV TH1,#HIGH(-1250) MOV TL1,#LOW(-1250) CPL P1.7 SETB TR1 RETI END

L Ch Thng

50

sites.google.com/site/chithong

25

H Bch Khoa TP.HCM

L Ch Thng

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 Thng

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 LJMP MAIN ORG 0003H LJMP E0ISR ORG 000BH LJMP T0ISR ORG 001BH LJMP T1ISR ORG 0030H MAIN: SETB IT0 MOV TMOD,#11H MOV IE,#81H SJMP $ E0ISR: MOV R7,#20 SETB TF0 SETB TF1 SETB ET0 Ref. I. Scott Mackenzie SETB ET1 RETI T0ISR: CLR TR0 DJNZ R7,SKIP CLR ET0 CLR ET1 LJMP EXIT SKIP: MOV TH0,#HIGH(-50000) MOV TL0,#LOW(-50000) SETB TR0 EXIT: RETI T1ISR: CLR TR1 MOV TH1,#HIGH(-1250) MOV TL1,#LOW(-1250) CPL P1.7 SETB TR1 RETI L Ch Thng 52 END

sites.google.com/site/chithong

26

H Bch Khoa TP.HCM

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

S-ar putea să vă placă și