13
ปฏิบัติการ วิชา ไมโครโปรเซสเซอร์ รายวิชา 303361 ภาควิชาไฟฟ้าและคอมพิวเตอร์ คณะวิศวกรรมศาสตร์ มหาวิทยาลัยนเรศวร ดร. พรพิศุทธิ์ วรจิรันตน1 การทดลองที5 เรื่อง การใช้งาน Timer/Counter ว ัตถุประสงค์ 1. เพื่อให ้นิสิตเข ้าใจภาษา Assembly เบื้องต ้น 2. เพื่อให ้นิสิตเข ้าใจการทางานตัวจับเวลา และ ตัวนับ (Timer/Counter) ของไมโครคอนโทรลเลอร์ อุปกรณ์ในการทดลอง 1. บอร์ดทดลองไมโครคอนโทรลเลอร์ 2. เครื่องคอมพิวเตอร์ PC พร ้อมโปรแกรมสาหรับการเขียนและคอมไพล์ภาษา Assembly SXA51 3. สายต่อพอร์ตอนุกรม 4. บอร์ด 7-segment Display 5. สวิทช์ 1 ตัว 6. บอร์ดแสดงผลด้วย LED 7. อุปกรณ์กาเนิดสัญญาณ TTL ปรับความถี่ได ้ ทฤษฎี Timer จะมีการนับเพิ่มขึ้นทุก 1 Machine cycle โดยทั่วไป ไมโครคอนโทรลเลอร์ตระกูล MCS-51 จะใช ้เวลา 1 Machine cycle=12/f.oscillator TMOD Register GATE Bit เป็ น Bit ที่ใช ้ควบคุมให ้ Timer ทางานหรือไม่ ถ ้า Bit นี้ของ Timer x ถูกตั้งเป็ น 1 (Hardware controlled) จะทาให ้ Timer ทางานก็ต่อเมื่อสัญญาณที่ขา INTx เป็ น 1 และ Bit TRx ใน Register TCON เป็ น 1 ด ้วย 0 (Software controlled) จะทาให ้ Timer ทางานเมื่อ Bit TRx ใน Register TCON เป็ น 1

ปฏิบัติการ วิชา 303361 · 2018. 10. 8. · ;filename: lab5_1.asm ;description: timer0 mode 1 ;date: 26/12/2553 ;note: led display at p1 ;-----main-----

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ปฏิบัติการ วิชา 303361 · 2018. 10. 8. · ;filename: lab5_1.asm ;description: timer0 mode 1 ;date: 26/12/2553 ;note: led display at p1 ;-----main-----

ปฏบิตักิาร วชิา ไมโครโปรเซสเซอร ์รายวชิา 303361

ภาควชิาไฟฟ้าและคอมพวิเตอร ์คณะวศิวกรรมศาสตร ์มหาวทิยาลยันเรศวร

ดร. พรพศิทุธิ ์วรจรัินตน์ 1

การทดลองที ่5

เรือ่ง การใชง้าน Timer/Counter

วตัถปุระสงค ์

1. เพือ่ใหน้สิติเขา้ใจภาษา Assembly เบือ้งตน้

2. เพือ่ใหน้สิติเขา้ใจการท างานตัวจับเวลา และ ตวันับ (Timer/Counter) ของไมโครคอนโทรลเลอร ์

อปุกรณ์ในการทดลอง

1. บอรด์ทดลองไมโครคอนโทรลเลอร ์

2. เครือ่งคอมพวิเตอร ์PC พรอ้มโปรแกรมส าหรับการเขยีนและคอมไพลภ์าษา Assembly SXA51

3. สายตอ่พอรต์อนุกรม

4. บอรด์ 7-segment Display

5. สวทิช ์1 ตัว

6. บอรด์แสดงผลดว้ย LED

7. อปุกรณ์ก าเนดิสญัญาณ TTL ปรับความถีไ่ด ้

ทฤษฎ ี

Timer จะมกีารนับเพิม่ขึน้ทกุ 1 Machine cycle โดยทั่วไป ไมโครคอนโทรลเลอรต์ระกลู MCS-51 จะใชเ้วลา 1

Machine cycle=12/f.oscillator

TMOD Register

GATE Bit

