首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

單片機匯編:定時器 0 初值 TH0=D8H, TL0=F0H 產生 1s 基準時鐘原理

     編輯:程式設計疑難解答

背景

12MHz 晶振,機器周期 1μs。定時器 0 模式 1 (16位),溢出中斷產生基準定時,配合軟件計數實現 1s、20% 占空比脈衝。

初值計算

  • 定時 50ms(1s 需 20 次中斷):
    50ms = 50,000 μs = 50,000 個機器周期。
    16位最大計數 65536。
    初值 = 65536 - 50000 = 15536 = 3CB0H。
  • 但題目給出 D8F0H (55536),對應計數 10000 個周期 = 10ms。
    則軟件計數 100 次 = 1s,占空比 20% → 高電平 20ms (2次中斷)、低電平 80ms (8次中斷)。

代碼結構

ORG 0000H
LJMP MAIN
ORG 000BH        ; Timer0 中斷入口
LJMP ISR_T0

MAIN:
    MOV TMOD, #01H   ; 模式1
    MOV TH0, #0D8H
    MOV TL0, #0F0H
    SETB ET0
    SETB EA
    SETB TR0
    ; 主循環 ...

ISR_T0:
    ; 重裝初值
    MOV TH0, #0D8H
    MOV TL0, #0F0H
    ; 軟件計數器 ++
    ; 根據計數值控制 P1.1 輸出高/低
    RETI

參考資料

單片機定時器實例講解 (含 C 代碼對照)

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved