Counter 51
Lab 2 (Timer/Counter) ข้อ 1 (4 กันยายน 2550) Microprocessor Report




Ninja!
Memories Of microprocessor
microprocessor
Lab 2 (Timer/Counter) ข้อ 1 (4 กันยายน 2550)
2 ตุลาคม 2550
จงอธิบายหน้าที่และความสำคัญของ Timer/Counter ในระบบMicroprocessor โดยละเอียด 



Timer : คือวงจรที่นับสัญญาณนาฬิกาจากวงจร Oscillator ที่อยู่ภายใน
Counter : คือวงจรที่นับสัญญาณนาฬิกาจากภายนอก 
    การเลือกว่าจะใช้งานเป็น Timer หรือ Counter จะต้องพิจารณางานที่เราใช้ เช่น ถ้าเราต้องการใช้งานนาฬิกา หรือฐานเวลา เราต้องใช้งานเป็น Timer แต่ถ้าเราต้องการนับความถี่หรือสัญญาณนาฬิกา เราต้องใช้งานเป็น Counter

              รีจิสเตอร์ที่เกี่ยวข้องกับ Timer/Counter
1) Timer Register : TH0 , TL0 , TH1 , TL1
ตำแหน่งหน่วยความจำภายในคือ 8CH , 8AH , 8DH , 8BH
    ใน 8051 ปกติจะมีวงจร Timer/Counter อยู่ 2 ชุดโดยเป็นรีจิสเตอร์ขนาด 8 บิตสองตัวต่อเป็นขนาด 16 บิตทำให้ค่าที่นับได้สูงสุดคือ 16 บิต ซึ่งค่าที่เก็บจะอยู่ในรีจิสเตอร์ TH0 , TL0 สำหรับ Timer0 High Byte , Low Byte ตามลำดับ และรีจิสเตอร์ TH1 , TL1 สำหรับ Timer1 High Byte , Low Byte ตามลำดับ
    การใช้งานเราสามารถใช้งานทั้งเป็นขนาด 16บิต หรือใช้งานที่ละ 8 บิตได้

2) TMOD : Timer/Counter Mode Register
ตำแหน่งหน่วยความจำภายในคือ 89H
   เป็นรีจิสเตอร์ขนาด 8 บิตที่ควบคุม mode ในการทำงานของ Timer โดยมีรายละเอียดคือ

             

Gate : เป็นบิตที่ควบคุมให้ Timer ทำงานโดยถ้าบิตของ Timer x นี้ถูกกำหนด
       ให้เป็น 1 จะทำให้ Timer x ทำงานเมื่อขา INT x มีลอจิกเป็นหนึ่ง
       และบิต TR x มีลอจิกเป็น  1 ด้วย

C/T : จะเป็นการกำหนดว่าจะให้วงจร Timer ทำงานเป็น Timer หรือ 
      Counter โดยถ้าถูกกำหนดเป็น 1 จะทำงานเป็น Counter ถ้าถูกกำหนด
      เป็น 0 จะทำงานเป็น Timer

M1,M0 : จะเป็นบิตที่ใช้ในการกำหนด Mode ของ Timer/Counter โดยจะมี
        Mode ให้เลือกใช้งานได้ทั้งหมด 4  mode ตามตารางต่อไปนี้

 M1  M0    การทำงาน
  0  0    Mode 0 :จะเป็น Timer/Counter ขนาด 13 บิต โดยใช้ 8 
                  บิตบนมาจาก THx และ 5 บิตล่างมาจาก 5 บิตล่างของ
                  TLx
  0  1    Mode 1 :Timer/Counter ขนาด 16 บิต โดยใช้ 8 บิตบนมา
                  จาก THx และ 8 บิตล่างมาจาก 8 บิตของ TLx
  1  0    Mode 2 :Timer/Counter ขนาด 8 บิต โดยจะใช้ TLx ใน
                  การนับจนกระทั่งเกิดการ Over Flow ก็จะไปเอาค่า
                  (Reloaded)จาก THxไปยัง TLxแล้วเริ่มต้นนับต่อไป
  1  1    Mode 3 :การทำงานของ Timer0 และ Timer1 จะแยกกัน  
                  ใน Mode3 นี้ Timer1 จะไม่ทำงาน ส่วน Timer0
                  จะงานโดยแบ่งออกเป็น 2 ส่วนเหมือนกับว่ามี
                  Timer/Counter อยู่ 2 ตัวคือ TL0 กับ TH0 โดย
                    - TL0 จะนับสัญญาณนาฬิกาจากภายนอก
                          (Counter) หรือสัญญาณนาฬิกาจากภาย
                          ใน(Timer) ก็ได้
                    - TH0 จะนับสัญญาณนาฬิกาจากภายใน(Timer) 
                          เท่านั้น

3) TCON :Timer Control Register
ตำแหน่งหน่วยความจำภายในคือ 88H
     จะทำหน้าที่ควบคุมการทำงานและคือค่าสภาวะการทำงานต่าง ๆ ของ Timer/Counter
                                                 
           
IT0 :Interrupt0 เป็นบิตที่ใช้สำหรับกำหนดวิธีการขัดจังหวะโปรแกรมของ
     สัญญาณจาก External Interrupt0(INT0)โดยถ้าเป็น 1จะเกิดการ
     ขัดจังหวะเมื่อสัญญาณที่ขา INT0 เปลี่ยนจาก 1 เป็น 0 ถ้าเป็น 0 จะเกิดการ
     ขัดจังหวะเมื่อสัญญาณที่ขา INT0 เปลี่ยน เป็น 0

IE0 :บิตนี้จะเป็น 1 เมื่อสัญญาณที่ขา INT0 เป็นไปตามที่กำหนดใน IT0 แล้วทำ
     ให้เกิดการขัดจังหวะแล้วโปรแกรมตอบสนองการขัดจังหวะเริ่มทำงาน จะทำให้บิต
     นี้เป็น 0

IT1 :Interrupt1 เป็นบิตที่ใช้สำหรับกำหนดวิธีการขัดจังหวะโปรแกรมของ
     สัญญาณจาก External Interrupt0(INT1)โดยถ้าเป็น 1 จะเกิดการ
     ขัดจังหวะเมื่อสัญญาณที่ขา INT1 เปลี่ยนจาก 1 เป็น 0 ถ้าเป็น 0 จะเกิดการ
     ขัดจังหวะเมื่อสัญญาณที่ขา INT1 เปลี่ยน เป็น 0

IE1 :บิตนี้จะเป็น 1 เมื่อสัญญาณที่ขา INT1 เป็นไปตามที่กำหนดใน IT1แล้วทำให้
     เกิดการขัดจังหวะแล้วโปรแกรมตอบสนองการขัดจังหวะเริ่มทำงาน จะทำให้บิต
     นี้เป็น 0

TR0 :Timer0 Run Control เป็นบิตสำหรับสั่งให้ Timer เริ่มทำงานโดย
     เมื่อบิตนี้เป็น0 Timerไม่ทำการนับไม่ว่าจะอยู่ในสถานะใดๆ แต่เมื่อเป็น 1 การ
     ทำงานของTimer จะขึ้นอยู่กับขา INT0 และบิต GATE

TF0 :Timer0 Overflow เป็นบิตสำหรับแสดงว่าการนับ Timer นับได้ถึงค่าสูง
     สุดที่สามารถนับได้เช่นใน Mode2 ที่มีการนับขนาด 16 บิตจะนับได้สูงสุด ถึง 
     FFFFH เมื่อทำการนับครั้งจะเกิดการ Overflow คือบิต TF0 จะเป็น 1
     และการนับจะกลับไปเริ่มต้นที่ 0 เมื่อโปรแกรมกระโดดไปไปทำงานที่โปรแกรม
     ตอบสนอง Interrupt จะทำให้บิตนี้เป็น 0

TR1 :Timer1 Run Control จะเหมือนกับ TR0แต่บิตนี้จะใช้งานสำหรับ
     Timer1

TF1 :Timer1 Overflowจะเหมือนกับ TR0 แต่บิตนี้จะใช้งานสำหรับ Timer1


posted @ 21:35:07 น. | Not Allow Comments




YourName: (* Require)
www:
* กดครั้งเดียวพอนะครับ


Privacy policy | Terms | Disclaimer | Contact
Copyright © Story owner & StoryThai.com. All rights reserved.