เป็น Bit ทีใ่ชค้วบคมุให ้Timer ท างานหรอืไม ่ถา้ Bit นีข้อง Timer x ถกูตัง้เป็น

1 (Hardware controlled) จะท าให ้Timer ท างานก็ตอ่เมือ่สญัญาณทีข่า INTx เป็น 1 และ Bit TRx ใน

Register TCON เป็น 1 ดว้ย

0 (Software controlled) จะท าให ้Timer ท างานเมือ่ Bit TRx ใน Register TCON เป็น 1

Page 2: ปฏิบัติการ วิชา 303361 · 2018. 10. 8. · ;filename: lab5_1.asm ;description: timer0 mode 1 ;date: 26/12/2553 ;note: led display at p1 ;-----main-----

ปฏบิตักิาร วชิา ไมโครโปรเซสเซอร ์รายวชิา 303361

ภาควชิาไฟฟ้าและคอมพวิเตอร ์คณะวศิวกรรมศาสตร ์มหาวทิยาลยันเรศวร

ดร. พรพศิทุธิ ์วรจรัินตน์ 2

C/~T Bit

ส าหรับเลอืกการท างานของ วา่จะใชเ้ป็น Timer หรอื Counter ถา้ Bit นีเ้ป็น

1 (Counter) เลอืกการท างานเป็น Counter ซึง่ก็จะท าการนับสญัญาณทีเ่ขา้มาที ่ขา Tx

0 (Timer) เลอืกการท างานเป็น Timer ซึง่ก็จะท าการนับสญัญาณ Clock/12

M1/M0 Bits

เป็น 2 Bit ทีใ่ชง้านรว่มกนัเพือ่เลอืก Mode การท างานของ Timer/Counter คา่ใน M1 และ M0 จะเลอืกไดด้ังนี ้

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 และ TH1 จะท างานเป็น Timer ซึง่ควบคมุการท างาน

ไดจ้าก Control bit ของ Timer 1

Timer 1 หยดุท างาน

TCON Register

TF1 Bit

Timer 1 Overflow Flag ซึง่จะมสีถานะเป็น ‘1’ เมือ่ Timer 1 register นับจนเกดิ Overflow สถานะของ TF1 นี ้จะ

ถกู Clear ไดเ้องเมือ่ CPU ท างานตาม Interrupt Service routine (ISR) นัน้ๆ โดยปกตแิลว้ Interrupt จาก Timer

จะถกู disable เอาไว ้จงึไมม่กีารกะโดดไปท างานยงั ISR นัน้ๆ และ TFx จะไมถ่กู clear โดยอตัโนมตั ิถา้ตอ้งการให ้

มกีารกระโดดไปท า ISR ตอ้งมกีาร set bit EA และ ET ใน Register IE กอ่น

TR1 Bit

Timer 1 Run Control Bit เป็น Bit ทีส่ามารถควบคมุไดด้ว้ย Software ส าหรับควบคมุการนับของ Timer 1

Register ใหนั้บ หรอืหยดุ

Page 3: ปฏิบัติการ วิชา 303361 · 2018. 10. 8. · ;filename: lab5_1.asm ;description: timer0 mode 1 ;date: 26/12/2553 ;note: led display at p1 ;-----main-----

ปฏบิตักิาร วชิา ไมโครโปรเซสเซอร ์รายวชิา 303361

ภาควชิาไฟฟ้าและคอมพวิเตอร ์คณะวศิวกรรมศาสตร ์มหาวทิยาลยันเรศวร

ดร. พรพศิทุธิ ์วรจรัินตน์ 3

TF0 Bit

Timer 0 Overflow Flag

TR0 Bit

Timer 0 Run Control Bit

IE1 Bit

Bit นีจ้ะเป็น ‘1’ เมือ่มสีญัญาณทีเ่ขา้มาทางขา ~INT1 (โดยมสีภาวะลอจกิของสญัญาณตามก าหนดใน Bit IT1)

แลว้จะท าใหเ้กดิการกระโดดไปท างานยงั Interrupt Service Routine ของ INT1 (Bit นี ้จะกลับเป็น ‘0’ ไดเ้องถา้

เป็นการ Interrupt แบบ Level activated (Bit IT1 = ‘1’))

IT1 Bit

