^Back To Top
Get Adobe Flash player

ทดลอง MCU ตอนที่ 5 (Delay) - ไทเมอร์

 

 

การหน่วงเวลาโดยอาศัยการทำงานของวงจรไทเมอร์เคาน์เตอร์

 

ไมโครคอนโทรลเลอร์มีวงจรไทเมอร์เคาน์เตอร์อยู่ภายในตัวซึ่งวงจรนี้ทำงานได้ 2 แบบขึ้นอยู่กับแหล่งสัญญาณนาฬิการที่ป้อนให้วงจร หากใช้สัญญาณนาฬิกาจากภายใน(คริสเตอร์ที่ใช้งาน) วงจรจะทำหน้าที่เป็นวงจรไทเมอร์ แต่หากใช้สัญญาณนาฬิกาจากภายนอกก็จะเป็นวงจรนับสัญญาณหรือที่เรียกว่าวงจรเคาน์เตอร์

  วงจรไทเมอร์เคาน์เตอร์มีโหมดการทำงานอยู่ด้วยกัน 4 โหมดคือโหมด 0 ถึงโหมด 3 แต่ที่มักใช้กันบ่อยมี 2 โหมดคือ
โหมด 1 ใช้ในการหน่วงเวลา
โหมด 2ใช้ในการกำหนดค่าอัตราบอด (Baud Rate)

ในการกำหนดโหมดกำหนดที่รีจิสเตอร์ TMOD

เมื่อกำหนดโหมด 1 สำหรับวงจรไทเมอร์ 0 ใช้คำสั่ง

 TMOD=0x01;        

เมื่อกำหนดโหมด 1 สำหรับวงจรไทเมอร์ 1 ใช้คำสั่ง

 TMOD=0x10;          

เมื่อกำหนดโหมด 1 สำหรับวงจรไทเมอร์ 0 และ วงจรไทเมอร์ 1 ใช้คำสั่ง

 TMOD=0x11;      

 

วงจรในโหมด 1 (จากรูปยกตัวอย่างเพียงวงจรไทเมอร์ 1เท่านั้น)

 

 บิตที่ใช้ควบคุมและตรวจสอบมี 2 บิตคือTR1 (วงจรไมเมอร์ 0 คือบิต TR0) ซึ่งเป็นบิตควบคุมการทำงาน(ตัดต่อสวิตช์ดังรูป) และบิตแสดงผลเมื่อทำงานครบคือ TF1ตัวอย่างโปรแกรมหน่วงเวลาดังนี้

void delay(void)
{
     int i;
    TMOD=0x10;
        for(i=0;i<50;i++)
        {
            TH1=0xDC;
            TL1=0x00;
            TF1=0;
               TR1=1;
              while(TF1==0)
                  {}
            TR1=0;
        }
}

 ซึ่งการกำหนดค่าในรีจิสเตอร์ TH,TL เป็นการกำหนดคาบเวลาในการทำงานในแต่ละครั้งของวงจรไทเมอร์

ค่า THTL คือค่าที่ต้องกำหนดลงในรีจิสเตอร์ สำหรับในการคำนวณจะคำนวณเป็นเลขฐานสิบก่อนเมื่อนำไปใช้งานถึงเปลี่ยนเป็นเลขฐาน 16 แล้วแยกใช้งานโดยสองหลักหลังจะกำหนดในรีจิสเตอร์ TLและสองหลักหน้าจะไว้ใน TH

ถ้าใช้คริสตอล 11.0592MHz และ 12MHz จะได้ดังนี้

ต่อครับ

ในการคำนวณจริงๆค่าที่ได้จะไม่ลงตัวทั้งนี้อันเนื่องมาจากค่าคริสตอล (ค่าในตารางเป็นค่าที่ปัดเศษแล้วครับ)

 

 โปรดติดตามบทความอื่นๆในตอนต่อไป
    ครูประภาส สุวรรณเพชร

 

Copyright © 2022 www.praphas.com. All Rights Reserved.
Joomla! is Free Software released under the GNU General Public License.