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