?? stc12c5410ad單片機的看門狗及其溢出時間計算公式.txt
字號:
;本程序驗證 STC12C5410AD 單片機的看門狗及其溢出時間計算公式
;本演示程序在STC-ISP Ver 3.0A.PCB 的下載編程工具上測試通過,相關(guān)的工作狀態(tài)在P1 口上顯示
;看門狗及其溢出時間 = (12 * Pre_scale *32768)/Oscillator frequency
WDT_CONTR EQU 0E1H ;看門狗地址
WDT_TIME_LED EQU P1.5 ;用 P1.5 控制看門狗溢出時間指示燈,
;看門狗溢出時間可由該指示燈亮的時間長度或熄滅的時間長度表示
WDT_FLAG_LED EQU P1.7 ;用 P1.7 控制看門狗溢出復(fù)位指示燈, 如點亮表示為看門狗溢出復(fù)位
Last_WDT_Time_LED_Status EQU 00H ;位變量, 存儲看門狗溢出時間指示燈的上一次狀態(tài)位
;WDT 復(fù)位時間(所用的Oscillator frequency = 18.432MHz):
;Pre_scale_Word EQU 00111100B ;清0,啟動看門狗,預(yù)分頻數(shù)=32, 0.68S
Pre_scale_Word EQU 00111101B ;清0,啟動看門狗,預(yù)分頻數(shù)=64, 1.36S
;Pre_scale_Word EQU 00111110B ;清0,啟動看門狗,預(yù)分頻數(shù)=128, 2.72S
;Pre_scale_Word EQU 00111111B ;清0,啟動看門狗,預(yù)分頻數(shù)=256, 5.44S
ORG 0000H
AJMP MAIN
ORG 0100H
MAIN:
MOV A, WDT_CONTR ;檢測是否為看門狗復(fù)位
ANL A, #10000000B
JNZ WDT_Reset ;WDT_CONTR.7 = 1, 看門狗復(fù)位, 跳轉(zhuǎn)到看門狗復(fù)位程序
;WDT_CONTR.7 = 0,上電復(fù)位, 冷啟動, RAM 單元內(nèi)容為隨機值
SETB Last_WDT_Time_LED_Status ;上電復(fù)位,
;初始化看門狗溢出時間指示燈的狀態(tài)位 = 1
CLR WDT_TIME_LED ;上電復(fù)位, 點亮看門狗溢出時間指示燈
MOV WDT_CONTR, #Pre_scale_Word ;啟動看門狗
WAIT1:
SJMP WAIT1 ;循環(huán)執(zhí)行本語句(停機),等待看門狗溢出復(fù)位
;WDT_CONTR.7 = 1,看門狗復(fù)位, 熱啟動, RAM 單元內(nèi)容不變, 為復(fù)位前的值
WDT_Reset: ;看門狗復(fù)位, 熱啟動
CLR WDT_FLAG_LED ;是看門狗復(fù)位,點亮看門狗溢出復(fù)位指示燈
JB Last_WDT_Time_LED_Status, Power_Off_WDT_TIME_LED;為1 熄滅相應(yīng)的燈,為0 亮相應(yīng)燈
;根據(jù)看門狗溢出時間指示燈的上一次狀態(tài)位設(shè)置 WDT_TIME_LED 燈,
;若上次亮本次就熄滅, 若上次熄滅本次就亮
CLR WDT_TIME_LED ;上次熄滅本次點亮看門狗溢出時間指示燈
CPL Last_WDT_Time_LED_Status ;將看門狗溢出時間指示燈的上一次狀態(tài)位取反
WAIT2:
SJMP WAIT2 ;循環(huán)執(zhí)行本語句(停機),等待看門狗溢出復(fù)位
Power_Off_WDT_TIME_LED:
SETB WDT_TIME_LED ;上次亮本次就熄滅看門狗溢出時間指示燈
CPL Last_WDT_Time_LED_Status ;將看門狗溢出時間指示燈的上一次狀態(tài)位取反
WAIT3:
SJMP WAIT3 ;循環(huán)執(zhí)行本語句(停機),等待看門狗溢出復(fù)位
END
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -