學單片機的同學肯定都知道這個定時器,本文今天給大家詳細的介紹一下8051系列的單片機定時器。其實單片機中的定時器和計數器其實是同一個物理的電子元件。只不過計數器記錄的是單片機外部發生的事情(接受的是外部脈沖),而定時器則是由單片機自身提供的一個非常穩定的計數器,這個穩定的計數器就是單片機上連接的晶振部件,這點我們是需要與這個定時器區分一下,以免混淆了。
關于8051系列單片機有兩個定時器:T0和T1,分別稱為定時器和定時器T1,這兩個定時器都是16位的定時器/計數器;8052系列單片機增加了第三個定時器/計數器T2;它們都有定時或事件計數功能,常用于時間控制、延時、對外部時間計數和檢測等場合。

我們來看看關于這個定時器的工作模式:
除了可選擇定時器的這兩種工作方式外,每個定時器都有4種工作模式
在模式0、1和2時,T0和T1的工作模式相同;在模式3時,兩個定時器/計數器的工作模式不同
工作模式0:
由TL0的低5位和TH0的全部8位共同構成一個13位的定時器/計數器;定時器/計數器啟動后,定時或計數脈沖個數加到TL0上,從預先設置的初值(時間常數)開始累加,不斷遞增1;當 TL0計滿后,向TH0進位,直到13位寄存器計滿溢出;溢出時,定時器/計數器硬件會自動地把13位的寄存器值清0,中斷標記TF0置1;如果需要進一步定時/計數,需要使用相關指令重置時間常數,并把定時器/計數器的中斷標記TF0置0。
工作模式1:
模式1與模式0幾乎完全相同,唯一的區別就是,模式1中的寄存器TH0和TL0共同構成的是一個16位定時器/計數器來參與操作,因此比模式0中的定時范圍更大。
工作模式2:
這種模式又稱為自動再裝入預置數模式;當定時器的寄存器TH0/TL0的值溢出時,定時器/計數器硬件設備會自動把寄存器TH0/TL0的值清0,以重新開始操作;但是有時候,我們的定時/計數操作是需要多次重復定時的,如果溢出時不做任何處理,那么,在第二輪定時時就是從0開始定時/計數了,而這并不是我們想要的;所以,要保證每次溢出之后,在重新開始定時的操作是我們想要的,那就要把預置數(時間常數)重新裝入某個地方;而重新裝入預置數的操作是硬件設備自動完成的,不需要人工干預所以,這種工作模式就叫自動再裝入預置數方式;既然需要重新裝入預置數,那么預置數就必須要存放在某個地方,才能保證重裝操作成功;在工作模式2中,把自動重裝入的預置數存放在定時器/計數器的寄存器的高8位中,也就是存放在TH0中,而只留下TL0參與定時/計數操作;顯然,定時/計數的方位小了很多;
注:這個工作模式常用于波特率發生器(串口通訊),T1工作在串口模式2;用于這種方式時,定時器就是為了提供一個時間基準;計數溢出之后,不需要做太多的事情,只做一件事就可以,就是重新裝入預置數,再開始重新計數,而且中間不需要任何延時。
工作模式3:
由于定時器/計數器T1沒有工作模式3,如果把定時器T0設置為工作模式3,那么TL0和TH0將被分割成兩個相互獨立的8位定時器。
本文介紹到這里,希望能夠讓需要了解更多單片機定時器的朋友有更深一步認識!
|