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