+ All Categories
Home > Documents > Functions - Naresuan University

Functions - Naresuan University

Date post: 01-Nov-2021
Category:
Upload: others
View: 2 times
Download: 0 times
Share this document with a friend
29
1
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 แหง่ และอีกหนึง่จดุที่อาจท าให้ท างานไมไ่ด้


Recommended