160 likes | 404 Views
ตัวนับ. จากภายใน. การใช้งาน TIMER/ เคาน์เตอร์. 5. ส่งสัญญาณออกมา เมื่อนับครบ. To. ตัวนับ. จากภายนอก. ตัวจับเวลา. ส่งสัญญาณออกมา เมื่อนับครบ. การทำงานของตัวนับตัวจับเวลา. Q. Q. Q. 1. 2. 0. การทำงานของ Timer. Timer Flip Flops (3). “ Flag ” Flip Flop. D. D. D. D. Q. Q.
E N D
ตัวนับ จากภายใน การใช้งาน TIMER/เคาน์เตอร์ 5 ส่งสัญญาณออกมา เมื่อนับครบ To ตัวนับ จากภายนอก ตัวจับเวลา ส่งสัญญาณออกมา เมื่อนับครบ การทำงานของตัวนับตัวจับเวลา
Q Q Q 1 2 0 การทำงานของTimer Timer Flip Flops (3) “Flag” Flip Flop D D D D Q Q Q Q clock Q “Flag” LSB MSB (ก)
Q Q Q 0 2 1 การทำงานของTimer clock (LSB) (MSB) 0 1 2 3 4 5 6 7 0 Count Flag Flag is Set on 7-to-0 Timer Over Flow (ข)
รีจีเตอร์ที่ใช้เป็น Timer
(TMOD) Timer Mode Register
T1 T0 โดยทั่วไป Gate จะเป็น 0 ตัวอย่าง 1 ใช้ T0 เป็นตัวจับเวลา ที่โหมด 1 0 0 0 0 0 0 0 1 หรือMOV TMOD , #01H ตัวอย่าง 2 ใช้ T1 เป็นตัวนับ ที่โหมด 2 0 1 1 0 0 0 0 0 หรือMOV TMOD , #60H
การทำงานของ Timer ในโหมดต่างๆ เมื่อใช้ Timer 0 และ Timer 1 จะต้องใช้รีจิสเตอร์คู่ TL x และTH x โดยค่า x จะเป็นตัวบอกว่าเป็น Timer 0 หรือ Timer 1 การใช้ Timer สามารถใช้งานได้หลายโหมด ซึ่งเราสามารถเซตค่าโหมดการทำงานได้ โดยการโปรแกรมใน รีจีสเตอร์ TMOD
TL x ( 5 bits ) TH x ( 8 bits ) Timer Clock TF x Overflow Flag Mode 0 การทำงานในโหมด 0 จะเป็นการใช้ Timer แบบ 13 บิต ซึ่งจะใช้ 5 บิตล่างของ TL x และอีก 8 บิตของ TH x การทำงานในโหมดนี้ เมื่อบิตของ TL x นับไปจนถึง “1” ทุกบิต จะส่ง Clock 1 ลูกให้ TH x นับต่อและเมื่อนับเป็น “1” ทุกบิต และเปลี่ยนกับเป็น “0” จะเกิด Overflow Flag เกิดขึ้น
TL x TH x Timer Clock TF x Overflow Flag Mode 1 การทำงานในโหมดนี้จะเหมือนกับการทำงานในโหมด 0 แต่เป็น Timer 16 บิต ซึ่งการนับจะเริ่มตั้งแต่ 0000H ,0001H,0002H ไปเรื่อยๆและเกิด Overflow Flag เมื่อมีการเปลี่ยนแปลงจาก FFFFH เป็น 0000H ซึ่งเป็นการเซต Overflow Flag และค่านี้จะเกิดขึ้นในบิต TF x ของรีจีสเตอร์ TCONซึ่งสามารถอ่าน และเขียนด้วยโปรแกรม
Mode 2 การทำงานในโหมด 2 เรียกอีกอย่างหนึ่งว่า 8 – bit Auto – reload Mode โดยใช้ Timer ไบต์ต่ำ ( TL x) เป็น Timer แบบ 8 บิต Timer Clock TL x TH x Reload Overflow Flag TH x เมื่อไบต์ต่ำเกิด Overflows หรือเกิดการเปลี่ยนแปลงจาก FFH เป็น 00H จะมีการโหลดค่าที่เก็บไว้ในไบต์สูง (TH x) ไปเก็บไว้ที่ไบต์ต่ำ(TL x) ซึ่งจะเป็น ค่าเริ่มต้นของการนับครั้งต่อไป นิยมใช้สร้างเป็นฐานเวลาที่สามารถโปรแกรมได้
Timer Clock TL 1 TH 1 Timer Clock TF 0 TL 0 Overflow Flag 1 / 12 Fos TF 1 TH 0 Overflow Flag Mode 3 การทำงานในโหมด 3 นี้ ตัว Timer 1 จะไม่ทำงาน ตัว Timer 0 จะแยกเป็น 2 ตัวตัวละ 8 บิต คือTL 0 และ TH 0 เมื่อ Timer เกิด Overflows จะมีการเซตบิต TF 0 และ TF 1
Clocking Source การใช้ Timer นี้สามารถใช้ได้ 2 หน้าที่ คือ เป็นตัวจับเวลา ( Timer )และเป็นตัวนับ ( Counter ) ซึ่งสามารถโปรแกรมได้โดยการเซต หรือรีเซตบิต C / T ในรีจิสเตอร์ TMOD 1. การใช้เป็นตัวจับเวลา ( Timer ) ถ้าบิต C/T ใน TOMD เป็นลอจิก 0 จะเป็นการเลือกให้ Timer นำ Clock มาจากวงจร Oscillator ในชิพ ซึ่งสัญญาณนาฬิกาจะเข้ามาทุกๆ Machine Cycle หรืออาจกล่าวได้ว่าค่าใน TH x และ TL x จะมีค่าเพิ่มขึ้น ด้วยอัตราการนับแต่ละครั้งใช้เวลาเท่ากับ 1/12 ของความถี่ของสัญญาณนาฬิกาที่ใช้บิตชิพ
Clocking Source 2. การใช้เป็นตัวนับ ( Counter ) ถ้าบิต C/T เป็น 1 ตัว Timer จะนำ Clock มาจากภายนอกโดยใช้ขา P3.4 หรือ T 0 เป็นขา Input Clock ให้กับ Timer 0 และใช้ขา P3.5 หรือ T 1 เป็น Input Clock ให้กับ Timer 1
Intializing and Accessing Timer Register การใช้งาน Timer เริ่มแรกจะต้องโปรแกรมเพื่อเลือกโหมดการทำงานของ Timer ก่อน เมื่อเริ่มใช้งานก็โปรแกรมให้เริ่มทำงาน หยุดการทำงาน อ่าน เคลียร์ค่าบิตแฟลก อ่านค่า Timer Register ตามลำดับ เพื่อนำไปประยุกต์การใช้งานต่อไป TMOD คือ รีจีสเตอร์ที่ต้องโปรแกรม โดยเซตโหมดการทำงานก่อน ตัวอย่างเช่น ถ้าให้ Timer 1 เป็น 16 –bits Timer (โหมด 1) นับสัญญาณนาฬิกาบนชิพ สามารถเขียนคำสั่งได้ดังนี้ MOV TMOD , #00010000B