แผ่นเซ็ท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
ไม่สามารถเซ็ทเป็นเลขฐานสองได้
สามารถเซ็ทเป็นเลขฐานสิบหก และระดับบิทได้
ไม่มีความคิดเห็น:
แสดงความคิดเห็น