您的位置 首页 设计

STC12C2052AD 系列单片机的看门狗

;本程序用于验证STC12C2052AD系列单片机的看门狗及其溢出时间计算公式;看门狗及其溢出时间=(12*Pre_scale*32768)/Oscillator…

;本程序用于验证 STC12C2052AD 系列单片机看门狗及其溢出时刻计算公式
;看门狗及其溢出时刻 = (12 * Pre_scale *32768)/Oscillator frequency

WDTCR EQU 0E1H ;看门狗地址
WDT_TIME_LED EQU P1.5 ;用 P1.5 操控看门狗溢出时刻指示灯,
;看门狗溢出时刻可由该指示灯亮的时刻长度或平息的时刻长度表明
WDT_FLAG_LED EQU P1.7 ;用 P1.7 操控看门狗溢出复位指示灯, 如点亮表明为看门狗溢出复位

Last_WDT_Time_LED_Status EQU 00H ;位变量, 存储看门狗溢出时刻指示灯的上一次状况位

;WDT 复位时刻(Oscillator frequency = 18.432MHz):
;Pre_scale_Word EQU 00111100B ;清0、发动看门狗,预分频数=32 0.68S
Pre_scale_Word EQU 00111101B ;清0、发动看门狗,预分频数=64 1.36S
;Pre_scale_Word EQU 00111110B ;清0、发动看门狗,预分频数=128 2.72S
;Pre_scale_Word EQU 00111111B ;清0、发动看门狗,预分频数=256 5.44S

ORG 0000H
AJMP MAIN

ORG 0100H
MAIN:
MOV A, WDTCR ;检测是否为看门狗复位
ANL A, #10000000B
JNZ WDT_Reset ;WDTCR.7 = 1, 看门狗复位, 跳转到看门狗复位程序

;上电复位, 冷发动, RAM 单元内容为随机值
SETB Last_WDT_Time_LED_Status ;上电复位,
;初始化看门狗溢出时刻指示灯的状况位 = 1
CLR WDT_TIME_LED ;上电复位, 点亮看门狗溢出时刻指示灯
MOV WDTCR, #Pre_scale_Word ;发动看门狗

WAIT1:
SJMP WAIT1 ;循环履行本句子(停机),等候看门狗溢出复位

;看门狗复位, 热发动, RAM 单元内容不变, 为复位前的值
WDT_Reset: ;看门狗复位, 热发动
CLR WDT_FLAG_LED ;点亮看门狗溢出复位指示灯

JB Last_WDT_Time_LED_Status, Power_Off_WDT_TIME_LED
;依据看门狗溢出时刻指示灯的上一次状况位设置 WDT_TIME_LED 灯,
;若前次亮本次就平息, 若前次平息本次就亮
CLR WDT_TIME_LED ;前次平息本次点亮看门狗溢出时刻指示灯
CPL Last_WDT_Time_LED_Status ;将看门狗溢出时刻指示灯的上一次状况位取反
WAIT2:
SJMP WAIT2 ;循环履行本句子(停机),等候看门狗溢出复位

Power_Off_WDT_TIME_LED:
SETB WDT_TIME_LED ;前次亮本次就平息看门狗溢出时刻指示灯
CPL Last_WDT_Time_LED_Status ;将看门狗溢出时刻指示灯的上一次状况位取反
WAIT3:
SJMP WAIT3 ;循环履行本句子(停机),等候看门狗溢出复位

END

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ziliao/sheji/273203.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部