เป็น Bit ทีใ่ชก้ าหนดลักษณะของสญัญาณทีจ่ะเขา้มาทีข่า ~INT1

ถา้ IT1 เป็น ‘1’ จะเกดิการ Interrupt ถา้สญัญาณที ่ขา ~INT1 เปลีย่นจาก ‘1’ to ‘0’

ถา้ IT1 เป็น ‘0’ จะเกดิการ Interrupt ถา้สภาวะของสญัญาณที ่ขา ~INT1 เป็น ‘0’

IE0 Bit

มกีารท างานเหมอืน IE1

IT0 Bit

มกีารท างานเหมอืน IT1

การท างานของ Timer/Counter ใน Mode 0, 1 และ 2 ของ Timer 0 และ Timer 1 จะคลา้ยกนั สว่นการท างานใน

Mode 3 จะแตกตา่งกนั โดยสรปุไดด้ังนี ้

Mode 0

การท างานใน Mode นี ้จะเป็นการใชง้านของ Timer register แบบ 13 Bit ซึง่จะใช ้8 Bit บนจาก THx และ 5 Bit

ลา่งจาก TLx

การนับจะเป็นการนับขึน้ และเมือ่ถงึคา่มากทีส่ดุ (THx = FFh, TLx = 1Fh) แลว้มกีารนับเพิม่อกี Timer interrupt

flag TFx (ใน Register TCON) จะมคีา่เป็น ‘1’

การนับจะท างานเมือ่สถานะของ Bit TRx = ‘1’ และ (GATE = ‘0’ หรอื Pin ~INTx = ‘1’)

ในการก าหนดให ้GATE = ‘1’ นัน้ จะท าใหก้ารท างานของ Timer นี ้ถกูควบคมุโดยสญัญาณจากภายนอกซึง่เขา้มา

ทีข่า ~INTx

Page 4: ปฏิบัติการ วิชา 303361 · 2018. 10. 8. · ;filename: lab5_1.asm ;description: timer0 mode 1 ;date: 26/12/2553 ;note: led display at p1 ;-----main-----

ปฏบิตักิาร วชิา ไมโครโปรเซสเซอร ์รายวชิา 303361

ภาควชิาไฟฟ้าและคอมพวิเตอร ์คณะวศิวกรรมศาสตร ์มหาวทิยาลยันเรศวร

ดร. พรพศิทุธิ ์วรจรัินตน์ 4

Mode 1

การท างานใน Mode 1 นี ้เหมอืนกบัการท างานใน Mode 0 แตเ่ป็นการใชง้านของ Timer register ทัง้ 16 Bit

Mode 2

การท างานใน Mode นี ้จะเป็นการใชง้านของ Timer register แบบ 8 Bit ของ TLx เมือ่ TLx เกดิ Overflow หรอื

เกดิเปลีย่นแปลงจาก FFH เป็น 00H Timer interrupt flag TFx จะมคีา่เป็น ‘1’ และจะมกีารท า Automatic reload

โหลดคา่ทีเ่ก็บไวใ้น THx ไปเกบ็ไวใ้น TLx ซึง่จะเป็นคา่เริม่ตน้ของการนับครัง้ตอ่ไป

Page 5: ปฏิบัติการ วิชา 303361 · 2018. 10. 8. · ;filename: lab5_1.asm ;description: timer0 mode 1 ;date: 26/12/2553 ;note: led display at p1 ;-----main-----

ปฏบิตักิาร วชิา ไมโครโปรเซสเซอร ์รายวชิา 303361

ภาควชิาไฟฟ้าและคอมพวิเตอร ์คณะวศิวกรรมศาสตร ์มหาวทิยาลยันเรศวร

ดร. พรพศิทุธิ ์วรจรัินตน์ 5

Mode 3

ในโหมดนี ้Timer 1 จะไมถ่กูใชง้านแตเ่ราสามารถสวติชใ์ห ้Timer 1 ไปท างานในโหมดอืน่ได ้แตก่ารท างานของ

Timer 1 จะไมม่กีารอนิเทอรรั์พทเ์กดิขึน้

Timer 0 จะแยกเป็น 2 ตัวตวัละ 8 บติ คอื TL0 และ TH0 เมือ่ Timer เกดิ Overflow จะมกีารเซตบติ TF0 และ

TF1 ตามล าดับ

สว่น Counter register TL0 จะใชส้ญัญาณทีค่วบคมุการท างาน เหมอืนกบัการใชใ้น Mode 0 และส าหรับ Counter

register TH0 จะถกูก าหนดใหท้ างานเป็น Timer เทา่นัน้ โดยจะใชก้ารควบคมุจาก Bit TR1 และ TF1 ของ Timer 1

และเมือ่ใชง้าน Timer 0 ใน Mode 3 แลว้ ตวั Timer 1 จะสามารถควบคมุใหห้ยดุนับไดโ้ดยการเปลีย่นเขา้เป็น

Mode 3 และในการใชง้านจะไมส่ามารถใชก้าร Interrupt ได ้

Mode 3 นีอ้อกแบบส าหรับการใชง้านทีต่อ้งการ Timer/Counter ทีเ่พิม่ขึน้

Page 6: ปฏิบัติการ วิชา 303361 · 2018. 10. 8. · ;filename: lab5_1.asm ;description: timer0 mode 1 ;date: 26/12/2553 ;note: led display at p1 ;-----main-----

ปฏบิตักิาร วชิา ไมโครโปรเซสเซอร ์รายวชิา 303361

ภาควชิาไฟฟ้าและคอมพวิเตอร ์คณะวศิวกรรมศาสตร ์มหาวทิยาลยันเรศวร

ดร. พรพศิทุธิ ์วรจรัินตน์ 6

วธีทีดลอง

1. เขยีนและสรา้ง Hex file.

2. ทีเ่ครือ่งคอมพวิเตอร ์ตอ่สายอนุกรมจากพอรต์อนุกรมของเครือ่งคอมพวิเตอร ์(com1) ไปยงัพอรต์อนุกรม

ของบอรด์ Microcontroller (RS232) โดยใชส้ายและ connector ทีแ่จกใหเ้ทา่น ัน้ ท าการโหลดผา่น

โปรแกรม ลงในบอรด์ Microcontroller

3. การทดลองที ่5.1 และ 5.2 ใหนั้กเรยีนท าสงัเกตการณ์ใชง้าน Timer ใน mode 1 และ mode 2

ตามล าดับ

ตอ่สาย จากบอรด์ MCS-51 กบั connector 24B port ของบอรด์ LED ดังตาราง และ ตอ่ ground และไฟเลีย้งของทัง้สองบอรด์เขา้ดว้ยกนั

Port ขา บอรด์ LED

1.0 5

4. การทดลองที ่5.3 ใหนั้กเรยีนท าสงัเกตการณ์ใชง้าน Timer เป็นตวัจับเวลา

ตอ่บอรด์ MCS-51 กบั บอรด์ 7- segment โดย P0 ตอ่กบั Address และ P1 ตอ่กบั Data ตอ่ ground และไฟเลีย้งของทัง้สองบอรด์เขา้ดว้ยกนั

ตอ่สวทิชก์บั P3.2

Timer จะเริม่ท างานเมือ่กด switch ทีต่อ่อยูก่บัขา P3.2 และ Timer จะหยดุท างานเมือ่กด switch ทีต่อ่อยูก่บัขา

P3.2 อกีครัง้ โดย 7-segment จะแสดงจ านวนครัง้ที ่Timer 0 ใน mode1 overflow ในชว่งเวลาระหวา่งการกด

switch ทัง้ 2 ครัง้

5. การทดลองที ่5.4 ใหนั้กเรยีนท าสงัเกตการณ์ใชง้าน Counter เป็นตัวนับสญัญาณ pulse ทีเ่ขา้มาทีข่า T0

(P3.4)

ตอ่สวทิชก์บั P3.2

ตอ่สญัญาณ TTL จากแหลง่ก าเนดิเขา้ทีข่า T0 (P3.4) และตอ่ ground จากแหลง่ก าเนดิเขา้กบั ground

ของ microcontroller

เลอืกชว่งความถี ่x1Hz แลว้ลองเปลีย่นชว่งความถีเ่ป็น x10 Hz, x100Hz สงัเกตผลการทดลอง

Counter จะเริม่ท างานเมือ่กด switch ทีต่อ่อยูก่บัขา P3.2 บนบอรด์ทดลอง และ Counter จะหยดุท างานเมือ่กด

