51單片機——中斷
四、定時器/計數(shù)器
1.計數(shù)的定義:
計數(shù)是指對外部事件進行計數(shù),外部事件的發(fā)生以輸入脈沖的形式表示,因此計數(shù)功能的實質(zhì)就是對外來的脈沖進行計數(shù),在單片機中對應(yīng)引腳T0和T1,兩個脈沖輸入端。
外部輸入的脈沖在負跳變時有效(即外部脈沖由1變化到0),計數(shù)器加1.
2.定時器:
定時器是通過計數(shù)器的計數(shù)來實現(xiàn)的,不過此時的計數(shù)脈沖來自單片機的內(nèi)部,因此定時器的實質(zhì)是對內(nèi)部脈沖的計數(shù),在單片機中,每個機器周期產(chǎn)生一次計數(shù)脈沖,計數(shù)器加1.
3.工作方式控制寄存器TMOD:
TMOD的低半字節(jié)(D0,D1,D2,D3)用來控制定時器/計數(shù)器0
TMOD的高半字節(jié)(D4,D5,D6,D7)用來控制定時器/計數(shù)器1
對TMOD中的內(nèi)容說明:
GATE——門控制?! ?p> GATE=1時,由外部中斷引腳INT0、INT1來啟動定時器T0、T1。
當INT0引腳為高電平時TR0置位,啟動定時器T0;
當INT1引腳為高電平時TR1置位,啟動定時器T1。
GATE=0時,僅由TR0,TR1置位分別啟動定時器T0、T1。
C/T——功能選擇位
C/T=0時為定時功能,C/T=1時為計數(shù)功能。
M0、M1——方式選擇功能
由于有2位,因此有4種工作方式:
?4.根據(jù)單片機晶振,所選TMOD的的工作方式,所要定的時間,來確定THO和TLO所要賦予的初值:
(以12M晶振,工作方式1即16位計數(shù)器為例,設(shè)所定時間為Xus(16為計數(shù)器最大數(shù)65536,即65536us,若所?定時間大于65535,則要用if語句控制,現(xiàn)假設(shè)X<65535))
1.時鐘周期的時間t=1/12M=1/12 us
2.機器周期的時間T=12*1/12=1 us
3.因為每經(jīng)過一個機器周期計數(shù)器+1,所以,計數(shù)器+1,經(jīng)過的時間為 1 us。
若所定時間為X,則要求經(jīng)過Xus,中斷響應(yīng),又因為16位計數(shù)器要全部置1(即達到65535)+1后,中斷才會響應(yīng),所以,初值=(65536-X)
4.將初值轉(zhuǎn)化為16進制碼,分別付給TH0和TL0
eg:所定時間5ms
初值=(65536-5000)=60536=EC78
TH0=0xEC;TL0=0x78;
(當工作方式不同時,TH0/TL0的賦值也不同,個人覺得有了16位計數(shù)器了,其余的沒什么用,不介紹了)
5.寫程序時另一種THO/TLO賦值方法
TH0=(65536-20000)/256;
TL0=(65536-20000)%6;
這樣設(shè)置,每經(jīng)過20ms,發(fā)生一次中斷,中斷時間一般以秒為單位,所以經(jīng)過n次中斷即可。
五、附加?
參考鏈接:
http://blog.sina.com.cn/s/blog_a05b986d010152h3.html?
http://wenku.baidu.com/view/946e11949ec3d5bbfd0a74b8.html
http://wenku.baidu.com/view/25971fbefd0a79563c1e725f.html
?http://bbs.elecfans.com/jishu_210382_1_1.html
http://wenku.baidu.com/view/3e770240a8956bec0975e395.html?
評論