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