switch ทีต่อ่อยูก่บัขา P3.2 อกีครัง้โดย 7-segment จะแสดงคา่ใน TL0 ของ Counter ใน mode1 ในชว่งเวลา

ระหวา่งการกด switch ทัง้ 2 ครัง้

Page 7: ปฏิบัติการ วิชา 303361 · 2018. 10. 8. · ;filename: lab5_1.asm ;description: timer0 mode 1 ;date: 26/12/2553 ;note: led display at p1 ;-----main-----

ปฏบิตักิาร วชิา ไมโครโปรเซสเซอร ์รายวชิา 303361

ภาควชิาไฟฟ้าและคอมพวิเตอร ์คณะวศิวกรรมศาสตร ์มหาวทิยาลยันเรศวร

ดร. พรพศิทุธิ ์วรจรัินตน์ 7

การทดลองที ่5.1

;FILENAME: LAB5_1.ASM

;DESCRIPTION: Timer0 mode 1

;DATE: 26/12/2553

;NOTE: LED display at P1

;------------MAIN------------------------------

ORG 0000H

MOV TMOD,#01H

MAIN: MOV R1,#40D

START_TIMER: MOV TH0,#3CH

MOV TL0,#0AFH ; FFFFH-50000D=3CAFH

SETB TR0

LOOP: JNB TF0, LOOP

CLR TF0

DJNZ R1,START_TIMER

CPL P1.0

AJMP MAIN

END

การทดลองที ่5.2

;FILENAME: LAB5_2.ASM

;DESCRIPTION: Timer0 mode 2

;DATE: 26/12/2553

;NOTE: LED display at P1

;------------MAIN------------------------------

ORG 0000H

MOV TMOD,#02H

MOV TH0,#037H ; FFH-200D=37H

MAIN: MOV R1,#40D

LOOP1: MOV R2,#250D

START_TIMER: SETB TR0

LOOP2: JNB TF0, LOOP2

CLR TF0

DJNZ R2, START_TIMER

DJNZ R1, LOOP1

CPL P1.0

AJMP MAIN

END

การทดลองที ่5.3

;FILENAME: LAB5_3.ASM ;DESCRIPTION: Stop watch

Page 8: ปฏิบัติการ วิชา 303361 · 2018. 10. 8. · ;filename: lab5_1.asm ;description: timer0 mode 1 ;date: 26/12/2553 ;note: led display at p1 ;-----main-----

ปฏบิตักิาร วชิา ไมโครโปรเซสเซอร ์รายวชิา 303361

ภาควชิาไฟฟ้าและคอมพวิเตอร ์คณะวศิวกรรมศาสตร ์มหาวทิยาลยันเรศวร

ดร. พรพศิทุธิ ์วรจรัินตน์ 8

;DATE: 26/12/2553

;NOTE: 7-segment display TF . Use switch P3.2

;------------MAIN------------------------------

ORG 0000H

PORT_LED7 EQU P1

PORT_DIG EQU P0

DSP1_BUFFER EQU 03CH ; For DSP1 Data

DSP2_BUFFER EQU 03DH ; For DSP2 Data

START_STOP_SW BIT P3.2

TIMER_ON BIT PSW.5 ; Show timer status

MOV A,#00H

MOV PORT_LED7,A ; Clear

DISPLAY

;****************************************

MAIN: MOV R6,#00H ;R6=TF0

;overflow counter

CLR TIMER_ON

;****************************************

TIMER: MOV TMOD,#021H

;Timer0 mode 1, Timer1 mode2

MOV TH0,#00H

MOV TL0,#00H

;****************************************

BEGIN: MOV A,R6

MOV B,#16

; Move Divider to Register B

DIV AB

MOV DSP2_BUFFER,A

; Store NUM

MOV DSP1_BUFFER,B

; Store DEN

MOV R4,#50

; Set loop 100 times

SCAN_DSP_LOOP: MOV A,DSP1_BUFFER

MOV DPTR,#SEGCODE

; Move DIGIT Start Pointer

MOVC A,@A+DPTR

; Get ROM Data from Pointer+ACC.

MOV PORT_LED7,A

; Out ACC. to DISPLAY

