functions - naresuan university
TRANSCRIPT
![Page 1: Functions - Naresuan University](https://reader030.vdocuments.site/reader030/viewer/2022012505/617ffa361e075c02b4223b38/html5/thumbnails/1.jpg)
1
![Page 2: Functions - Naresuan University](https://reader030.vdocuments.site/reader030/viewer/2022012505/617ffa361e075c02b4223b38/html5/thumbnails/2.jpg)
2
NAME1 EQU 1234NAME2 EQU 5678âĶâĶâĶâĶâĶâĶâĶâĶâĶâĶâĶâĶâĶâĶâĶâĶ ORG 0000HAJMP MAIN; Comment
ORG 0003HAJMP ISR0âĶâĶâĶâĶâĶ
ORG 000BHAJMP ISR1âĶâĶâĶâĶâĶ
ORG 0013HAJMP ISR2âĶâĶâĶâĶâĶ
ORG 001BHAJMP ISR3âĶâĶâĶâĶâĶ
ORG 0023HAJMP ISR4âĶâĶâĶâĶâĶ
ORG 002BHAJMP ISR5âĶâĶâĶâĶâĶ
ORG 0030HMAIN:âĶâĶâĶâĶâĶâĶâĶâĶâĶ
ACALL FUNCTION1âĶâĶâĶâĶâĶâĶâĶâĶâĶACALL FUNCTION2âĶâĶâĶâĶâĶâĶâĶâĶâĶâĶâĶâĶâĶâĶâĶâĶâĶâĶSJMP $
or SJMP MAIN
FUNCTION1:âĶâĶâĶâĶ...âĶâĶâĶâĶâĶ.âĶâĶâĶâĶâĶRET
END
ISR0: âĶâĶâĶâĶ.....âĶâĶâĶâĶâĶ.âĶâĶâĶâĶâĶ.RETI
External Interrupt 0 ISR
Timer 0 Interrupt ISR
External Interrupt 1 ISR
Timer 1 Interrupt ISR
Serial Port Interrupt ISR
Timer 2 Interrupt ISR
Main Program
Functions
FUNCTION2:âĶâĶâĶâĶ...âĶâĶâĶâĶâĶ.âĶâĶâĶâĶâĶ.RET
ISR Extensions
ISR1: âĶâĶâĶâĶ.....âĶâĶâĶâĶâĶ.âĶâĶâĶâĶâĶ.RETI
āļ āļģāļŠāļąāļāđ Jump āļāļģāļāđāļāđāļ SJMP, AJMP āļŦāļĢāļ·āļLJMP āđāļĨāđāļ§āđāļāđāļāļ§āļģāļĄāļĒāļģāļ§āļāļāļāļāļģāļĢ Jump
![Page 3: Functions - Naresuan University](https://reader030.vdocuments.site/reader030/viewer/2022012505/617ffa361e075c02b4223b38/html5/thumbnails/3.jpg)
CPU
Timer/Counter 1Timer/Counter 0
T0 T1
Clock
/12
Serial Port(UART)
INT0External Interrupt 0
INT1External Interrupt 1
RXDTXD
3
![Page 4: Functions - Naresuan University](https://reader030.vdocuments.site/reader030/viewer/2022012505/617ffa361e075c02b4223b38/html5/thumbnails/4.jpg)
Internal Port (P0 â P3)āļŠāđāļ MOV P1, #4BHāļĢāļąāļ MOV P1, #0FFH
JNB P1.0, âĶ.. . . JB P1.0,âĶâĶ
āļāļ§āļąāļāļĒāļēāđāļ āļāļēāļĢ On/Off relay āļāđāļĩāļāļē P1.0MOV P1, #01H; TURNONMOV P1, #00H; TURNOFF
ORL P1 , #01H; TURNONANL P1, #0FEH; TURNOFF
External Port
PORTEX EQU 9001H
MOV DPTR,#PORTEX
MOV A, #08H
MOVX @DPTR, A ; āļŠāđāļāļāļāļMOVX A, @DPTR; āļĢāļąāļāđāļāļēāđ
āļāļ§āļąāļāļĒāļēāđāļ āļāļēāļĢ On/Off relay āļāđāļĩāļāļē PORTEX āļāļēāļāđāļĩ 0
MOV A, #01H
MOVX @DPTR, A ; TURN ON
MOV A,#0FEH
MOVX @DPTR, A; TURNOFF
4
x
x
x
x
x
x
x
1Relay
ON/OFF
Data Bus
Port
![Page 5: Functions - Naresuan University](https://reader030.vdocuments.site/reader030/viewer/2022012505/617ffa361e075c02b4223b38/html5/thumbnails/5.jpg)
Interrupt DMA Polling
POLL_0: JNB P1.0, POLL_1 ; Polling for Device 0CALL Service_0 ; if Bit 0 = â1â Call Service _0
POLL_1: JNB P1.1, POLL_2 ; Polling for Device 1CALL Service_1
POLL_2: JNB P1.2, POLL_3 ; Polling for Device 2CALL Service_2
POLL_3: JNB P1.3, POLL_0 ; Polling for Device 3CALL Service_3JMP POLL_0 ; Check all device again
Service_0: âĶ ; Service Program for Device 0
; Program/Device must clear status flagRET ; if it need to be served once
Service_1: âĶ ; Service Program for Device 1
; Program/Device must clear status flagRET ; if it need to be served onceâĶ.
5
B Requesting
Service ?
Service Routine for
Service B
YES
YES
NO
NO
A Requesting
Service ?
Service Routine for
Service A
NO
C Requesting
Service ?
Service Routine for
Service C
YES
![Page 6: Functions - Naresuan University](https://reader030.vdocuments.site/reader030/viewer/2022012505/617ffa361e075c02b4223b38/html5/thumbnails/6.jpg)
6
āļĢāļ°āļāļāļāļēāļĢ Interrupt āļāļāļ 8052 āđāļĨāļ° 83154
6
![Page 7: Functions - Naresuan University](https://reader030.vdocuments.site/reader030/viewer/2022012505/617ffa361e075c02b4223b38/html5/thumbnails/7.jpg)
7
IP (Interrupt Priority Register)
7
![Page 8: Functions - Naresuan University](https://reader030.vdocuments.site/reader030/viewer/2022012505/617ffa361e075c02b4223b38/html5/thumbnails/8.jpg)
8
IE (Interrupt Enable Register)
8
![Page 9: Functions - Naresuan University](https://reader030.vdocuments.site/reader030/viewer/2022012505/617ffa361e075c02b4223b38/html5/thumbnails/9.jpg)
TCON (Timer Control Register)IE1 : TCON.3 āđāļŠāļāļāļāļēāļĢāđāļāļīāļ interrupt āļĄāļĩāļāđāļēāđāļāđāļ 1 āđāļĄāđāļ·āļāļĄāļĩāļŠāļāļąāļāļēāļ
interrupt āđāļāļēāđāļĄāļē āļĄāļĩāļāđāļēāđāļāđāļ 0 āđāļĄāđāļ·āļāļĄāļĩāļāļēāļĢāļāļāļāļŠāļāļāļāļāļēāļĢ interrupt āđāļĨāļ§āđIT1 :TCON.2 āļāļēāđāļĄāļĩāļāđāļēāđāļāđāļ 1 āļāļ°āđāļāļīāļāļāļēāļĢ interrupt āđāļĄāđāļ·āļāļŠāļāļąāļāļēāļ
āđāļāļĨāđāļĩāļĒāļāļāļēāļ 1 āđāļāđāļ 0 āļāļēāđāļĄāļĩāļāđāļēāđāļāđāļ 0 āļāļ°āđāļāļīāļāļāļēāļĢ interrupt āđāļĄāđāļ·āļāļŠāļāļąāļāļēāļ āđāļāđāļ 0IE0 :TCON.1 āđāļŦāļĄāļ·āļāļāļāđāļĩāļāļāļīāļāļēāļĒāđāļāđāļĨāļ§āđ āļŠ āļēāļŦāļĢāļąāļIT0 :TCON.0 āđāļŦāļĄāļ·āļāļāļāđāļĩāļāļāļīāļāļēāļĒāđāļāđāļĨāļ§āđ āļŠ āļēāļŦāļĢāļąāļ
9
INT1
INT1
INT0
INT0
9
INT1
![Page 10: Functions - Naresuan University](https://reader030.vdocuments.site/reader030/viewer/2022012505/617ffa361e075c02b4223b38/html5/thumbnails/10.jpg)
EA --- ET2 ES ET1 EX1 ET0 EX0
01234567
External interrupts
Timer 0 āđāļĨāļ° Timer 1 Interrupts
Serial port Interrupt
SM0 SM1 SM2 REN TB8 RB8 TI RI
01234567
EA --- ET2 ES ET1 EX1 ET0 EX0
01234567EA = 1;EX0 = 1;EX1 = 1;IT0/IT1 = 1 External interrupt caused by a falling edge signal on P3.2/P3.3IT0/IT1 = 0 External interrupt caused by a low level signal on P3.2/P3.3
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
01234567
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
01234567EA --- ET2 ES ET1 EX1 ET0 EX0
01234567EA = 1;ET0 = 1;ET1 = 1;TF0/TF1 = 1 āđāļŠāļāļāļ§āļēāđāđāļāļīāļāļāļēāļĢ interrupt
EA = 1;ES = 1;āđāļĄāđāļ·āļ TI/RI = 1 āļāļ°āđāļāļīāļāļāļēāļĢ interrupt
IE
IE
IE
TCON
TCON
SCON
10
![Page 11: Functions - Naresuan University](https://reader030.vdocuments.site/reader030/viewer/2022012505/617ffa361e075c02b4223b38/html5/thumbnails/11.jpg)
Source Vector address
RST 0000H
IE0 0003H
TF0 000BH
IE1 0013H
TF1 001BH
RI + TI 0023H
TF2 + EXF2 002BH
Interrupt Service Routine
āđāļāļĢāđāļāļĢāļĄāļāđāļĩāļāļ°āļ āļģāļāļģāļāđāļĄāđāļ·āļāđāļāļīāļ Interrupt
āļāļ§āļąāļāļĒāđāļģāļāļĢāļāļđāđāļāļ ISR āļāļāļ IE0
ORG 0003H
.
.
.
.
.
.
.
RETI
āļŦāļĄāļģāļĒāđāļŦāļāļļ āļĄāļĩāđāļĄāđāđāļāļīāļ 8 āļ āļģāļŠāļąāļāđ
11
![Page 12: Functions - Naresuan University](https://reader030.vdocuments.site/reader030/viewer/2022012505/617ffa361e075c02b4223b38/html5/thumbnails/12.jpg)
12
āđāļĄāļ·āļāđāļĄāļāļĩāļēāļĢāđāļāđ Interrupt āļĢāļāļđāđāļāļāđāļāļāļēāļĢāđāļāļĒāļĩāļāđāļāļĢāđāļāļĢāļĄāļāļ§āļĢāļāļ°āđāļāđāļORG 000H ;Reset entry point
AJMP MAIN
âĶâĶâĶâĶâĶ. ;ISR entry point
âĶâĶâĶâĶâĶ.
ORG 0030H ;Main program entry point
MAIN: âĶâĶâĶâĶâĶ. ;Main program begin
āļāļ§āļąāļāļĒāļēāđāļāļāļēāļĢāđāļāļĒāļĩāļāđāļāļĢāđāļāļĢāļĄāđāļĄāļ·āļāđāđāļāđ Interrupt āļāļēāļ Timer0
ORG 0000H ;Reset
AJMP MAIN
ORG 000BH ;Timer0 interrupt entry point
T0ISR : âĶâĶâĶâĶâĶâĶâĶ ;Timer0 ISR begin
âĶâĶâĶâĶâĶâĶâĶ
RETI ;Return to Main program
ORG 0030H
MAIN : âĶâĶâĶâĶâĶâĶâĶ ;Main program
![Page 13: Functions - Naresuan University](https://reader030.vdocuments.site/reader030/viewer/2022012505/617ffa361e075c02b4223b38/html5/thumbnails/13.jpg)
Polling InterruptMultiple Devices Connected to a Single Interrupt Line
MPUINT 1
I/O Interface 1
I/O Interface 2
I/O Interface 3
P1.0 P1.1 P1.2
āļāļ§āļąāļāļĒāļēāđāļ ISR āļāļķāļāđāļ āļēāļŦāļāđāļēāļāļĩāđāđāļāļāļēāļĢ Polling Device status āļāļĩāđāđāļāđāļ â0â āđāļĨāļ§āđāđāļĨāļāļ·āļ ISR āļāļĩāđāđāļŦāļĄāļēāļ°āļŠāļĄāļāđāļāđāļ
POLL_INT: PUSH PSW ; Save old status âĶ
JNB P1.0, ISR_0 ; Polling for Device 0
JNB P1.1, ISR_1 ; Polling for Device 1
JNB P1.2, ISR_2 ; Polling for Device 2
RETI ; If no device responses
ISR_0: âĶ ; Service Program for Device 0
âĶ ;
POP PSW ; Restore old status
RETI ;
ISR_1: âĶ ; Service Program for Device 0
âĶ ;
POP PSW ; Restore old status
RETI ;
ISR_2: âĶ ; Service Program for Device 0
âĶ ;
POP PSW ; Restore old status
RETI ;
13
![Page 14: Functions - Naresuan University](https://reader030.vdocuments.site/reader030/viewer/2022012505/617ffa361e075c02b4223b38/html5/thumbnails/14.jpg)
Sensing Input
āļāļēāđāđāļāđāļ â1â āđāļĄāļ·āļāđāļĄāļŠāļĩāļāļąāļāļēāļāđāļāļēāđāļĄāļē
POLL: JNB P1.0,POLL
āļāļēāđāđāļāđāļ â0â āđāļĄāļ·āļāđāļĄāļŠāļĩāļāļąāļāļēāļāđāļāļēāđāļĄāļē
POLL: JB P1.0, POLL
14
Monitoring duration
MOV R7, #0 ; Clear counterStart: JNB P1.0, Start; Read Input and
;Testing Bit 0 for â1âCount: INC R7 ; Increment counter
NOPNOPJB P1.0, Count ; Reading Input
;and Testing Bit 0 for â0â
![Page 15: Functions - Naresuan University](https://reader030.vdocuments.site/reader030/viewer/2022012505/617ffa361e075c02b4223b38/html5/thumbnails/15.jpg)
15
Software DelayBasic DelayDELAY: MOV R7, #5 ; 1 M.CycleNEXT: DEC R7 ; 1 M.Cycle
CJNE R7, #0, NEXT ; 2 M.Cycles
Delay = (1 + (1+2) * 5) = 16 M.Cycles
Longer DelayDELAY: MOV R7, #5 ; 1 M.CycleLOOP1: MOV R6, #10 ; 1 M.CycleLOOP2: DEC R6 ; 1 M.Cycle
CJNE R6, #0, LOOP2 ; 2 M.CyclesDEC R7 ; 1 M.CycleCJNE R7, #0, LOOP1 ; 2 M.Cycles
Delay = 1+(1+(1+2)*10+1+2)*5 = 171 M.Cycles
Hardware Delay
![Page 16: Functions - Naresuan University](https://reader030.vdocuments.site/reader030/viewer/2022012505/617ffa361e075c02b4223b38/html5/thumbnails/16.jpg)
āđāļ 8051 āļāļ°āļĄāļĩ Timer/Counter āļāļĒāļđ āđ2 āļāļļāļ āļāļ·āļ Timer 0 āđāļĨāļ°Timer 1 āļāđāļķāļāļāļāļāļāļēāļāļāļ°āđāļāđāļTimers āđāļĨāļ§āđāļŠāļēāļĄāļēāļĢāļāđāļāđāđāļāđāļ Counters āđāļāļāļĩāđāļāļāļ§āđāļĒ āđāļāļĒāļāļēāļĢāđāļāļĢāđāļāļĢāļĄāđāļāļĢāļĩāļāļīāļŠāđāļāļāļĢāđ TMOD
TCON (Timer Control Register)
16
āļāļīāļ āļāđāļ·āļ āļ āļģāđāļŦāļāđāļāļāļīāļ āļāļ§āļģāļĄāļŦāļĄāļģāļĒ
TCON.7 TF1 8FHāļāļīāļāđāļāļĨāļāđāļŠāļāļāļāļģāļĢāđāļāđāļ§āļāļĢāđāđāļāļĨāļ§āđāļāļāļ Timer 1 āļāļ° Set āđāļāļĒ Hardware āđāļĨāļ° Clear āđāļāļĒ Software
TCON.6 TR1 8EH āļāļīāļāļāļ§āļāļāļļāļĄāļāļģāļĢāļāļīāļ-āđāļāļīāļ Timer 1 Set āđāļĨāļ° Clear āđāļāļĒ SoftwareTCON.5 TF0 8DH āđāļāļĨāļāđāļŠāļāļāļāļģāļĢāđāļāđāļ§āļāļĢāđāđāļāļĨāļ§āđāļāļāļ Timer 0TCON.4 TR0 8CH āļāļīāļāļāļ§āļāļāļļāļĄāļāļģāļĢāļāļīāļ-āđāļāļīāļ Timer 0
TCON.3 IE1 8BHāļāļīāļāđāļāļĨāļāđāļŠāļāļāļāļģāļĢāļāļāļīāđāļāļāļĢāđāļĢāļąāļāļāđāļāļģāļ INT1 āļāļ° Set āđāļāļĒ Hardware āđāļĨāļ°āļŠāļģāļĄāļģāļĢāļ Clear āđāļāđāļāđāļ§āļĒ Software
TCON.2 IT1 8AHāļāļīāļāđāļĨāļ·āļāļāļāļāļīāļāļāļāļāļŠāļąāļāļāļģāļāļāļāļīāđāļāļāļĢāđāļĢāļąāļāļāđāļāļģāļāļāļāļīāđāļāļāļĢāđāļĢāļąāļāļāđāļ āļģāļĒāļāļāļ INT1 āļŠāļģāļĄāļģāļĢāļ Set āđāļĨāļ° Clear āđāļāđāļāđāļ§āļĒ Software
TCON.1 IE0 89H āļāļīāļāđāļāļĨāļāđāļŠāļāļāļāļģāļĢāļāļāļīāđāļāļāļĢāđāļĢāļąāļāļāđāļāļģāļ INT0
TCON.0 IT0 88HāļāļīāļāđāļĨāļ·āļāļāļāļāļīāļāļāļāļāļŠāļąāļāļāļģāļāļāļāļīāđāļāļāļĢāđāļĢāļąāļāļāđāļāļģāļāļāļāļīāđāļāļāļĢāđāļĢāļąāļāļāđāļ āļģāļĒāļāļāļ INT0
![Page 17: Functions - Naresuan University](https://reader030.vdocuments.site/reader030/viewer/2022012505/617ffa361e075c02b4223b38/html5/thumbnails/17.jpg)
TMOD (Timer Mode Control)
17
āļāļīāļ āļāđāļ·āļ Timer āļāļ§āļēāļĄāļŦāļĄāļēāļĒ
7 GATE 1 āļāļīāļ Gate āļāļāļ Timer 1
6 C/T 1 āļāļīāļāđāļĨāļ·āļāļ Counter/Timer āļāļāļ Timer 1
5 M1 1 Timer 1 Mode bit 1
4 M0 1 Timer 1 Mode bit 0
3 GATE 0 āļāļīāļ Gate āļāļāļ Timer 0
2 C/T 0 āļāļīāļāđāļĨāļ·āļāļ Counter/Timer āļāļāļ Timer 0
1 M1 0 Timer 0 Mode bit 1
0 M0 0 Timer 0 Mode bit 0
![Page 18: Functions - Naresuan University](https://reader030.vdocuments.site/reader030/viewer/2022012505/617ffa361e075c02b4223b38/html5/thumbnails/18.jpg)
M1 M0 āļāļģāļĢāļ āļģāļāļģāļ
0 0 Mode 0 Register THx āđāļĨāļ° TLx āļāļ°āļ āļēāļāļēāļāđāļāđāļāļāļ§āļąāļāļāļą 13 Bit āļāđāļēāļāļēāļāļāļēāļĢāļāļāļą 8 Bit āļāļāļĄāļēāļāļēāļ THx āđāļĨāļ°āļāļĩāļ 5 Bit āļĨāđāļēāļāļĄāļēāļāļēāļāļāđāļē 5 Bit āļĨāđāļēāļāļāļāļ TLx
0 1 Mode 1 Register THx āđāļĨāļ° TLx āļ āļēāļāļēāļāđāļāđāļāļāļ§āļąāļāļāļą 16 Bit āļāđāļēāļāļēāļāļāļēāļĢāļāļāļą 8 Bit āļāļāļāļĒāļđāđāđāļ THxāđāļĨāļ°āļāđāļēāļāļēāļāļāļēāļĢāļāļāļą 8 Bit āļĨāđāļēāļāļāļĒāļđāđāđāļ TLx
1 0 Mode 2 āđāļāļāļēāļĢāļāļāļąāļāļāļ TLx āļāļāļēāļ 8 Bit āđāļĄāđāļ·āļāļāļāļąāļāļķāļāļāđāļēāļŠāļđāļāļŠāļļāļāļāļ·āļ FFH āđāļĨāļ§āđāđāļĄāđāļ·āļāļĄāļĩāļāļēāļĢāļāļāļąāļāđāļāļāļ°āđāļāļīāļ Overflow āđāļĨāļ§āđāļāļ° Reload āđāļāļēāļāļāđāļĄāļđāļĨāļāļēāļ THx āđāļāļēāđāđāļāļĒāļāļą TLx āđāļāļ·āđāļāđāļāđāļāļāđāļēāđāļĢāđāļīāļĄāļāļāđāđāļāļāļēāļĢāļāļāļąāļāļĢāđāļąāļāļāđāļāđāļ
1 1 Mode 3 āļāļēāļĢāļ āļēāļāļēāļāļāļāļ Timer 0 āđāļĨāļ° Timer 1 āļāļ°āļāđāļēāļāļāļāļąTimer 0 TL0 āļāļ°āļ āļēāļāļēāļāđāļāđāļ 8 Bit Timer/Counter āļāđāļķāļāđāļāļāđāļēāļāđāļŦāļĄāļ·āļāļāļāļāļą Mode 0 āđāļĨāļ° TH0 āļāļ°āļ āļēāļāļēāļāđāļāđāļ Timer āļāđāļķāļāļāļ§āļāļāļļāļĄāļāļēāļĢāļ āļēāļāļēāļāđāļāļāđāļēāļ Control bit āļāļāļTimer 1Timer 1 āļŦāļĒāļāļļāļ āļēāļāļēāļ
18
![Page 19: Functions - Naresuan University](https://reader030.vdocuments.site/reader030/viewer/2022012505/617ffa361e075c02b4223b38/html5/thumbnails/19.jpg)
Timer Mode and Overflow Flag Mode 0 (13-bit Timer Mode)
Mode 1 (16-bit Timer Mode) āđāļŦāļĄāļ·āļāļMode 0 āđāļāđāđāļāđāļ 16 bits
19
Mode 2 (8-bit AutoâReload Mode) āđāļĄāđāļ·āļ TLx āđāļāļīāļ Overflow āļŦāļĢāļ·āļāđāļāļīāļāđāļāļĨāđāļĩāļĒāļāđāļāļĨāļāļāļēāļ FFHāđāļāđāļ 00H āļāļ°āļĄāļĩāļāļēāļĢāđāļŦāļĨāļāļāđāļēāļāđāļĩāđāļāļāđāđāļ§āđāđāļTHx āđāļāđāļāļāđāđāļ§āđāđāļTLx āļāđāļķāļāļāļ°āđāļāđāļāļāđāļēāđāļĢāđāļīāļĄāļāļāđāļāļāļāļāļēāļĢāļāļāļąāļāļĢāđāļąāļāļāđāļāđāļ
![Page 20: Functions - Naresuan University](https://reader030.vdocuments.site/reader030/viewer/2022012505/617ffa361e075c02b4223b38/html5/thumbnails/20.jpg)
20
Mode 3 (Split Timer Mode)Timer 0 āļāļ°āđāļĒāļāđāļāđāļ 2 āļāļ§āļąāļāļ§āļąāļĨāļ° 8 āļāļīāļ āļāļ·āļ TL0 āđāļĨāļ° TH0 āđāļĄāđāļ·āļ Timer āđāļāļīāļ Overflowāļāļ°āļĄāļĩāļāļēāļĢāđāļāļāļāļīāļ TF0 āđāļĨāļ° TF1 āđāļāđāļŦāļĄāļāļāđāļĩ Timer 1 āļāļ°āđāļĄāđāļāļđāļāđāļāļāđāļēāļāđāļāđāđāļĢāļēāļŠāļēāļĄāļēāļĢāļāļŠāļ§āļāļīāļāđāđāļŦ āđTimer 1 āđāļāļ āļēāļāļēāļāđāļāđāļŦāļĄāļāļāđāļ·āļāđāļ āđāđāļāđāļāļēāļĢāļ āļēāļāļēāļāļāļāļ Timer 1 āļāļ°āđāļĄāđāļĄāļĩāļāļēāļĢāļāļīāļāđāļāļāļĢāđāļĢāļąāļāļāđāđāļāļīāļāļāđāļķāļ
![Page 21: Functions - Naresuan University](https://reader030.vdocuments.site/reader030/viewer/2022012505/617ffa361e075c02b4223b38/html5/thumbnails/21.jpg)
āļāļģāļĢāđāļāđāđāļāđāļāļāļ§āļąāļāļąāļ (Counter)āļāļēāđāļāļīāļ C/T āđāļāđāļ â1â āļāļ§āļą Timer āļāļ°āļ āļē Clock āļĄāļēāļāļēāļāļ āļēāļĒāļāļāļāđāļāļĒāđāļāļāđāļē P3.4 āļŦāļĢāļ·āļ T0
āđāļāđāļāļāļē Input Clock āđāļŦāļāđāļāļą Timer 0 āđāļĨāļ°āđāļāļāđāļē P3.5 āļŦāļĢāļ·āļ T1 āđāļāđāļ Input Clock āđāļŦāļāđāļāļą Timer 1 āļāļēāļĢāļāļāļą 1 āļāļĢāđāļąāļāļāļ°āļāļāđāļāđāļāđāđāļ§āļĨāļē 2 Machine Cycles āļāļāļąāļāļąāđāļāļāļ§āļēāļĄāļāđāļĩāļŠāļđāļāļŠāļļāļāļāđāļĩāļāļ°āđāļŦ āđTimer āļ āļēāļāļēāļāđāļāđāļ Counter āļāļāļąāđāļ āđāļāļ°āļĄāļĩāļāđāļēāļĄāļēāļāļāđāļĩāļŠāļļāļ 500kHz āļāļēāđ MCS-51 āļ āļēāļāļēāļāļāđāļĩāļāļ§āļēāļĄāļāđāļĩāļŠāļāļąāļāļēāļāļāļēāļŽāļīāļāļē 12 MHz
21
![Page 22: Functions - Naresuan University](https://reader030.vdocuments.site/reader030/viewer/2022012505/617ffa361e075c02b4223b38/html5/thumbnails/22.jpg)
Example 1 āļāļģāļĢāđāļĢāđāļīāļĄ, āļŦāļĒāļļāļāđāļĨāļ°āļāļģāļĢāļāļ§āļāļāļļāļĄ Timers
MOV TMOD,#00010000B ; Choose Timer 1, Mode 1(16 bits timer)MOV TL1,#9CH ; Initialize the timer with FF9CH (FFFFH-100D)MOV TH1,#0FFH ; so the timer will overflow after 100 clock cyclesSETB TR1 ; Start Timer 1
WAIT: JNB TF1, WAIT ; Wait until Timer 1 overflowsCLR TR1 ; Stop Timer 1CLR TF1 ; Clear Timer overflow flag 1
22
![Page 23: Functions - Naresuan University](https://reader030.vdocuments.site/reader030/viewer/2022012505/617ffa361e075c02b4223b38/html5/thumbnails/23.jpg)
Example 2.2 āļŠāļĢāđāļēāļ pulse āđāļāļĒāđāļāđ Hardware Delay
ORG 0000HJMP Start ; Space for ISRORG 001BH ; ISR for Timer 1 interruptCLR P1.0 ; Turn OFF outputCLR TR1 ; Stop Timer 1RETI
Start:MOV TMOD, #0001 0000BMOV IE, #1000 1000B; Enable interrupt for Timer 1MOV TH1, #0FDH; Set the delay time for 600 M.CyclesMOV TL1, #0A8HSETB P1.0 ; Turn ON outputSETB TR1 ; Start Timer 1
âĶ ; Other OperationsâĶ
23
Example 2.1 āļŠāļĢāđāļēāļ pulse āđāļāļĒāđāļāđ Software Delay
SETB P1.0 ; Turn ON outputCALL DELAY ; Wait M.CyclesCLR P1.0 ; Turn OFF output
âĶ ; Other operationsâĶ
DELAY: MOV R7, #200 ; 1 M.CycleLOOP: DEC R7 ; 1 M.Cycle
CJNE R7, #0, LOOP ; 2 M.CyclesRET ; 2 M.Cycles
![Page 24: Functions - Naresuan University](https://reader030.vdocuments.site/reader030/viewer/2022012505/617ffa361e075c02b4223b38/html5/thumbnails/24.jpg)
Example 3 āļŠāļĢāđāļģāļāļŠāļąāļāļāļģāļ square wave 10kHz āđāļāļĒāđāļŦāđ High 50us āđāļĨāļ° Low 50 us, Clock 12 MHz
āđāļ āđTimer mode 2 āđāļāļĒāđāļŦ āđoverflow āļāļļāļ 50 us
MOV TMOD,#02HMOV TH0,#0CDH ; FFH-50D=CDHSET TR0
LOOP: JNB TF0, LOOPCLR TF0CPL P1.0SJMP LOOP
24
![Page 25: Functions - Naresuan University](https://reader030.vdocuments.site/reader030/viewer/2022012505/617ffa361e075c02b4223b38/html5/thumbnails/25.jpg)
Example 4 āļŠāļĢāđāļģāļāļŠāļąāļāļāļģāļ square wave 1kHz āđāļāļĒāđāļŦāđ High 500us āđāļĨāļ° Low 500 us, Clock 12 MHz
āļāđāļ§āļāđāļ§āļĨāļēāļĄāļēāļāļāļ§āļēāđ 256 (FFH) āđāļ āđTimer mode 1 (16 bits) āđāļāļĒāđāļŦ āđoverflow āļāļļāļ 500 us
MOV TMOD,#01HLOOP: MOV TH0,#0FEH
MOV TL0,#0CH ; FFFFH-500D=FE0CHSET TR0
WAIT: JNB TF0, WAITCLR TR0CLR TF0CPL P1.0SJMP LOOP
25
![Page 26: Functions - Naresuan University](https://reader030.vdocuments.site/reader030/viewer/2022012505/617ffa361e075c02b4223b38/html5/thumbnails/26.jpg)
Example 5 Delay 50 ms, Clock 12 MHz
āđāļ āđTimer mode 1 āđāļāļĒāđāļŦ āđoverflow āļāļļāļ 50 ms
DELAY: MOV TMOD,#01HMOV TH0,#3CHMOV TL0,#0AFH ; FFFFH-50000D=FE0CH SET TR0
LOOP: JNB TF0, LOOPCLR TF0CPL P1.0RET
26
![Page 27: Functions - Naresuan University](https://reader030.vdocuments.site/reader030/viewer/2022012505/617ffa361e075c02b4223b38/html5/thumbnails/27.jpg)
āļāļ§āļąāļāļĒāđāļģāļ Intrusion warning systemāļāļāļāđāļāļāļĢāļ°āļāļāļāļāļąāļāļđāļāļļāđāļāļĢāļļāļāļāđāļķāļāļāļ°āļŠāđāļāđāļŠāļĩāļĒāļāļāļ§āļēāļĄāļāđāļĩ 4000 Hz āđāļāļ·āļāļāđāļāđāļāđāļ§āļĨāļē 1 āļ§āļāļīāļēāļāļĩ (āđāļāļĨāđ āļēāđāļāļāļāđāļāļāļāļą P1.7) āđāļĄāđāļ·āļāļĄāļĩāļŠāļāļąāļāļēāļāļāļēāļ sensor āļāđāļĩāļāļĢāļ°āļāļđāļ āļēāđāļŦ āđINT0 āđāļāđāļ
High-to-low transition āđāļāļāļ§āļąāļāļĒāļēāđāļāļāđāļĩāļ āļēāđāļāđāļāļāļāđāļāđāļ āđ3 interrupts āđāļāđāđāļāđ external 0 (door sensor), Timer 0 (400 Hz tone), āđāļĨāļ°Timer 1 (1 second timeout)
Address Machine code Line Assembly code0000 5 ORG 0000H0000 020030 6 LJMP MAIN ;3-byte
;instruction0003 02003A 7 LJMP EX0ISR ;EXT 0
;vector address000B 8 ORG 000BH ;Timer 0
;vector000B 020045 9 LJMP T0ISR001B 10 ORG 001BH ;Timer 1
;vector001B 020059 11 LJMP T1ISR0030 12 ORG 0030H0030 D288 13 MAIN: SETB IT0 ;negative edge
;activated
Address Machine code Line Assembly code0032 758911 14 MOV TMOD, #11H ;16-bit
;timer mode0035 75A881 15 MOV IE, #81H ;enable EXT 00038 80FE 16 SJMP $
17003A 7F14 18 EXOISR: MOV R7, #20
;20 x 5000 us = 1 s.003C 0280 19 SETB TF0 ;force timer 0 INT003E 028F 20 SETB TF1 ;force timer 1 INT0040 02A9 21 SETB ET0 ;begin tone for 1 s.0042 02AB 22 SETB ET1 ;enable timer INT
27
![Page 28: Functions - Naresuan University](https://reader030.vdocuments.site/reader030/viewer/2022012505/617ffa361e075c02b4223b38/html5/thumbnails/28.jpg)
28
āļāļąāļ§āļāļĒāđāļģāļ Intrusion warning system (āļāđāļ)
Address Machine code Line Assembly code0044 32 23 RETI
240045 C28C 25 TOISR: CLR TR0 ;stop timer0047 OF07 26 DJNZ R7, SKIP ;if not
;20th time, exit0049 C2A9 27 CLR ET0 ; if 20th,
;disable tone004E C2AB 28 CLR ET1 ;disable itself0040 020058 29 LJMP EXIT0050 758C3C 30 SKIP: MOV TH0, #HIGH(-
50000) ;0.05 sec. delay
Address Machine code Line Assembly code0053 758ABO 31 MOV TL0, #LOW(-50000)0056 028C 32 SETB TR00058 32 33 EXIT: RETI
340059 C28E 35 T1ISR: CLR TR1005E 7580FB 36 MOV TH1, #HIGH(-1250)
;count for 400 Hz005E 758BIE 37 MOV TL1, #LOW(-1250)0061 B297 38 CPL P1. 7 ;play sound0063 028E 39 SETB TR10065 32 40 RETI
41 END
![Page 29: Functions - Naresuan University](https://reader030.vdocuments.site/reader030/viewer/2022012505/617ffa361e075c02b4223b38/html5/thumbnails/29.jpg)
āļāļ§āļąāļāļĒāđāļģāļ āļĢāļ°āļāļāđāļĨāļ°āđāļāļĢāđāļāļĢāļĄāđāļāđāļ·āļāļāļ§āļāļāļļāļĄāļĄāļāđāļāļāļĢāđāđāļŦāļŦāđāļĒāļāļļāļ āļēāļāļēāļāđāļĄāđāļ·āļāļĄāļĩāļāļ§āļąāļĄāļāđāļāļāļĢāđāļāļ§āļēāļĄāļĢāđāļāļāļŠāļđāļāđāļāļīāļāđāļāļŦāļĢāļ·āļāļŦāļĄāļļāļāđāļĢāđāļ§āđāļāļīāļāļāļ§āļēāđ 10,000 r.p.m. āđāļāđāļāđāļāļāļĢāđāļ§āļāļąāļāļļāļāļŦāļ āļđāļĄāļīāļāđāļķāļāļāđāļāļāļĒāļđāđāļāļāļą P3.2 (External interrupt 0) āļāļ°āđāļŦ āđlogic 0 āđāļĄāđāļ·āļāļāļļāļāļŦāļ āļđāļĄāļīāļŠāļđāļāđāļāļīāļāđāļ āđāļĨāļ° optical encoder āļāđāļķāļāļāđāļāļāļĒāļđāļāđāļāļą P3.5 (Timer/Counter 1) āļāļ°āļŠāđāļāļŠāļāļąāļāļēāļāļāļļāļāļāļĢāđāļąāļāļāđāļĩāļĄāļāđāļāļāļĢāđāļŦāļĄāļļāļ 1 āļĢāļāļ āļ§āļāļĩāļīāļŦāļĒāļāļļāļāļēāļĢāļ āļēāļāļēāļāļāļāļāļĢāļ°āļāļāļ āļēāđāļāđāđāļāļĒāđāļŦāļŠāđāļāļąāļāļēāļāļāđāļĩ P1.0 āđāļāđāļ 1 āđāļāļĒāļāđāļĩāļĢāļ°āļāļāļāđāļĩāđāļ āđ24 MHz crystal oscillator āđāļāļāļ§āļąāļāļĒāļēāđāļāļāđāļĩāļ āļēāđāļāđāļāļāļāđāļāđāļ āđ2 interrupts āđāļāđāđāļāđ external 0 (temperature sensor), Timer/Counter 0 ( Motor speed) 1 M.cycle = 12/(24*10^6) = 0.5 us āļŦāļĢāļ·āļ 1 s = 2*10^6 M.cycles10,000 r.p.m.= 10 r/120,000 M.cyclesāđāļŠāđāļāđāļēāđāļĢāđāļīāļĄāļāļāđāđāļŦ āđTimer 0 āļāļāļą 120 āļŦāļĢāļ·āļ 256-120 = 136 = 88H1000 āļāļĢāđāļąāļ
29
Counter EQU 00FFHORG 0000HLJMP MAIN ORG 000BH ; EXT 0 vector LJMP EX0ISR ORG 000BH ;Timer 0 vectorLJMP T0ISR
MAIN: SETB IT0 ;negative edge activatedMOV TMOD, #52H ; timer 0 mode 2, counter 1 mode 1MOV IE, #83H ;enable EXT 0, ET0MOV TH0, #88HSETB TR0SETB TR1CLR P1.0 ; Start motorSJMP $
EXOISR: SETB P1.0; Stop MotorRETI
T0ISR: MOV A, CounterINC A ;Increase counterCJNE A,#1000, EXIT
; overflow 10 times=120,000 M.cyclesMOV Counter, A MOV R0,TL1CJNE R0, #10, EXITCLR P1.0 ; Stop motorCLR TL1
EXIT: RETIEND
āļŦāļĄāļēāļĒāđāļŦāļāļļ āđāļāļĢāđāļāļĢāļĄāļāļĩāļĄāđāļĩāļāļĩāđāļāļīāļāļāļĒāļđ āđ2 āđāļŦāļāđ āđāļĨāļ°āļāļĩāļāļŦāļāļķāļāđāļāļāļļāļāļĩāđāļāļēāļāļ āļēāđāļŦāđāļ āļēāļāļēāļāđāļĄāđāđāļāđ