51單片機 | 定時/計數器原理及結構(T0和T1)


————————————————————————————————————————————

定時/計數器結構(T0和T1)

16位寄存器T0、T1分別由TH0、TL0和TH1、TL1四個8位計數器組成

  • 定時器的區別:
    • T0可分成2個獨立的8位定時器,而定時器1則不能;
    • T1可作為串口的波特率發生器,而定時器0則不能。
  • 工作原理
    • 用途:定時器和計數器
    • 核心:加1計數器
    • 原理:每來一個脈沖則加1計數器加1,當加到全1時再來一個脈沖使加1計數器歸零,同時加1計數器的溢出使TCON寄存器中的TF0(或TF1)置1,向CPU發出中斷請求
    • 脈沖來源:
      • 定時器:脈沖來源是由系統的時鍾晶振器輸出脈沖源提供
      • 計數器:脈沖來源是由T0或T1引腳(P3.4或P3.5)輸入的外部脈沖源提供

    注:T0或T1都不能同時既做定時器也做計數器

    補充:

    • 計數器工作原理:

      用作計數器時,對T0或T1引腳的外部脈沖計數,如果前一個機器周期采樣值為1,后一個機器周期采樣值為0 ,則說明有一個脈沖,計數器加1。

      在每個機器周期的S5P2期間采樣引腳輸入電平。新的計數初值於下一個機器周期的S3P1期間裝入計數器。

      此種方式需要兩個機器周期來檢測一個1->0負跳變信號,因此最高的計數頻率為時鍾頻率的1/24。

    • S5P2:

      S5P2指的是第5個時鍾周期的相位2。

      晶體振盪器的振盪信號從XTAL2端輸入到片內的時鍾發生器上,時鍾發生器是一個二分頻觸發器電路,它將振盪器的信號頻率除以2,向CPU提供了兩相時鍾信號P1和P2。時鍾信號的周期稱為機器狀態時間S,它是振盪周期的2倍。在每個時鍾周期(即機器狀態時間S)的前半周期,相位1(即P1信號)有效,在每個時鍾周期的后半周期,相位2(即P2信號)有效。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

使用的寄存器

  • TCON控制寄存器:啟動和停止定時/ 計數器的計數,並控制定時器的工作狀態,不能按位尋址

       

  • TMOD方式寄存器:設置定時器的工作方式,選擇定時或計數的功能,可以按位尋址。(和中斷共用寄存器,高四位為定時計數器使用,低四位為中斷使用)

    注:GATE邏輯結構此處略過,詳見書P100

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

工作方式:

  • 方式0
    • 計算公式:

    • 最大計數:8192個機器周期
    • 工作原理:

      13位計數器,使用TL0的低5位和TH0的高8位組成,TL0的低5位溢出時向TH0進位。TH0溢出時發出中斷請求。

  • 方式1
    • 計算公式:

    • 最大計數:65536個機器周期
    • 工作原理:

      16位計數器,TL0作為低8位,TH0作為高8位

  • 方式2 :自動重裝初值的8 位計數方式
    • 計算公式:

      p.s.晶振頻率必須選擇12的整數倍,因為定時器的頻率是晶振頻率的1/12

    • 最大計數:256個機器周期
    • 優點:

      適合做比較精准的脈沖信號發生器

    • 缺點:

    • 工作原理:

      計數器溢出后,計數器自動將上次設置的初值重裝。

         

  • 方式3 p.s.只能用於定時/計數器T0,T0工作在方式3時,T1不要使用在有中斷的場合。通常該種情況下T1用作串口波特率發生器
    • 工作原理:

      將T0分成兩個獨立的8位定時/計數器TL0和TH0。

      TL0為正常的8位定時/計數器,計數器溢出后置位TF0,申請中斷,之后重裝初值。

      TH0也是8位定時/計數器,但由於TL0占用了TF0和TR0,因此TH0占用定時器TF1和TR1(所以T1不能用)

   

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

時鍾周期/機器周期計算:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

定時/計數器初始化

  • 對TMOD賦值,確定T0和T1的工作方式
  • 計算初值,並將其寫入TH.x和TL.x
  • 使用中斷方式時對IE寄存器賦值開發中斷
  • 使TR0或TR1置位,啟動定時/計數器


免責聲明!

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



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