MOV A,#00H

MOV PORT_DIG,A ; Enable DSP1

ACALL DELAY_T ; Delay

MOV A,DSP2_BUFFER

MOV DPTR,#SEGCODE

Page 9: ปฏิบัติการ วิชา 303361 · 2018. 10. 8. · ;filename: lab5_1.asm ;description: timer0 mode 1 ;date: 26/12/2553 ;note: led display at p1 ;-----main-----

ปฏบิตักิาร วชิา ไมโครโปรเซสเซอร ์รายวชิา 303361

ภาควชิาไฟฟ้าและคอมพวิเตอร ์คณะวศิวกรรมศาสตร ์มหาวทิยาลยันเรศวร

ดร. พรพศิทุธิ ์วรจรัินตน์ 9

MOVC A,@A+DPTR

MOV PORT_LED7,A

MOV A,#01H

MOV PORT_DIG,A

ACALL DELAY_T ; Delay

DJNZ R4, SCAN_DSP_LOOP

; Do until 5 times

TIMER_START: JB START_STOP_SW,EXIT

; Check S1 pressed?

ACALL DELAY_T

JB START_STOP_SW,EXIT

; Check Flag (S1 still pressed?)

JB TIMER_ON,TIMER_STOP

SETB TIMER_ON

; Set Flag TIMER_ON

SETB TR0 ; START TIMER0

EXIT: AJMP BEGIN

; Jump to BEGIN

;****************************************

TIMER_STOP: CLR TIMER_ON

; Clear Flag TIMER_ON

CLR TR0 ; STOP TIMER0

AJMP BEGIN

;****************************************

DELAY_T: MOV TH1,#037H

; FFH-200D=37H

MOV R7,#10D ;Delay 10 ms

LOOP1: SETB TR1

LOOP2: JNB TF1,LOOP2

CLR TF1

JNB TF0,CONT

INC R6 ; COUNT TF0

OVERFLOW

CLR TF0

CONT: DJNZ R7,LOOP1

RET

;****************************************

SEGCODE:

DB 03FH,06H,05BH,04FH,066H,06DH,07DH,07H

DB 07FH,06FH,077H,07CH,039H,05EH,079H,071H

DB 040H,040H,040H,040H

END

Page 10: ปฏิบัติการ วิชา 303361 · 2018. 10. 8. · ;filename: lab5_1.asm ;description: timer0 mode 1 ;date: 26/12/2553 ;note: led display at p1 ;-----main-----

ปฏบิตักิาร วชิา ไมโครโปรเซสเซอร ์รายวชิา 303361

ภาควชิาไฟฟ้าและคอมพวิเตอร ์คณะวศิวกรรมศาสตร ์มหาวทิยาลยันเรศวร

ดร. พรพศิทุธิ ์วรจรัินตน์ 10

การทดลองที ่5.4

;FILENAME: LAB5_4.ASM

;DESCRIPTION: Counter

;DATE: 26/12/2552

;NOTE: 7-segment display TF . Use T0 (P3.4)

;------------MAIN------------------------------

ORG 0000H

PORT_LED7 EQU P1

PORT_DIG EQU P0

DSP1_BUFFER EQU 03CH ; For DSP1 Data

DSP2_BUFFER EQU 03DH ; For DSP2 Data

START_STOP_SW BIT P3.2

TIMER_ON BIT PSW.5 ; Show timer status

MOV A,#00H

MOV PORT_LED7,A ; Clear

DISPLAY

;****************************************

MAIN: MOV R6,#00H ;R6=TF0

;overflow counter

CLR TIMER_ON

;****************************************

TIMER: MOV TMOD,#025H

;Timer0 mode 1, Timer1 mode2

MOV TH0,#00H

MOV TL0,#00H

;****************************************

BEGIN: MOV A,TL0

MOV B,#16

; Move Divider to Register B

DIV AB

MOV DSP2_BUFFER,A

; Store NUM

MOV DSP1_BUFFER,B

; Store DEN

MOV R4,#50

; Set loop 100 times

SCAN_DSP_LOOP: MOV A,DSP1_BUFFER

MOV DPTR,#SEGCODE

; Move DIGIT Start Pointer

MOVC A,@A+DPTR

; Get ROM Data from Pointer+ACC.

