หลาย ๆ การใช้งานไมโครคอนโทรลเลอร์ จำเป็นต้องมีการนับเหตุการณ์ภายนอกเช่นความถี่ของการเต้นของชีพจรและการสร้างความล่าช้าของเวลาภายในที่แม่นยำระหว่างการทำงานของคอมพิวเตอร์ งานทั้งสองนี้สามารถดำเนินการได้โดยใช้เทคนิคซอฟต์แวร์ แต่การวนซ้ำของซอฟต์แวร์สำหรับการนับและเวลาจะไม่ให้ผลลัพธ์ที่แน่นอนแทนที่จะไม่ทำหน้าที่ที่สำคัญกว่า เพื่อหลีกเลี่ยงปัญหาเหล่านี้ตัวจับเวลาและตัวนับในไมโครคอนโทรลเลอร์เป็นตัวเลือกที่ดีกว่าสำหรับการใช้งานที่เรียบง่ายและต้นทุนต่ำ ตัวจับเวลาและตัวนับเหล่านี้ใช้เป็น ขัดจังหวะในไมโครคอนโทรลเลอร์ 8051 .
มีตัวจับเวลา 16 บิตสองตัวและตัวนับใน ไมโครคอนโทรลเลอร์ 8051 : ตัวจับเวลา 0 และตัวจับเวลา 1. ตัวจับเวลาทั้งสองประกอบด้วยรีจิสเตอร์ 16 บิตซึ่งไบต์ที่ต่ำกว่าจะถูกเก็บไว้ใน TL และไบต์ที่สูงกว่าจะถูกเก็บไว้ใน TH ตัวจับเวลาสามารถใช้เป็นตัวนับและสำหรับการทำงานของเวลาที่ขึ้นอยู่กับแหล่งที่มาของพัลส์นาฬิกาไปยังเคาน์เตอร์
ตัวจับเวลาและตัวนับ
ตัวนับและตัวจับเวลาในไมโครคอนโทรลเลอร์ 8051 ประกอบด้วยการลงทะเบียนฟังก์ชันพิเศษสองรายการ: TMOD (Timer Mode Register) และ TCON (Timer Control Register) ซึ่งใช้สำหรับเปิดใช้งานและกำหนดค่า ตัวจับเวลาและตัวนับ .
การควบคุมโหมดจับเวลา (TMOD): TMOD เป็นรีจิสเตอร์ 8 บิตที่ใช้สำหรับเลือกตัวจับเวลาหรือตัวนับและโหมดของตัวจับเวลา 4 บิตที่ต่ำกว่าใช้สำหรับการควบคุมการทำงานของตัวจับเวลา 0 หรือตัวนับ 0 และ 4 บิตที่เหลือจะใช้สำหรับการควบคุมการทำงานของไทม์เมอร์ 1 หรือตัวนับ 1 รีจิสเตอร์นี้มีอยู่ในรีจิสเตอร์ SFR ที่อยู่สำหรับรีจิสเตอร์ SFR คือ 89
การควบคุมโหมดจับเวลา (TMOD)
ประตู: หากตั้งค่าเกตบิตเป็น '0' เราสามารถเริ่มและหยุดตัวจับเวลา 'ซอฟต์แวร์' ได้ในลักษณะเดียวกัน หากประตูถูกตั้งค่าเป็น '1' เราจะสามารถจับเวลาฮาร์ดแวร์ได้
C / T: หากบิต C / T เป็น '1' แสดงว่าเป็นโหมดตัวนับและในทำนองเดียวกันเมื่อตั้งค่า C +
= / T บิตคือ ‘0’ ซึ่งทำหน้าที่เป็นโหมดจับเวลา
บิตเลือกโหมด: M1 และ M0 เป็นบิตเลือกโหมดซึ่งใช้เพื่อเลือกการทำงานของตัวจับเวลา มีสี่โหมดในการใช้งานตัวจับเวลา
โหมด 0: นี่คือโหมด 13 บิตซึ่งหมายความว่าการทำงานของตัวจับเวลาจะเสร็จสมบูรณ์ด้วยพัลส์“ 8192”
โหมด 1: นี่คือโหมด 16 บิตซึ่งหมายความว่าการทำงานของตัวจับเวลาจะเสร็จสมบูรณ์ด้วยพัลส์นาฬิกาสูงสุดที่“ 65535”
โหมด 2: โหมดนี้เป็นโหมดรีโหลดอัตโนมัติ 8 บิตซึ่งหมายความว่าการทำงานของตัวจับเวลาจะเสร็จสมบูรณ์โดยมีพัลส์นาฬิกา“ 256” เท่านั้น
โหมด 3: โหมดนี้เป็นโหมดจับเวลาแยกซึ่งหมายถึงค่าการโหลดใน T0 และเริ่ม T1 โดยอัตโนมัติ
บิตการเลือกโหมด
การเลือกโหมดค่าของตัวจับเวลาและตัวนับใน 8051
ค่าการเลือกโหมดของตัวจับเวลาและตัวนับ
Timer Control Register (TCON): TCON เป็นทะเบียนอื่นที่ใช้ควบคุมการทำงานของตัวนับและตัวจับเวลาในไมโครคอนโทรลเลอร์ เป็นรีจิสเตอร์ 8 บิตโดยสี่บิตบนมีหน้าที่เป็นตัวจับเวลาและตัวนับและบิตล่างมีหน้าที่ในการขัดจังหวะ
ลงทะเบียนควบคุมตัวจับเวลา (TCON)
TF1: TF1 ย่อมาจากบิตแฟล็ก 'timer1' เมื่อใดก็ตามที่คำนวณการหน่วงเวลาในไทม์เมอร์ 1 TH1 และ TL1 จะไปถึงค่าสูงสุดที่เป็น“ FFFF” โดยอัตโนมัติ
EX: ในขณะที่ (TF1 == 1)
เมื่อใดก็ตามที่ TF1 = 1 ให้ล้างแฟล็กบิตและหยุดตัวจับเวลา
TR1: TR1 ย่อมาจาก timer1 start หรือ stop bit การเริ่มตัวจับเวลานี้สามารถทำได้โดยใช้คำสั่งซอฟต์แวร์หรือด้วยวิธีฮาร์ดแวร์
EX: gate = 0 (เริ่มจับเวลา 1 ผ่านคำแนะนำซอฟต์แวร์)
TR1 = 1 (เริ่มจับเวลา)
TF0: TF0 ย่อมาจาก 'timer0' แฟล็กบิต เมื่อใดก็ตามที่คำนวณการหน่วงเวลาใน timer1 TH0 และ TL0 จะไปถึงค่าสูงสุดที่เป็น 'FFFF' โดยอัตโนมัติ
EX: ในขณะที่ (TF0 == 1)
เมื่อใดก็ตามที่ TF0 = 1 ให้ล้างแฟล็กบิตและหยุดตัวจับเวลา
TR0: TR0 ย่อมาจาก 'timer0' start หรือ stop bit ตัวจับเวลานี้เริ่มต้นได้โดยใช้คำสั่งซอฟต์แวร์หรือด้วยวิธีฮาร์ดแวร์
EX: gate = 0 (เริ่มจับเวลา 1 ผ่านคำแนะนำซอฟต์แวร์)
TR0 = 1 (เริ่มจับเวลา)
การคำนวณการหน่วงเวลาสำหรับไมโครคอนโทรลเลอร์ 8051
ไมโครคอนโทรลเลอร์ 8051 ทำงานด้วยความถี่ 11.0592 MHz
ความถี่ 11.0592MHz = 12 pules
1 นาฬิกาพัลส์ = 11.0592MHz / 12
F = 0.921 เมกะเฮิรตซ์
หน่วงเวลา = 1 / F
T = 1 / 0.92 เมกะเฮิร์ตซ์
T = 1.080506 us (สำหรับรอบ '1')
1000us = 1MS
1000ms = 1 วินาที
ขั้นตอนการคำนวณโปรแกรมล่าช้า
1. ก่อนอื่นเราต้องโหลดค่าทะเบียน TMOD สำหรับ 'Timer0' และ 'Timer1' ในโหมดต่างๆ ตัวอย่างเช่นหากเราต้องการใช้งาน timer1 ใน mode1 จะต้องกำหนดค่าเป็น“ TMOD = 0x10”
2. เมื่อใดก็ตามที่เราใช้งานตัวจับเวลาในโหมด 1 ตัวจับเวลาจะใช้พัลส์สูงสุดที่ 65535 จากนั้นพัลส์หน่วงเวลาที่คำนวณได้จะต้องถูกลบออกจากพัลส์สูงสุดและหลังจากนั้นจะแปลงเป็นค่าเลขฐานสิบหก ต้องโหลดค่านี้ในบิตที่สูงขึ้นและบิตที่ต่ำกว่าของ timer1 การทำงานของตัวจับเวลานี้ตั้งโปรแกรมโดยใช้ ฝังตัว C ไว้ในไมโครคอนโทรลเลอร์ .
ตัวอย่าง: เวลาล่าช้า 500us
500us / 1.080806us
461 พัลส์
P = 65535-461
P = 65074
65074 คำนวณโดย hexa decimal = FE32
TH1 = 0xFE
TL1 = 0x32
3. เริ่มจับเวลา 1“ TR1 = 1”
4. ตรวจสอบบิตแฟล็ก“ while (TF1 == 1)”
5. ล้างแฟล็กบิต“ TF1 = 0”
6. คลีตตัวจับเวลา“ TR1 = 0”
ตัวอย่างโปรแกรม:
โปรแกรม - 1
โปรแกรม - 2
โปรแกรม - 3
เคาน์เตอร์ใน 8051
เราสามารถใช้ตัวนับโดยรักษาบิต C / T ให้สูงนั่นคือตรรกะ ‘1’ ในทะเบียน TMOD เพื่อความเข้าใจที่ดีขึ้นเราได้ให้โปรแกรมหนึ่งซึ่งใช้ตัวจับเวลา 1 เป็นตัวนับ ที่นี่ไฟ LED เชื่อมต่อกับ 8051 พอร์ต 2 และสวิตช์ไปที่ไทม์เมอร์ 1 พิน P3.5 ดังนั้นหากกดสวิตช์ค่าจะถูกนับ มิฉะนั้นเซ็นเซอร์ที่เชื่อมต่อภายนอกกับขานับนี้เมื่ออินพุตทำการนับนี้
โปรแกรมเคาน์เตอร์
การใช้งานตัวจับเวลาและตัวนับในปี 8051
เคาน์เตอร์ดิจิตอล 8051
ตัวนับดิจิตอลที่มี 8051 สามารถทำได้โดยการตั้งโปรแกรมไมโครคอนโทรลเลอร์ตามที่กล่าวไว้ข้างต้นและโดยการติดระบบเซ็นเซอร์เข้ากับมัน ตัวนับวัตถุนี้ใช้เซ็นเซอร์ IR ที่ตรวจจับสิ่งกีดขวางที่อยู่ใกล้ ๆ และยังเปิดใช้งาน พินของไมโครคอนโทรลเลอร์ 06. เมื่อวัตถุผ่านเซ็นเซอร์ไมโครคอนโทรลเลอร์จะรับสัญญาณขัดจังหวะจากเซ็นเซอร์ IR และเพิ่มจำนวนที่แสดงในจอแสดงผล 7 ส่วน
เคาน์เตอร์ดิจิตอล 8051
วงจรหน่วงเวลาใช้ไมโครคอนโทรลเลอร์ 8051
รูปด้านล่างแสดงวิธีการใช้งานตัวจับเวลาเพื่อเปลี่ยน LED อย่างมีประสิทธิภาพ การดำเนินการหน่วงเวลาสำหรับชุด LED ถูกตั้งโปรแกรมไว้ในไมโครคอนโทรลเลอร์ตามลักษณะที่กล่าวไว้ข้างต้น ที่นี่ชุดไฟ LED เชื่อมต่อกับพอร์ต 2 ด้วยระบบจ่ายไฟทั่วไป เมื่อวงจรนี้เปิดขึ้นตามการหน่วงเวลา โปรแกรมในไมโครคอนโทรลเลอร์ อย่างเหมาะสมไฟ LED เหล่านี้จะเปิดอยู่
วงจรหน่วงเวลา
ทั้งหมดนี้เป็นข้อมูลเกี่ยวกับตัวจับเวลาไมโครคอนโทรลเลอร์ 8051 และตัวนับที่มีวงจรการเขียนโปรแกรมพื้นฐานและแอปพลิเคชัน เราหวังว่าข้อมูลในบทความนี้อาจให้ข้อมูลที่เพียงพอแก่คุณเพื่อทำความเข้าใจแนวคิดนี้ได้ดีขึ้น นอกจากนี้หากมีข้อสงสัยทางเทคนิคใด ๆ เกี่ยวกับการเขียนโปรแกรม 8051 และวงจรของมันคุณสามารถติดต่อเราได้โดยการแสดงความคิดเห็นด้านล่าง
เครดิตภาพ: