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