新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 51單片機(jī)——中斷

51單片機(jī)——中斷

作者: 時間:2016-11-26 來源:網(wǎng)絡(luò) 收藏

四、定時器/計數(shù)器

1.計數(shù)的定義:

計數(shù)是指對外部事件進(jìn)行計數(shù),外部事件的發(fā)生以輸入脈沖的形式表示,因此計數(shù)功能的實(shí)質(zhì)就是對外來的脈沖進(jìn)行計數(shù),在單片機(jī)中對應(yīng)引腳T0和T1,兩個脈沖輸入端。

外部輸入的脈沖在負(fù)跳變時有效(即外部脈沖由1變化到0),計數(shù)器加1.

2.定時器:

定時器是通過計數(shù)器的計數(shù)來實(shí)現(xiàn)的,不過此時的計數(shù)脈沖來自單片機(jī)的內(nèi)部,因此定時器的實(shí)質(zhì)是對內(nèi)部脈沖的計數(shù),在單片機(jī)中,每個機(jī)器周期產(chǎn)生一次計數(shù)脈沖,計數(shù)器加1.

3.工作方式控制寄存器TMOD:

?工作方式控制寄存器TMOD

TMOD的低半字節(jié)(D0,D1,D2,D3)用來控制定時器/計數(shù)器0

TMOD的高半字節(jié)(D4,D5,D6,D7)用來控制定時器/計數(shù)器1

對TMOD中的內(nèi)容說明:

GATE——門控制。  

GATE=1時,由外部中斷引腳INT0、INT1來啟動定時器T0、T1。   

當(dāng)INT0引腳為高電平時TR0置位,啟動定時器T0;   

當(dāng)INT1引腳為高電平時TR1置位,啟動定時器T1。   

GATE=0時,僅由TR0,TR1置位分別啟動定時器T0、T1。

C/T——功能選擇位   

C/T=0時為定時功能,C/T=1時為計數(shù)功能。     

M0、M1——方式選擇功能   

由于有2位,因此有4種工作方式:

?計數(shù)器工作方式

?4.根據(jù)單片機(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.機(jī)器周期的時間T=12*1/12=1 us

3.因?yàn)槊拷?jīng)過一個機(jī)器周期計數(shù)器+1,所以,計數(shù)器+1,經(jīng)過的時間為 1 us。

若所定時間為X,則要求經(jīng)過Xus,中斷響應(yīng),又因?yàn)?6位計數(shù)器要全部置1(即達(dá)到65535)+1后,中斷才會響應(yīng),所以,初值=(65536-X)

4.將初值轉(zhuǎn)化為16進(jìn)制碼,分別付給TH0和TL0

eg:所定時間5ms

初值=(65536-5000)=60536=EC78

TH0=0xEC;TL0=0x78;

(當(dāng)工作方式不同時,TH0/TL0的賦值也不同,個人覺得有了16位計數(shù)器了,其余的沒什么用,不介紹了)

5.寫程序時另一種THO/TLO賦值方法

TH0=(65536-20000)/256;

TL0=(65536-20000)%6;

這樣設(shè)置,每經(jīng)過20ms,發(fā)生一次中斷,中斷時間一般以秒為單位,所以經(jīng)過n次中斷即可。

五、附加?

?中斷函數(shù)
?中斷修飾符

 

參考鏈接:

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?


上一頁 1 2 下一頁

關(guān)鍵詞: 51單片機(jī)中

評論


技術(shù)專區(qū)

關(guān)閉