找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2562|回復: 0
收起左側(cè)

定時器程序設計方法--模式3

[復制鏈接]
ID:59980 發(fā)表于 2014-9-22 23:24 | 顯示全部樓層 |閱讀模式
一,對于AT89S51單片機來說,前面3種工作模式均適用于Timer 0和Timer 1,但模式3只適用于Timer 0,Timer 1不具有模式3.

  二,在模式3下,Timer 0的TL0和TH0變成兩個獨立的8位的Timer寄存器。但不具備自動重新裝載計數(shù)初始值的特性。

三,以TL0為Timer寄存器的Timer使用TMOD和TCON中原來Timer 0的控制位,設置的方法與前面相同。而以TH0為Timer寄存器的Timer 使用原來Timer 1的溢出標志位TF1和啟動/關閉TR1,并且不能用作計數(shù)器使用。

例:AT89S51單片機的P1 .0口輸出周期為300,占空比為1/3的方波信號。

    程序:
ORG 00H;
START:
      MOV TMOD, #03H;設置Timer 0工作在模式3下
LOAD:
      MOV TL0,#9CH;往TL0中載入計數(shù)初始值(156)
      MOV TH0,#38H;往TH0中載入另一個計數(shù)初始值(56)
      SETB    P1.0;     P1.0置1
      CALL    TL_DELAY; 調(diào)以TL0為基礎的延時子程序
      CLR     P1.0;     P1.0清0
      CALL    TH_DELAY; 調(diào)以TH0為基礎的延時子程序
      JMP  LOAD;        循環(huán),重新裝載計數(shù)初始值
TL_DELAY:               ;以TL0為Timer寄存器的Timer 的延時子程序
      SETB  TR0;        啟動以TL0為Timer寄存器的Timer
CHECK0:
      JNB   TF0,CHECK0;檢測TF0溢出標志,等于1就往下執(zhí)行,否則返回繼續(xù)檢測。
      CLR   TR0;       關閉Timer
      CLR   TF0;       將TF0清0
      RET      ;       返回主程序
TH_DELAY:              ;以TH0為Timer寄存器的Timer 的延時子程序
      SETB TR1;        啟動以TH0為Timer寄存器的Timer
CHECK1:
      JNB TF1,CHECK1;  檢測TF1溢出標志,等于1就往下執(zhí)行,否則返回繼續(xù)檢測。
      CLR TR1        ; 關閉Timer
      CLR TF1        ; 將TF1清0
      RET            ; 返回主程序
      END            ; 程序結(jié)束(總延時110us)

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表