วันอาทิตย์ที่ 18 มกราคม พ.ศ. 2558

แผ่นเซ็ทSET TIMER INTERRUPT MCS51


แผ่นเซ็ทSET TIMER INTERRUPT MCS51
18/1/2558 SONGCHAI PRAPATRUNGSEE
 แผ่นเซ็ทSET TIMER INTERRUPT MCS51

    TMOD = TIMER MODE
GATE1
C/T1
M1
M0
GATE0
C/T0
M1
M0









    TCON = TIMER CONTROL             
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0









    IE = INTERRUPT ENABLE
EA
  -
ET2
ES
ET1
EX1
ET0
EX0









    IP = INTERRUPT PRIORITY        
  -
  -
PT2
PS
PT1
PX1
PT0
PX0









   TH1/TH0 = TIMER HIGH1/TIMER HIGH0

















   TL1/TL0 = TIMER LOW1/TIMER LOW0
















   


       สำหรับTIMER2จะเป็นเบอร์ที่ลงท้ายด้วย2
     T2MOD = TIMER2 MODE
   -
   -
   -
   -
   -
  -
T2OE
DCEN









     T2CON = TIMER2 CONTROL
TF2
EFX2 
RCLK
TCLK
EXEN2
TR2
C/T2
CP/RL2









                    
     TH2 = TIMER2 HIGH

















     TL2= TIMER2 LOW
















   
RCAP2H=RELOAD & CAPTURE 8บิทHIGH TIMER2








   1
   0
   1
   1
   0
   1
  1
  1

RCAP2L=RELOAD & CAPTURE 8บิทLOW TIMER2








   1
   1
   1
   1
   1
   1
   1
   0

==========================
    
  SFR=Special Function Register
หรือ รีจิสเตอร์พิเศษ ซึ่งในที่นี้จะเรียกว่ารีจิสเตอร์
รีจิสเตอร์ ที่เกี่ยวข้องมีดังนี้

TMOD = TIMER MODE มี8บิท ดังนี้
  GATE1 =บิท =ขาอินพุทของNOT GATE
ที่อยู่ภายในไมโครคอนโทรลเลอร์
 ถ้าเซ็ทเป็น1 หมายความว่าจะ Start/Stop Timer1
จากภายนอกด้วย ขา/INT1
  ถ้าเซ็ทเป็น0 หมายความว่าจะ Start/Stop Timer1
ภายในไมโครคอนโทรลเลอร์เท่านั้น
  C/T1 =COUNTER/TIMER1
  ถ้าเซ็ทเป็น1= COUNTER1 รับสัญญาณจากขาT1
  ถ้าเซ็ทเป็น0= TIMER1 ใช้คริสตัลต่อที่ขาXTAL1
กับขาXTAL2 เพื่อกำเนิดความถี่(OSC)
  M1 M0 อยู่ที่บิท5บิท4 คือการเซ็ทเลือกโหมด
  GATE0 =บิท =ขาอินพุทของNOT GATE
ที่อยู่ภายในไมโครคอนโทรลเลอร์
  ถ้าเซ็ทเป็น1 หมายความว่าจะ Start/Stop Timer0
จากภายนอกด้วย ขา/INT0
  ถ้าเซ็ทเป็น0 หมายความว่าจะ Start/Stop Timer0
ภายในไมโครคอนโทรลเลอร์เท่านั้น
  C/T0 =COUNTER/TIMER0
  ถ้าเซ็ทเป็น1= COUNTER0 รับสัญญาณจากขาT0
  ถ้าเซ็ทเป็น0= TIMER0 ใช้คริสตัลต่อที่ขาXTAL1
กับขาXTAL2 เพื่อกำเนิดความถี่(OSC)
  M1 M0 อยู่ที่บิท1บิท0 คือการเซ็ทเลือกโหมด
============================   
TCON = TIMER CONTROL มี8บิท ดังนี้
  TF1 =TIMER1 OVERFLOW
  TR1 =TIMER1 START/STOP
  TF0 =TIMER0 OVERFLOW
  TR0 =TIMER0 START/STOP
  IE1 =ทันที่ที่ไมโครคอนโทรลเลอร์ทำงาน
