×
嵌入式 > 技术百科 > 详情

STC12C2052AD单片机看门狗及其溢出时间计算公式

发布时间:2022-05-06 发布时间:
|

;本程序用于验证 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 

 


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
ADI 高精度低功耗精密放大器