functions - naresuan university

29
1

Upload: others

Post on 01-Nov-2021

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Functions - Naresuan University

1

Page 2: Functions - Naresuan University

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

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

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

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

6

āļĢāļ°āļšāļšāļāļēāļĢ Interrupt āļ‚āļ­āļ‡ 8052 āđāļĨāļ° 83154

6

Page 7: Functions - Naresuan University

7

IP (Interrupt Priority Register)

7

Page 8: Functions - Naresuan University

8

IE (Interrupt Enable Register)

8

Page 9: Functions - Naresuan University

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

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

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

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

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

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

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

āđƒāļ™ 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

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

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

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

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

āļāļģāļĢāđƒāļŠāđ‰āđ€āļ›āđ‡āļ™āļ•āļ§āļąāļ™āļąāļš (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

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

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

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

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

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

āļ•āļ§āļąāļ­āļĒāđˆāļģāļ‡ 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

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

āļ•āļ§āļąāļ­āļĒāđˆāļģāļ‡ āļĢāļ°āļšāļšāđāļĨāļ°āđ‚āļ›āļĢāđāļāļĢāļĄāđ€āļžāđˆāļ·āļ­āļ„āļ§āļšāļ„āļļāļĄāļĄāļ­āđ€āļ•āļ­āļĢāđŒāđƒāļŦāļŦāđ‰āļĒāļ”āļļāļ— āļēāļ‡āļēāļ™āđ€āļĄāđˆāļ·āļ­āļĄāļĩāļ•āļ§āļąāļĄāļ­āđ€āļ•āļ­āļĢāđŒāļ„āļ§āļēāļĄāļĢāđ‰āļ­āļ™āļŠāļđāļ‡āđ€āļāļīāļ™āđ„āļ›āļŦāļĢāļ·āļ­āļŦāļĄāļļāļ™āđ€āļĢāđ‡āļ§āđ€āļāļīāļ™āļāļ§āļēāđˆ 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 āđāļŦāļ‡āđˆ āđāļĨāļ°āļ­āļĩāļāļŦāļ™āļķāļ‡āđˆāļˆāļ”āļļāļ—āļĩāđˆāļ­āļēāļˆāļ— āļēāđƒāļŦāđ‰āļ— āļēāļ‡āļēāļ™āđ„āļĄāđ„āđˆāļ”āđ‰