วงจรนับ/จับเวลา
8051
ประกอบด้วย register ขนาด 16 bit จำนวน 2 ตัว คือ T0 (Timer0) และ T1 (Timer1)
ซึ่งสามารถนำไป
ใช้งานได้อย่างอิสระ
โดยสามารถควบคุมให้ทำหน้าที่เป็นตัวจับเวลา(Timer)
เพื่อนับจำนวน plus สัญญาณนาฬิกาภายใน
หรือ
ควบคุมให้ทำหน้าที่เป็นตัวนับ(Counter)
เพื่อนับจำนวน plus ของระบบ ได้ ภายใน register
แต่ละตัวยังสามารถแยกออกได้
เป็น
register ขนาด 8 bit คือ TH0, TL0, TH1 และ TL1 โดยการทำงานของ
register ทั้ง 2
ตัวนี้มีผลมาจากการกำหนดค่า
ของ
bit ที่อยู่ภายใน TMOD (Timer mode control register) และ TCON
(Timer/Counter control register)
bit ต่างๆภายใน register TMOD
bit ต่างๆภายใน register TCON
การ interupt
วงจรนับตรวจ/จับเวลา
จากกระบวนการทำงานของวงจรนับ/จับเวลาของ
8051 จำเป็นต้องกำหนดค่าเริ่มต้นให้กับ
register T0 หรือ T1
ค่านี้เป็นค่าจำนวน plus
ภายในที่จะต้องนับหรือค่าของจำนวน
plus ภายนอก ที่เข้ามาทางขาสัญญาณสัญญาณ T0 หรือ T1
ค่าตัวเลขภายใน register
นี้จะต้องลดให้มีค่าที่น้อยกว่า
ค่าที่ต้องการอยู่หนึ่งค่า
ทั้งนี้เนื่องจากการทำงานของ register
จะเพิ่ม
ค่าจากที่กำหนดไปเรื่อยๆ
จนถึง ค่าสูงสุดของ register
และกลับไปเป็นค่า 0 เมื่อมีการเกิด Overflow
เกิดขึ้น ทำให้เกิดการกำ
หนดค่า flag
เพื่อแจ้งให้ CPU ได้รับทราบ
ดังนั้นโปรแกรมทั่วไปจึงมักใช้สภาวะของ
flag นี้( TF0 และ TF1 ) ซึ่งเป็น bit
อยู่ภายใน
register TCON
เพื่อตรวจสอบว่ากระบวนการนั้นได้เสร็จสิ้นลงแล้ว
หรือใช้เพื่อ ทำการ interrupt program ต่อไป
ส่วนควบคุมการทำงานของวงจรนับ/จับเวลา
ซึ่งประกอบด้วยส่วนของการกำหนดที่มาของสัญญาณ
(Timer) หรือ (Counter) และ bit
หรือขาสัญญาณสำหรับการหยุดหรือทำงานของวงจรนับ
การทำงานเป็นตัวจับเวลา
ก่อนที่ทำงานเป็นวงจรจับเวลา
ต้องมีการกำหนดค่าให้อยู่ในสภาวะดังตารางก่อน
-การจับเวลาใน
mode 0 : การทำงานใน mode 0
วงจรนับฝจับเวลาจะทำหน้าที่เป็นตัวนับขนาด
13 bit(
โดยใช้ register TH0 หรือ TH1 เป็นตัวนับขนาด 8
bit และ register TL0 หรือ TL1 มีขนาด 5 bit ) ตามลักษณะของ
แผน
ภาพในรูป
-การจับเวลาใน
mode 1 : การทำงานใน mode 1
มีความคล้ายคลึงใน mode 0 มาก แตกต่างกันที่
mode 1 เป็นตัวนับขนาด 16 bit เต็ม
ดังรูป
-การจับเวลาใน
mode 2 : การทำงานใน mode 2
ของวงจรนับ/จับเวลาแตกต่างกันออกไปเพียงใช้
register TL0(TL1) เป็น ตัวนับขนาด 8 bit ส่วน register TH0(TH1)
เก็บค่าเริ่มต้นของการนับไว้
ดังรูป
-การจับเวลาใน
mode 3 : การทำงานใน mode 3
จะสามารถใช้ได้เฉพาะกับ Timer 0 เท่านั้น
หากว่านำ
ไปกำหนดให้กับ Timer 1
จะทำให้หยุดการทำงานไป เมื่อ Timer 0
ได้รับการกำหนดทำงานใน mode 3
จะมีผลทำให้
register
ของมันแยกการทำงานเป็นอิสระ โดย register TL0
จะถูกควบคุมจาก bit ภายใน register TCON และ
ขาสัญญาณ INT0 ดังแสดงในรูป และเมื่อมีการ
Overflow เกิดขึ้น จากค่า 0FFH เป็น 00H ก็ จะมีผลให้
flag TF0 มีการเปลี่ยนแปลงเกิด
ขึ้น สำหรับ
register TH0 จะถูกกำหนดให้ทำงานในแบบ
ของตัวจับเวลาภายใต้การควบคุมของ bit
TR1ใน registerTCON
เท่านั้น และหากเกิด Overflow
จะมีผลลเฉพาะต่อ flag TF1 ในส่วน Timer 1 ขณะเมื่อ Timer
0 ถูกกำหนดให้ทเงาน
mode3
ก็ยังจะสามารถทำงานใน mode อื่นๆ
ที่ไม่ใช้ mode 3 ได้ เช่นเดิม
ยกเว้นจะไม่มีการ interrupt
เกิดขึ้นเท่านั้น ( เนื่อง
จากflag TF1
ถูก ใช้โดย Timer 0 ไปแล้ว) รูปการทำงานใน mode 3
การทำงานเป็นตัวนับสัญญา
การใช้งานในลักษณะตัวนับ(counter)
โดยหลักแล้วจะเหมือนกับลักษณะการทำงานเป็น
ตัวจับเวลา (Timer)
ดังได้กล่าวในหัวข้อที่ผ่านมา
ข้อแตกต่างประการเดียวคือ แทนที่จะนับ
plus สัญญาณภายในและผ่านวงจรหาร 12
มาเป็นการ
นับ plus สัญญาณทางขาสัญญาณ T0(P3.4)
ให้ กับ Timer0 หรือขาสัญญาณ T1(P3.5) ให้กับ Timer1 เท่านั้น
นอกจากนี้
ก่อนการเริ่มต้นใช้งานจะ
ต้องกำหนดค่าของ bit C/T ภายใน register TCON
ให้มีค่าเป็น 1 เสียก่อน
วงจรนับ/จับเวลา2(Timer2)
mode
การทำงานของ Timer2
ประกอบด้วย
-Capture
mode: สามารถเลือกใช้งานได้ 2 ลักษณะ
ด้วยการกำหนดให้กับ bit EXEN2 ของ register
T2CON ดังนี้
1.
เมื่อกำหนด bit EXEN2 เป็น 0 Timer 2
ยังทำงานเป็นวงจรนับ/ตรวจจับเวลา
เมื่อมีการ overflow ขึ่น bit
ใน register TF2 จะถูกเซต
และสามารถนำไปสร้างการ interrupt ขึ้นได้
2.
เมื่อกำหนดค่า bit EXEN2 เป็น 1
การทำงานจะครอบคลุมการทำงานลักษณะข้างต้น
แต่จะเพิ่มเมื่อมีการ
เปลี่ยนแปลงระดับ
สัญญาณทางขาสัญญาณ T2EX จาก logic สูง ไปเป็น logic ต่ำ
จะมีผลทำให้ค่าข้อมูลภายใน register
ของ Timer2 คือ TL2 และ TH2 ถูกนำไปใส่(Capture)
ให้กับ register RCAP2L และ RCAP2H ซึ่งเป็น register
หน้าที่
พิเศษ หรือ SFR ที่มีใน Microcontroller เบอร์
8052 เท่านั้น นอกจากนี้จะมีผผลทำให้ bit EXF2
ภายใน register T2CON มีค่าเป็น 1
สามารถนำไปใช้งานในการ interrupt
ได้เช่นกัน
-Auto-reload
mode: สามารถทำงานได้ 2 ลักษณะเช่นเดียวกัน
-Baud
rate Generator: ของ Timer 2 จะมีความแตกต่างจาก
Timer 0 และ Timer 1 โดยวงจรรับ และการส่ง
สามารถเป็นค่าที่ต่างกันได้
ขึ้นอยู่กับการกำหนดค่าให้กับ bit TCLK และ RCLK ของ Timer 2
ดังแสดงให้เห็นจากภาพการ
ทำงาน
การทำงานของโหมดนี้คล้ายคลึงกับการทำงานใน
Auto-reload mode กล่าวคือค่าใน register TH2
เปลื่ยนแปลง
จากค่า0FFH ไปเป็นค่า 0
หรือที่เรียกว่า overflow
จะมีผลให้มีการโหลดข้อมูลขนาด
16 bit จาก register RCAP2H และ
RCAP2L
ซึ่งมีการเตรียมค่าล่วงหน้าแล้วโดยอัตโนมัติการจับเวลาใน
[ บทเรียน ] [ 204471 ] [ รายวิชา ]
[ ภาควิชาวิศวกรรมคอมพิวเตอร์ ] [ คณะวิศวกรรมศาสตร์ ] [ มหาวิทยาลัยเกษตรศาสตร์ ]