【C51】單片機(jī)定時(shí)器介紹
標(biāo)準(zhǔn)51架構(gòu)的單片機(jī)有2個(gè)定時(shí)器 :T0 和 T1,他們2個(gè)的用法幾乎一樣。下面主要講T0定時(shí)器的用法。
初步認(rèn)知定時(shí)器 和 計(jì)數(shù)器 都是單片機(jī)中同一個(gè)模塊。他們的實(shí)質(zhì)都是: 加法存儲(chǔ)計(jì)數(shù)器。對(duì)于計(jì)數(shù)器很好理解,每來一個(gè)信號(hào)(信號(hào)從P3.4 或者P3.5輸入),就加1,以此達(dá)到計(jì)數(shù)的目的。
對(duì)于定時(shí)器,每隔1個(gè)機(jī)器周期 加 1,假如(只是假如)一個(gè)機(jī)器周期為 1ms , 當(dāng)加到1000時(shí),我們就認(rèn)為經(jīng)過了1s,這就是定時(shí)器的原理。
加法存儲(chǔ)寄存器THx & TLx
定時(shí)器依賴計(jì)數(shù),需要把累計(jì)增加的那個(gè)量存儲(chǔ)在某個(gè)地方,這就是THx和TLx(x 可以是 0 或者1)2個(gè)8位寄存器的的職責(zé)。
T0和T1都擁有一對(duì)加法存儲(chǔ)寄存器。
T0 對(duì)應(yīng):TH0,TL0
T1 對(duì)應(yīng) : TH1 , TL1
在reg51.h頭文件中我們發(fā)現(xiàn)這4個(gè)寄存器的定義:
sfr TL0 = 0x8A; // TL中的L是LOW的意思,代表低位,同理H代表HIGH高位。 sfr TL1 = 0x8B; sfr TH0 = 0x8C; sfr TH1 = 0x8D;
他們可以在程序中直接使用,復(fù)位值都是 0 。
當(dāng)一直累加,使得他們保存不了太大的數(shù)據(jù)而發(fā)生溢出時(shí),就會(huì)引發(fā)中斷(后面講中斷)。并且對(duì)應(yīng)的TFx溢出標(biāo)志位會(huì)置為1,(沒有溢出的情況下是0)。
如果不使用中斷去處理溢出這個(gè)事件,那么我們就必須通過代碼指令讓TFx重置為 0 ,并讓THx和TLx回歸初始值,準(zhǔn)備然后進(jìn)入下一輪周期的計(jì)數(shù)。
.... if(TF0==1) //如果T0 溢出了 { TF0=0; //重新初始化 TH0 和 TL0 //說明過了一個(gè)溢出周期了 }
2個(gè)重要的寄存器:TMOD 和 TCON
復(fù)位時(shí)所有位全 為 0
TFx:溢出標(biāo)志位。溢出時(shí)置1。正常為0。
TRx:計(jì)數(shù)器/定時(shí)器 啟動(dòng)停止控制位 。R是run的意思。 TR0 = 1 開啟定時(shí)器0,為TR0 = 0 則停止。
低4位與外部中斷相關(guān),這里用不到,先不用看。
復(fù)位時(shí)所有位全 為 0
高4位是定時(shí)器T1相關(guān)的,低4位是T0 相關(guān)的。
以T0來說明。
GATE: 門控制位
C/T : 定時(shí)器/計(jì)數(shù)器切換位。 1為計(jì)數(shù)器模式, 0 為定時(shí)器模式。
②處 C/T = 0 表示為定時(shí)器模式,觸發(fā)信號(hào)為①處的單片機(jī)內(nèi)部時(shí)鐘信號(hào)。(若②處CT = 1,則觸發(fā)信號(hào)為Tn腳,信號(hào)從P3.4 或者P3.5輸入單片機(jī))
③處表明,信號(hào)能觸發(fā)使加法計(jì)數(shù)器加1,還得受④處控制。不然時(shí)鐘信號(hào)是不能讓加法計(jì)數(shù)器累加的。 ④處這個(gè)是與門,TRn必須為1,表明我們要開啟定時(shí)器。同時(shí)GATE為0,通過非門后為1,再通過或門,也是1,那么就讓③處控制起來了。
(若GATE為1,那么,定時(shí)器的啟動(dòng)停止受 TRx和 INTx 共同控制。 )
于是我們需要:
TRn 為 1
GATE 為 0
INTn 為 X(X表示任意的意思,do not care)
加法存儲(chǔ)寄存器的工作模式,是由M0和M1共同來決定的
M1 M0 模式0 1 TH和TL2個(gè)組成16位計(jì)數(shù)存儲(chǔ)器模式
1 0 TH負(fù)責(zé)初始化TL,TL計(jì)數(shù)。8位重裝模式
0 0 THx的8位和TLx的位5組成13位加法計(jì)數(shù)器(很少用)
1 1 基本不用
時(shí)鐘周期和機(jī)器周期
順便提一下:標(biāo)準(zhǔn)C51的1個(gè)機(jī)器周期為12個(gè)時(shí)鐘周期(增強(qiáng)型51單片機(jī)的機(jī)器周期會(huì)短一些,cc2530只有的機(jī)器周期只等于1個(gè)時(shí)鐘周期)。
如果晶振的頻率是11.0592MHz,那么時(shí)鐘周期就是 1 / (11.0592x10^6) 秒 (1MHz = 10^6Hz)
評(píng)論
查看更多