定時器是單片機(jī)系統(tǒng)的一個重點,但并不是難點,大家一定要完全理解并且熟練掌握定時器的應(yīng)用。
1) 時鐘周期 時鐘周期 T 是時序中最小的時間單位,具體計算的方法就是1/時鐘源頻率,我們 KST-51 單片機(jī)開發(fā)板上用的晶振是 11.0592 M,那么對于我們這個單片機(jī)系統(tǒng)來說,時鐘周期=1/11059200秒。
2) 機(jī)器周期 我們的單片機(jī)完成一個操作的最短時間。機(jī)器周期主要針對匯編語言而言,在匯編語言下程序的每一條語句執(zhí)行所使用的時間都是機(jī)器周期的整數(shù)倍,而且語句占用的時間是可以計算出來的,而 C 語言一條語句的時間是不確定的,受到諸多因素的影響。51單片機(jī)系列,在其標(biāo)準(zhǔn)架構(gòu)下一個機(jī)器周期是12個時鐘周期,也就是12/11059200秒?,F(xiàn)在有不少增強(qiáng)型的51單片機(jī),其速度都比較塊,有的1個機(jī)器周期等于4個時鐘周期,有的1個機(jī)器周期就等于1個時鐘周期,也就是說大體上其速度可以達(dá)到標(biāo)準(zhǔn)51架構(gòu)的3倍或12倍。因為我們是講標(biāo)準(zhǔn)的51單片機(jī),所以我們后邊的課程如果遇到這個概念,全部是指12個時鐘周期。
這兩個概念了解即可,下邊就來我們的重頭戲,定時器和計數(shù)器。定時器和計數(shù)器是單片機(jī)內(nèi)部的同一個模塊,通過配置 SFR(特殊功能寄存器)可以實現(xiàn)兩種不同的功能,我們大多數(shù)情況下是使用定時器功能,因此我們的課程也是主要來講定時器功能,計數(shù)器功能大家自己了解下即可。
顧名思義,定時器就是用來進(jìn)行定時的。定時器內(nèi)部有一個寄存器,我們讓它開始計數(shù)后,這個寄存器的值每經(jīng)過一個機(jī)器周期就會自動加1,因此,我們可以把機(jī)器周期理解為定時器的計數(shù)周期。就像我們的鐘表,每經(jīng)過一秒,數(shù)字自動加1,而這個定時器就是每過一個機(jī)器周期的時間,也就是 12/11059200秒,數(shù)字自動加1。還有一個特別注意的地方,就是鐘表是加到60后,秒就自動變成0了,這種情況在單片機(jī)或計算機(jī)里我們稱之為溢出。
那定時器加到多少才會溢出呢?后面會講到定時器有多種工作模式,分別使用不同的位寬(指使用多少個二進(jìn)制位),假如是16位的定時器,也就是2個字節(jié),最大值就是65535,那么加到65535后,再加1就算溢出,如果有其他位數(shù)的話,道理是一樣的,對于51單片機(jī)來說,溢出后,這個值會直接變成0。從某一個初始值開始,經(jīng)過確定的時間后溢出,這個過程就是定時的含義。