51單片機定時器(二)


書接上回,下面是定時器的其他工作方式。

一、工作方式1:(還是拿t0做說明)

定時/ 計數器的工作方式1自己經驗是用的比較多的,它的結構圖如下:

 

 

 

TH0的八位和TL0的八位構成一個16位定時/計數器,可以定時時間最長

   在工作方式1下,計數器的計數值范圍是:

          1—65536(216

    當為定時工作方式1時,定時時間的計算公式為:

         (216—計數初值)╳晶振周期╳12

    或   (216—計數初值)╳機器周期

    其時間單位與晶振周期或機器周期相同。

    如果單片機的晶振選為6.000MHz,則最小定時時間為:

        [213—(216—1)]╳1/6╳10-6╳12=2╳10-6(s)=2(us)

        (216—0)╳1/6╳10-6╳12=131072╳10-6(s)=131072(us)。

工作方式1的使用,和方式0完全一樣,不必贅言。

二、工作方式2

工作方式2的結構圖如下:

 

 

 從圖中可以看出來,計數寄存器變成了一個——TL0,工作方式2下多了一個重裝載寄存器,也就是原來的TH0。

        在工作方式2下,如果TL0中的數據溢出,那么原先存儲在TH0中的數據就會自動的裝載到TL0中去,這是由單片機的硬件實現的,這樣我們就不用在手動給定時器賦初值,而且硬件重裝載不會耽誤時間,所以工作方式2的計時是最准確的。但是就是這樣一來的計數結構只有8位,計數值有限,最大只能到255。所以這種工作方式很適合於那些重復計數的應用場合。例如我們可以通過這樣的計數方式產生中斷,從而產生一個固定頻率的脈沖。也可以當作串行數據通信的波特率發送器使用。

        工作方式2下的其他使用和工作方式0,1相同。

三、工作方式3

之前的3種工作方式中,定時器t0和t1的工作方式完全相同,而在工作方式3中終於有了個性的發揮不在相同了。

下面是工作方式3情況下t0的結構圖。

 

 


可以看出,t0被分成了2個定時器,每個八位,定時/計數器0的TL0拆成的定時器和之前方式0,1一樣,不過TH0拆成的就“因霸”了,它把原先定時器1的溢出標志位給占用了,而且還不受GATE門控的控制,這樣以來,如果定時器0的TH0構成的8位定時器在使用,定定時器1就憋屈了,沒有溢出位使用。當然定時器0也不能做計數器使用。那定時器1怎么辦呢?

如果不使用定時器0,定時器1還可以“做人”,如果使用,拿它就放棄了,不要工作方式3了!反正也就是做之前工作放松做的活,在這種情況下,定時/計數器1通常作為串行口的波特率發生器使用,以確定串行通信的速率,因為已沒有TF1被定時/計數器0借用了,只能把計數溢出直接送給串行口。當作波特率發生器使用時,只需設置好工作方式,即可自動運行。如要停止它的工作,需送入一個把它設置為方式3的方式控制字即可,這是因為定時/計數器本身就不能工作在方式3,如硬把它設置為方式3,自然會停止工作。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM