⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stc12c2052ad_wdt.asm

📁 关键字:LCD液晶显示屏 串行 并行 ST7920 RT12864
💻 ASM
字号:
;本程序用于验证 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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -