STC12C2052AD单片机看门狗及其溢出时间计算公式
扫描二维码
随时随地手机看文章
;本程序用于验证STC12C2052AD系列单片机的看门狗及其溢出时间计算公式
;看门狗及其溢出时间=(12*Pre_scale*32768)/OscillatorFrequency
WDTCREQU0E1H;看门狗地址
WDT_TIME_LEDEQUP1.5;用P1.5控制看门狗溢出时间指示灯,
;看门狗溢出时间可由该指示灯亮的时间长度或熄灭的时间长度表示
WDT_FLAG_LEDEQUP1.7;用P1.7控制看门狗溢出复位指示灯,如点亮表示为看门狗溢出复位
Last_WDT_Time_LED_StatusEQU00H;位变量,存储看门狗溢出时间指示灯的上一次状态位
;WDT复位时间(Oscillatorfrequency=18.432MHz):
;Pre_scale_WordEQU00111100B;清0、启动看门狗,预分频数=320.68S
Pre_scale_WordEQU00111101B;清0、启动看门狗,预分频数=641.36S
;Pre_scale_WordEQU00111110B;清0、启动看门狗,预分频数=1282.72S
;Pre_scale_WordEQU00111111B;清0、启动看门狗,预分频数=2565.44S
ORG0000H
AJMPMAIN
ORG0100H
MAIN:
MOV A,WDTCR;检测是否为看门狗复位
ANLA,#10000000B
JNZWDT_Reset;WDTCR.7=1,看门狗复位,跳转到看门狗复位程序
;上电复位,冷启动,RAM单元内容为随机值
SETBLast_WDT_Time_LED_Status;上电复位,
;初始化看门狗溢出时间指示灯的状态位=1
CLRWDT_TIME_LED;上电复位,点亮看门狗溢出时间指示灯
MOV WDTCR,#Pre_scale_Word;启动看门狗
WAIT1:
SJMPWAIT1;循环执行本语句(停机),等待看门狗溢出复位
;看门狗复位,热启动,RAM单元内容不变,为复位前的值
WDT_Reset:;看门狗复位,热启动
CLRWDT_FLAG_LED;点亮看门狗溢出复位指示灯
JBLast_WDT_Time_LED_Status,Power_Off_WDT_TIME_LED
;根据看门狗溢出时间指示灯的上一次状态位设置WDT_TIME_LED灯,
;若上次亮本次就熄灭,若上次熄灭本次就亮
CLRWDT_TIME_LED;上次熄灭本次点亮看门狗溢出时间指示灯
CPLLast_WDT_Time_LED_Status;将看门狗溢出时间指示灯的上一次状态位取反
WAIT2:
SJMPWAIT2;循环执行本语句(停机),等待看门狗溢出复位
Power_Off_WDT_TIME_LED:
SETBWDT_TIME_LED;上次亮本次就熄灭看门狗溢出时间指示灯
CPLLast_WDT_Time_LED_Status;将看门狗溢出时间指示灯的上一次状态位取反
WAIT3:
SJMPWAIT3;循环执行本语句(停机),等待看门狗溢出复位
END