จะเข้าไปทำในฟังชันอินเทอร์รัพ1ครั้งก่อน
ถึงแม้ว่าที่ขา/INT1จะเป็นลอจิก1อยู่ก็ตาม
  IT1 =ถ้าเซ็ทเป็น1 =ACTIVE HIGH TO LOW
ถ้าเซ็ทเป็น0 =ACTIVE LOW

  ACTIVE HIGH TO LOW คือที่ขา/INT1
จะต้องเป็นลอจิก1ก่อนแล้วตามด้วยลอจิก0(กราวด์)
จึงจะทำงาน เมื่อทำงานเสร็จก็จะไม่ทำซ้ำอีก
  ACTIVE LOW หมายถึงที่ขา/INT1
ถ้าเป็นลอจิก0(กราวด์) จะทำงานซ้ำตลอดเวลา
  IE0 =ทันที่ที่ไมโครคอนโทรลเลอร์ทำงาน
จะเข้าไปทำในฟังชันอินเทอร์รัพ1ครั้งก่อน
ถึงแม้ว่าที่ขา/INT0จะเป็นลอจิก1อยู่ก็ตาม
  IT0 =ถ้าเซ็ทเป็น1 =ACTIVE HIGH TO LOW
ถ้าเซ็ทเป็น0 =ACTIVE LOW
  ACTIVE HIGH TO LOW คือที่ขา/INT0
จะต้องเป็นลอจิก1ก่อนแล้วตามด้วยลอจิก0(กราวด์)
จึงจะทำงาน เมื่อทำงานเสร็จก็จะไม่ทำซ้ำอีก
  ACTIVE LOW หมายถึงที่ขา/INT0
ถ้าเป็นลอจิก0(กราวด์) จะทำงานซ้ำตลอดเวลา
================================
IE = INTERRUPT ENABLE มี8บิท ดังนี้
  EA  =Enable Access เปิดให้สามารถเข้าถึงอินเทอร์รัพ
  บิท7 =ยังไม่เปิดใช้งาน
  ET2 =Enable Timer2 เปิดใช้งานอินเทอร์รัพTimer2
  ES =Enable Serial เปิดใช้งานอินเทอร์รัพพอทอนุกรม
  ET1 =Enable Timer1 เปิดใช้งานอินเทอร์รัพTimer1
  EX1 =Enable External1  เปิดใช้งานอินเทอร์รัพ
จากภายนอก ขา INT1  
  ET0 =Enable Timer0  เปิดใช้งานอินเทอร์รัพTimer0
  EX0 =Enable External0  เปิดใช้งานอินเทอร์รัพ
จากภายนอก ขา INT0
================================
  เส้นทางVECTOR INTERRUPT
EA
  -
ET2
ES
ET1
EX1
ET0
EX0

  ในกรณีที่ไม่ได้เซ็ท รีจิสเตอร์IP
บิท0 มีความสำคัญสูงสุดหมายความว่าทำงานก่อน
บิทถัดมาจะมีความสำคัญรองลงมาตามลำดับ
EX0 คืออินเทอร์รัพภายนอกขา/INT0 = interrupt 0
ET0 คือเคาน์เทอร์/ไทม์เมอร์0 = interrupt 1
EX1 คืออินเทอร์รัพภายนอกขา/INT1 = interrupt 2
ET1 คือเคาน์เทอร์/ไทม์เมอร์1 = interrupt 3
ES คือSerial Interrupt = interrupt 4
ET2 คือเคาน์เทอร์/ไทม์เมอร์2 = interrupt 5
=========================
  IP =INTERRUPT PRIORITY
ถ้าเซ็ทเป็น1 ที่บิทใด บิทนั้นจะมีความสำคัญสูงสุด
นั่นหมายถึงทำงานก่อน
ในกรณีที่ใช้อินเทอร์รัพหลายแหล่ง

