單片機(jī)定時(shí)器(51為例)
計(jì)時(shí)器記錄單片機(jī)外部發(fā)生的事情;而定時(shí)器是單片機(jī)自身提供的計(jì)數(shù)器,51單片機(jī)經(jīng)過12分頻后提供給單片機(jī)的只有1MHZ的脈沖,脈沖時(shí)間間隔1微秒。MC51外接12M晶振(11.0592MHZ),12MHZ/12=1MHZ=1000000次/秒=1000000次/1000000微秒=1次/1微秒=1指令/1微秒。晶體每震蕩1次就產(chǎn)生1個(gè)脈沖,花費(fèi)1微秒,執(zhí)行一次指令。
單片機(jī)中的時(shí)間概念就是根據(jù)脈沖數(shù)量得出來的。1脈沖=1微秒=1機(jī)器周期=1指令。
MCS-51單片機(jī)定時(shí)器/計(jì)數(shù)器的簡(jiǎn)單結(jié)構(gòu)圖:
8051有2個(gè)定時(shí)器T0、T1,分別由寄存器TL0,TH0和TH1,TL1構(gòu)成。作為定時(shí)器使用時(shí),定時(shí)器計(jì)數(shù)8051單片機(jī)片內(nèi)振蕩器輸出經(jīng)過12分頻后的脈沖個(gè)數(shù),即:每個(gè)機(jī)器周期使定時(shí)器T0/T1的寄存器值自動(dòng)累加1,直到溢出,溢出后繼續(xù)從0開始循環(huán)計(jì)數(shù);
計(jì)數(shù)器使用時(shí):通過引腳T0(P3.4)或T1(P3.5)對(duì)外部脈沖信號(hào)進(jìn)行計(jì)數(shù),當(dāng)輸入的外部脈沖信號(hào)發(fā)生從1到0的負(fù)跳變時(shí),計(jì)數(shù)器的值就自動(dòng)加1;計(jì)數(shù)器的最高頻率一般是時(shí)鐘振蕩頻率的1/24;
每個(gè)定時(shí)器/計(jì)數(shù)器工作模式有4種。
在模式0、1和2時(shí),T0和T1的工作模式相同;在模式3時(shí),兩個(gè)定時(shí)器/計(jì)數(shù)器的工作模式不同;
模式0:TL0低5位,TH0全部8位構(gòu)成13位計(jì)數(shù)器/定時(shí)器。定時(shí)或計(jì)數(shù)脈沖個(gè)數(shù)加到TL0上,從預(yù)先設(shè)置的初值(時(shí)間常數(shù))開始累加,不斷遞增1;當(dāng) TL0計(jì)滿后,向TH0進(jìn)位,直到13位寄存器計(jì)滿溢出;溢出時(shí)自動(dòng)清零,切中斷標(biāo)記TF0置1;若需重新計(jì)數(shù),則啟動(dòng)相關(guān)指令重置質(zhì)檢常數(shù),且中斷標(biāo)記TF0置0;
模式1:
由TL0和TH1共同構(gòu)成的16位計(jì)數(shù)器/定時(shí)器。
工作模式3:
由于定時(shí)器/計(jì)數(shù)器T1沒有工作模式3,如果把定時(shí)器/計(jì)數(shù)器T0設(shè)置為工作模式3,那么TL0和TH0將被分割成兩個(gè)相互獨(dú)立的8位定時(shí)器/計(jì)數(shù)器;工作模式3的結(jié)構(gòu)如下圖:
四、定時(shí)器/計(jì)數(shù)器的定時(shí)/計(jì)數(shù)范圍
工作方式0——13位定時(shí)器 / 計(jì)數(shù)器 工作 模式,最多可計(jì)數(shù)2的13次方 次,即:8192次,[0,8191];
工作方式1——16位定時(shí)器/計(jì)數(shù)器 工作 模式,最多可計(jì)數(shù)2的16次方 次,即:65536次,[0,65535];
工作方式2——8位定時(shí)器/計(jì)數(shù)器工作模式,計(jì)算次數(shù)最多為2^8,即256,,[0,255];
工作方式3——8位定時(shí)器/計(jì)數(shù)器工作模式 ,計(jì)算次數(shù)最多為2^8,即256,,[0,255];
預(yù)置數(shù)的計(jì)算公式:預(yù)置數(shù)=最大值-需要計(jì)數(shù)的次數(shù);
五、計(jì)數(shù)/定時(shí)器的控制寄存器分別是TMOD H和TCON,它們都在特殊寄存器區(qū);
1、工作模式控制寄存器TMOD(89h):
2、工作狀態(tài)控制寄存器TCON(88H):
IT0:外部中斷0觸發(fā)控制位,1表示邊沿,0表示電平;
IE0:外部中斷申請(qǐng)標(biāo)志位,1表示有;
EX0:外部中斷0允許位,1表示允許,
ET0:定時(shí)/計(jì)數(shù)器0中斷允許位,1表示允許溢出中斷
六、定時(shí)器/計(jì)數(shù)器的初始化
注:由于8051單片機(jī)的定時(shí)器/計(jì)數(shù)器使用的時(shí)鐘脈沖是外部晶振(12MHZ)經(jīng)過12分頻(12MHZ/12=1MHZ)之后的頻率,所以,一個(gè)時(shí)鐘脈沖就是1微秒;所以,8192個(gè)脈沖=8192微秒=8.192毫秒; 65536個(gè)脈沖=65536微秒=65.536毫秒; 256個(gè)脈沖=256微秒=0.256毫秒;
1、設(shè)置定時(shí)器/計(jì)數(shù)器的工作模式TMOD(常用的是模式1:TMOD=0x01);
2、裝入預(yù)置數(shù)到THx和TLx中(THx=TLx=MAX(8192/65536/256)-計(jì)數(shù)次數(shù));
3、如果工作在中斷方式,則需要開定時(shí)器/計(jì)數(shù)器的中斷TCON中的標(biāo)志位:TF0/TF1=0/1;
4、啟動(dòng)定時(shí)器/計(jì)數(shù)器:TR0/TR1=1;