MOV PORT_LED7,A

; Out ACC. to DISPLAY

MOV A,#00H

MOV PORT_DIG,A ; Enable DSP1

ACALL DELAY_T ; Delay

Page 11: ปฏิบัติการ วิชา 303361 · 2018. 10. 8. · ;filename: lab5_1.asm ;description: timer0 mode 1 ;date: 26/12/2553 ;note: led display at p1 ;-----main-----

ปฏบิตักิาร วชิา ไมโครโปรเซสเซอร ์รายวชิา 303361

ภาควชิาไฟฟ้าและคอมพวิเตอร ์คณะวศิวกรรมศาสตร ์มหาวทิยาลยันเรศวร

ดร. พรพศิทุธิ ์วรจรัินตน์ 11

MOV A,DSP2_BUFFER

MOV DPTR,#SEGCODE

MOVC A,@A+DPTR

MOV PORT_LED7,A

MOV A,#01H

MOV PORT_DIG,A

ACALL DELAY_T ; Delay

DJNZ R4,SCAN_DSP_LOOP

; Do until 5 times

TIMER_START: JB START_STOP_SW,EXIT

; Check S1 pressed?

ACALL DELAY_T

JB START_STOP_SW,EXIT

; Check Flag (S1 still pressed?)

JB TIMER_ON,TIMER_STOP

SETB TIMER_ON

; Set Flag TIMER_ON

SETB TR0 ; START TIMER0

EXIT: AJMP BEGIN

; Jump to BEGIN

;****************************************

TIMER_STOP: CLR TIMER_ON

; Clear Flag TIMER_ON

CLR TR0 ; STOP TIMER0

AJMP BEGIN

;****************************************

DELAY_T: MOV TH1,#037H

; FFH-200D=37H

MOV R7,#10D ;Delay 10 ms

LOOP1: SETB TR1

LOOP2: JNB TF1,LOOP2

CLR TF1

JNB TF0,CONT

INC R6 ; COUNT TF0

OVERFLOW

CLR TF0

CONT: DJNZ R7,LOOP1

RET

;****************************************

SEGCODE:

DB 03FH,06H,05BH,04FH,066H,06DH,07DH,07H

DB 07FH,06FH,077H,07CH,039H,05EH,079H,071H

DB 040H,040H,040H,040H

END

Page 12: ปฏิบัติการ วิชา 303361 · 2018. 10. 8. · ;filename: lab5_1.asm ;description: timer0 mode 1 ;date: 26/12/2553 ;note: led display at p1 ;-----main-----

ปฏบิตักิาร วชิา การเชือ่มตอ่ไมโครคอมพวิเตอรแ์ละไมโครคอนโทรลเลอร ์รายวชิา 305381

ภาควชิาไฟฟ้าและคอมพวิเตอร ์คณะวศิวกรรมศาสตร์ มหาวทิยาลยันเรศวร

ดร. พรพศิทุธิ ์วรจรัินตน์ 12

แบบฝึกหดั

1. ใช ้Counter นับจ านวนครัง้ทีก่ด switch ทีต่อ่อยูก่บัขา P3.4 บนบอรด์ทดลองเป็นเลขฐาน 16

2. เขยีนโปรแกรมเพือ่ให ้LED ตดิและเลือ่นไปเรือ่ยๆโดยกลับทศิทางทกุ 10 วนิาทโีดยใช ้Timer จับเวลา

การสง่งาน

- แบบฝีกหดั: อธบิาย และ แสดงการท างาน Program ในหอ้งเรยีนครัง้ตอ่ไป

หมายเหต ุ

Page 13: ปฏิบัติการ วิชา 303361 · 2018. 10. 8. · ;filename: lab5_1.asm ;description: timer0 mode 1 ;date: 26/12/2553 ;note: led display at p1 ;-----main-----

ปฏบิตักิาร วชิา การเชือ่มตอ่ไมโครคอมพวิเตอรแ์ละไมโครคอนโทรลเลอร ์รายวชิา 305381

ภาควชิาไฟฟ้าและคอมพวิเตอร ์คณะวศิวกรรมศาสตร ์มหาวทิยาลยันเรศวร

ดร. พรพศิทุธิ ์วรจรัินตน์ 13