單片機(jī)中,脈沖計(jì)數(shù)與時(shí)間之間的關(guān)系十分密切,每輸入一個(gè)脈沖,計(jì)數(shù)器的值就會(huì)自動(dòng)累加1,只要相鄰兩個(gè)計(jì)數(shù)脈沖之間的時(shí)間間隔相等,則計(jì)數(shù)值就代表了時(shí)間的流逝,因此,單片機(jī)中的和計(jì)數(shù)器其實(shí)是同一個(gè)物理的,只不過計(jì)數(shù)器記錄的是單片機(jī)外部發(fā)生的事情(接受的是外部脈沖),而定時(shí)器則是由單片機(jī)自身提供的一個(gè)非常穩(wěn)定的計(jì)數(shù)器,這個(gè)穩(wěn)定的計(jì)數(shù)器就是單片機(jī)上連接的部件;MCS-51單片機(jī)的晶振經(jīng)過12分頻之后提供給單片機(jī)穩(wěn)定脈沖;晶振的頻率是非常準(zhǔn)確的,所以單片機(jī)的計(jì)數(shù)脈沖之間的時(shí)間間隔也是非常準(zhǔn)確的。加1計(jì)數(shù)器輸入的計(jì)數(shù)脈沖有兩個(gè)來源,一個(gè)是由系統(tǒng)的輸出脈沖經(jīng)12分頻后送來;一個(gè)是T0或T1引腳輸入的外部脈沖源。 作為定時(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ù);所以,定時(shí)器的分辨率是時(shí)鐘振蕩頻率的1/12; 作為計(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由于檢測(cè)一個(gè)從1到0的下降沿需要2個(gè)機(jī)器周期,因此要求被采樣的電平至少要維持一個(gè)機(jī)器周期。當(dāng)晶振頻率為12MHz時(shí),最高計(jì)數(shù)頻率不超過1/2MHz,即計(jì)數(shù)脈沖的周期要大于2微秒。;計(jì)數(shù)器的最高頻率一般是時(shí)鐘振蕩頻率的1/24; 由此可知,不論是定時(shí)器還是計(jì)數(shù)器工作方式,定時(shí)器T0和T1均不占用CPU的時(shí)間,除非定時(shí)器/計(jì)數(shù)器T0和T1溢出,才可能引起CPU中斷,轉(zhuǎn)而去執(zhí)行中斷處理程序。所以說,定時(shí)器/計(jì)數(shù)器是單片機(jī)中效率高而工作靈活的部件。 51單片機(jī)定時(shí)器工作原理圖:
由上圖可見與定時(shí)器相關(guān)的寄存器主要有下面這幾個(gè):TMOD、 TCON、 TL0、TH0、TL1、TH1。下面介紹一下這幾個(gè)寄存器 16位加法計(jì)數(shù)器:
是定時(shí)計(jì)數(shù)器的核心,其中 TL0、TH0、是定時(shí)計(jì)數(shù)器0的底八位和高八位;TL1、TH1是定時(shí)計(jì)數(shù)器1的底八位和高八位;并且高八位和底八位可單獨(dú)使用。16位加法計(jì)數(shù)器主要是在設(shè)置定時(shí)計(jì)數(shù)器的初值時(shí)候使用 TMOD定時(shí)器工作模式及方式寄存器
GATE :定時(shí)操作開關(guān)控制位,當(dāng)GATE=1時(shí),INT0或INT1引腳為高電平,同時(shí)TCON中的TR0或TR1控制位為1時(shí),計(jì)時(shí)/計(jì)數(shù)器0或1才開始工作。若GATE=0,則只要將TR0或TR1控制位設(shè)為1,計(jì)時(shí)/計(jì)數(shù)器0或1就開始工作。 C/T :定時(shí)器或計(jì)數(shù)器功能的選擇位。C/T=1為計(jì)數(shù)器,通過外部引腳T0或T1輸入計(jì)數(shù)脈沖。C/T=0時(shí)為定時(shí)器,由內(nèi)部系統(tǒng)時(shí)鐘提供計(jì)時(shí)工作脈沖。 M1 M0:T0、T1工作模式選擇位
TCON定時(shí)器控制寄存器
TF1:定時(shí)器T1溢出標(biāo)志,可由程序查詢和清零,TF1也是中斷請(qǐng)求源,當(dāng)CPU響應(yīng)T1中斷時(shí)由硬件清零。 TF0:定時(shí)器T0溢出標(biāo)志,可由程序查詢和清零,TF0也是中斷請(qǐng)求源,當(dāng)CPU響應(yīng)T0中斷時(shí)由硬件清零。 TR1:T1充許計(jì)數(shù)控制位,為1時(shí)充許T1計(jì)數(shù)(定時(shí))。 TR0:T0充許計(jì)數(shù)控制位,為1時(shí)充許T0計(jì)數(shù)(定時(shí))。 IE1:外部中斷1請(qǐng)示源(INT1,P3.3)標(biāo)志。IE1=1,外部中斷1正在向CPU請(qǐng)求中斷,當(dāng)CPU響應(yīng)該中斷時(shí)由硬件清“0”。 IT1:外部中斷源1觸發(fā)方式控制位。此位為1設(shè)置為底電平觸發(fā),為0設(shè)置為下降沿觸發(fā)。 IE0:外部中斷0請(qǐng)示源(INT0,P3.2)標(biāo)志。IE0=1,外部中斷1正在向CPU請(qǐng)求中斷,當(dāng)CPU響應(yīng)該中斷時(shí)由硬件清“0”。 IT0:外部中斷源0觸發(fā)方式控制位。此位為1設(shè)置為底電平觸發(fā),為0設(shè)置為下降沿觸發(fā)。
|