計時中斷

Report
單元六
計時中斷系統
1
89S51的中斷系統
89S51的中斷系統包含了下列五種中斷:
中斷種類
中斷向量
外部中斷0(INT0)
03H
外部中斷1(INT1)
13H
計時/計數中斷0(TIMER0)
0BH
計時/計數中斷1(TIMER1)
1BH
串列中斷
23H
2
計時中斷(TIMER0、TIMER1)
利用石英振盪產生的脈波或外部時脈觸發單
晶片內部的上數計數器,再利用計數器的溢
位訊號做為中斷源。
OSC
除12
計時
C/T=0
TL0/TL1 TH0/TH1
接腳T0/T1
C/T=1
計數
TR0/TR1
TF0/TF1
溢位中斷請求
至中斷控制系統
共16位元之計數器
使用時由TMOD設定
GATE
接腳INT0/INT1
可選擇計數器訊號源
可透過軟體設定為16、
13及8位元的計數器
3
89S51中計時系統設定
OSC
計時
C/T=0
除12
TL0/TL1 TH0/TH1
C/T=1
計數
接腳T0/T1
溢位中斷請求
至中斷控制系統
TF0/TF1
共16位元之計數器
使用時由TMOD設定
TR0/TR1
GATE
接腳INT0/INT1
7
6
5
4
3
2
1
0
GATE
C/T
M1
M0
GATE
C/T
M1
M0
TIMER0
TIMER1
TMOD暫存器
4
TCON暫存器
為外部中斷及計時計數中斷共用之設定及中
斷訊號存放之暫存器。
7
6
5
4
3
2
1
0
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
TCON暫存器
和TIMER中斷有關
和INT中斷有關
5
IE暫存器
為89S51所有中斷的致能和禁能的控制中心,
要使單晶片的中斷系統能運作,就必需透過
設定IE暫存器的值來控制。
6
計時器Timer0起始設定範例
將Timer0設為計時器且每0.01秒中斷1次
設定TMOD
設定TL及TH之初值
令EA=1
(將中斷致能總開關
打開)
令ET=1
(指定計時計數的中
斷請求致能)
設定TR=1
(將CLOCK接到計數
器,此時計數器開始
計數)
步驟一:設定TMOD值
MOV
TMOD, #00010001B
步驟二:計算TL及TH之初值
以12M石英振盪,故機械週期為1uS,初
值應為:
65536-10000=55536=D8F0H
TH=D8H、TL=F0H
步驟三:致能總開關EA
SETB EA
步驟四:致能Timer0開關
SETB ET0
步驟五:將脈波接通至TL和TH計時器
SETB TR0
7
計時器Timer0中斷後設定
設定TL及TH之初值
步驟一:配合設定時之初值
65536-10000=55536=D8F0H
TH=D8H、TL=F0H
自訂程式內容
RETI指令返回
步驟二:返回主程式
RETI
8
END
9

similar documents