TH2 =รีจิสเตอร์ไทม์เมอร์2 =8บิทบน
TH1 =รีจิสเตอร์ไทม์เมอร์1 =8บิทบน
TH0 =รีจิสเตอร์ไทม์เมอร์0 =8บิทบน

TL2 =รีจิสเตอร์ไทม์เมอร์2 =8บิทล่าง
TL1 =รีจิสเตอร์ไทม์เมอร์1 =8บิทล่าง
TL0 =รีจิสเตอร์ไทม์เมอร์0 =8บิทล่าง

    สำหรับTIMER2 คือเบอร์ที่ลงท้ายด้วย2
  T2MOD = TIMER MODE มี8บิท ดังนี้
  บิท7-2 =ยังไม่เปิดใช้งาน
  T2OE = Timer 2 Output Enable bit
  DCEN =Down Counter Enable
ถ้าเซ็ทเป็น0 นับขึ้น  ถ้าเซ็ทเป็น1 นับลง

   T2CON = TIMER2 CONTROLมี8บิท ดังนี้
TF2 = Timer 2 overflow flag
EFX2 = Timer 2 external flag
RCLK = Receive clock enable
TCLK = Transmit clock enable
EXEN2 = Timer 2 external enable
TR2 = Start/Stop Timer 2
C/T2 =เซ็ท1เลือกCOUNTER2 เซ็ท0เลือกTIMER2
CP/RL2 = Capture/Reload select
                 เซ็ท1เลือกCAPTURE  เซ็ท0เลือกRELOAD
=================================
INTERRUPT=อินเทอร์รัพ
อินเทอร์รัพ คือการขัดจังหวะเพื่อทำงานก่อน
หมายถึงไม่ต้องมาตรวจสอบสวิทช์ว่ามีการกดหรือยัง
เพราะการตรวจสวิทช์จะทำให้เสียเวลา
แต่การใช้อินเทอร์รัพจากภายนอกเป็นสวิทช์
จะทำงานทันทีโดยไม่เสียเวลาในการตรวจสอบ

อินเทอร์รัพมี 6 แหล่ง(6 Vector Interrupt)
  อินเทอร์รัพภายนอก ขา /INT0 เซ็ทที่บิท EX0
อินเทอร์รัพเมื่อขา/INT0 เป็นลอจิก0
  อินเทอร์รัพภายใน Timer 0 เซ็ทที่บิท ET0
อินเทอร์รัพเมื่อ รีจิสเตอร์ ที่ใช้ในการนับของ Timer 0
เกิดการนับค่าเกิน  (Over Flow) 
  อินเทอร์รัพภายนอก ขา /INT1 เซ็ทที่บิท EX1
อินเทอร์รัพเมื่อขา/INT1 เป็นลอจิก0
  อินเทอร์รัพภายใน  Timer 1 เซ็ทที่บิท ET1
อินเทอร์รัพเมื่อ รีจิสเตอร์ ที่ใช้ในการนับของ Timer 1
เกิดการนับค่าเกิน  (Over Flow) 
  อินเทอร์รัพภายนอก SERIAL เซ็ทที่บิท ES 
อินเทอร์รัพเมื่อมีข้อมูลครบ8บิท
เข้ามายังขาไมโครคอนโทรลเลอร์ ทางพอร์ทอนุกรม
  อินเทอร์รัพภายใน  Timer 2 เซ็ทที่บิท ET2
อินเทอร์รัพเมื่อ รีจิสเตอร์ ที่ใช้ในการนับของ Timer 2
เกิดการนับค่าเกิน  (Over Flow) 
SFR = รีจิสเตอร์พิเศษ ซึ่งในที่นี้จะเรียกว่ารีจิสเตอร์
ที่ทำหน้าที่ควบคุมการอินเทอร์รัพคือ
รีจิสเตอร์IE  และ รีจิสเตอร์IP
ซึ่งมีขนาด 8 บิต สามารถเข้าถึงในระดับบิต
===========================
ในC51
ไม่สามารถเซ็ทเป็นเลขฐานสองได้
สามารถเซ็ทเป็นเลขฐานสิบหก และระดับบิทได้

         

ไม่มีความคิดเห็น: