51單片機(jī)——定時(shí)/計(jì)數(shù)器
一.定時(shí)器操作步驟
二.工作方式控制寄存器TMOD
TMOD的低半字節(jié)(D0,D1,D2,D3)用來(lái)控制定時(shí)器/計(jì)數(shù)器0
本文引用地址:http://m.butianyuan.cn/article/201611/321840.htmTMOD的高半字節(jié)(D4,D5,D6,D7)用來(lái)控制定時(shí)器/計(jì)數(shù)器1
對(duì)TMOD中的內(nèi)容說(shuō)明:
GATE——門控制
GATE=1時(shí),由外部中斷引腳INT0、INT1來(lái)啟動(dòng)定時(shí)器T0、T1。
當(dāng)INT0引腳為高電平時(shí)TR0置位,啟動(dòng)定時(shí)器T0;
當(dāng)INT1引腳為高電平時(shí)TR1置位,啟動(dòng)定時(shí)器T1。
GATE=0時(shí),僅由TR0,TR1置位分別啟動(dòng)定時(shí)器T0、T1。
C/T——功能選擇位
C/T=0時(shí)為定時(shí)功能,
C/T=1時(shí)為計(jì)數(shù)功能。 ?
M0、M1——方式選擇功能
由于有2位,因此有4種工作方式:
三.根據(jù)單片機(jī)晶振,所選TMOD的的工作方式,所要定的時(shí)間,來(lái)確定THO和TLO所要賦予的初值:
(以12M晶振,工作方式1即16位計(jì)數(shù)器為例,設(shè)所定時(shí)間為Xus(16為計(jì)數(shù)器最大數(shù)65536,即65536us,若所?定時(shí)間大于65535,則要用if語(yǔ)句控制,現(xiàn)假設(shè)X<65535))
1.時(shí)鐘周期的時(shí)間t=1/12M=1/12 us
2.機(jī)器周期的時(shí)間T=12*1/12=1 us
3.因?yàn)槊拷?jīng)過一個(gè)機(jī)器周期計(jì)數(shù)器+1,所以,計(jì)數(shù)器+1,經(jīng)過的時(shí)間為 1 us。
若所定時(shí)間為X,則要求經(jīng)過Xus,中斷響應(yīng),又因?yàn)?6位計(jì)數(shù)器要全部置1(即達(dá)到65535)+1后,中斷才會(huì)響應(yīng),所以,初值=(65536-X)
4.將初值轉(zhuǎn)化為16進(jìn)制碼,分別付給TH0和TL0
eg:所定時(shí)間5ms
初值=(65536-5000)=60536=EC78
TH0=0xEC;TL0=0x78;
(當(dāng)工作方式不同時(shí),TH0/TL0的賦值也不同,個(gè)人覺得有了16位計(jì)數(shù)器了,其余的沒什么用,不介紹了)
5.寫程序時(shí)另一種THO/TLO賦值方法
TH0=(65536-20000)/256;
TL0=(65536-20000)%6;
這樣設(shè)置,每經(jīng)過20ms,發(fā)生一次中斷,中斷時(shí)間一般以秒為單位,所以經(jīng)過n次中斷即可。
四.中斷開啟
注:在用到中斷時(shí),必須要開總中斷EA,即EA=1。 //開總中斷
1.中斷允許控制寄存器IE
EX0(EX1):外部中斷允許控制位
EX0=1 外部中斷0開關(guān)閉合 //開外部中斷0
EX0=0 外部中斷0開關(guān)斷開
ET0(ET1):定時(shí)中斷允許控制位
ET0=1 定時(shí)器中斷0開關(guān)閉合 //開內(nèi)部中斷0
ET0=0 定時(shí)器中斷0開關(guān)斷開
ES: 串口中斷允許控制位
ES=1 串口中斷開關(guān)閉合 //開串口中斷
ES=0 串口中斷開關(guān)斷開
?2.定時(shí)器控制寄存器 TCON //控制外部中斷和定時(shí)器中斷
外部中斷:
IE0(IE1):外部中斷請(qǐng)求標(biāo)志位
當(dāng)INT0(INT1)引腳出現(xiàn)有效的請(qǐng)求信號(hào),此位由單片機(jī)自動(dòng)置1,cpu開始響應(yīng),處理終端,而當(dāng)入中斷程序后由單片機(jī)自動(dòng)置0.
//外部中斷,即外部中斷相應(yīng)的引腳接入低電平或下降沿信號(hào)時(shí),中斷開始響應(yīng)。
IT0(IT1):外部中斷觸發(fā)方式控制位 //選擇有效信號(hào)
IT0(IT1)=1:脈沖觸發(fā)方式,下降沿有效。
IT0(IT1)=0:電平觸發(fā)方式,低電平有效。
內(nèi)部中斷:
TF0(TF1):內(nèi)部定時(shí)器/計(jì)數(shù)器溢出中斷標(biāo)志位
當(dāng)定時(shí)器、計(jì)數(shù)器計(jì)數(shù)溢出的時(shí)候,此位由單片機(jī)自動(dòng)置1,cup開始響應(yīng),處理中斷,而當(dāng)進(jìn)入中斷程序后由單片機(jī)自動(dòng)置0.
//內(nèi)部中斷實(shí)際上就是利用內(nèi)部的計(jì)數(shù)器,只不過提供計(jì)數(shù)的脈沖來(lái)自單片機(jī)自身。
TR0(TR1):定時(shí)器/計(jì)數(shù)器啟動(dòng)位 //啟動(dòng)定時(shí)器
TR0(TR1)=1;啟動(dòng)定時(shí)器/計(jì)數(shù)器0
TR0(TR1)=0; 關(guān)閉定時(shí)器/計(jì)數(shù)器0
評(píng)論