วงจรนับ/จับเวลา

               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 ] [ รายวิชา ]
[ ภาควิชาวิศวกรรมคอมพิวเตอร์ ] [ คณะวิศวกรรมศาสตร์ ] [ มหาวิทยาลัยเกษตรศาสตร์ ]