📄 ex10-1.asm
字号:
$include (STC12C5A.INC) ;包含STC12C5A60S2单片机寄存器定义文件
WDT_TIME_LED EQU P1.5 ;用 P1.5 控制看门狗溢出时间指示灯,
;看门狗溢出时间由该指示灯亮的时间长度或熄灭的时间长度表示
WDT_FLAG_LED EQU P1.7 ;用 P1.7 控制看门狗溢出复位指示灯
;如点亮表示为看门狗溢出复位
Last_WDT_LED EQU 00H ;位变量, 存储看门狗溢出时间指示灯的上一次状态位
Pre_scale_Word EQU 00111100B ;清0,启动看门狗,预分频数=32
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN:
MOV A, WDT_CONTR ;检测是否为看门狗复位
ANL A, #10000000B
JNZ WDT_Reset ;WDT_CONTR.7=1, 看门狗复位, 跳转到看门狗复位程序
;WDT_CONTR.7 = 0,上电复位, 冷启动, RAM 单元内容为随机值
SETB Last_WDT_LED ;上电复位, 初始化看门狗溢出时间指示灯的状态位 = 1
CLR WDT_TIME_LED ;上电复位, 点亮看门狗溢出时间指示灯
MOV WDT_CONTR, #Pre_scale_Word ;启动看门狗
WAIT1:
LJMP WAIT1 ;循环执行本语句(停机),等待看门狗溢出复位
;WDT_CONTR.7 = 1,看门狗复位, 热启动, RAM 单元内容不变, 为复位前的值
WDT_Reset: ;看门狗复位, 热启动
CLR WDT_FLAG_LED ;是看门狗复位,点亮看门狗溢出复位指示灯
JB Last_WDT_LED, Power_Off_WDT_LED ;为1熄灭相应的灯,为0亮相应灯
;根据看门狗溢出时间指示灯的上一次状态位设置 WDT_TIME_LED 灯,
;若上次亮本次就熄灭, 若上次熄灭本次就亮
CLR WDT_TIME_LED ;上次熄灭本次点亮看门狗溢出时间指示灯
CPL Last_WDT_LED ;将看门狗溢出时间指示灯的上一次状态位取反
WAIT2:
SJMP WAIT2 ;循环执行本语句(停机),等待看门狗溢出复位
Power_Off_WDT_LED:
SETB WDT_TIME_LED ;上次亮本次就熄灭看门狗溢出时间指示灯
CPL Last_WDT_LED ;将看门狗溢出时间指示灯的上一次状态位取反
WAIT3:
SJMP WAIT3 ;循环执行本语句(停机),等待看门狗溢出复位
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -