at89s52_wdt.asm

来自「用汇编写的AT89S52看门狗程序」· 汇编 代码 · 共 58 行

ASM
58
字号
;*****************************************************
;AT89S52看门狗演示程序
;程序初始化时
;P1.7引脚上的LED闪烁发光
;激活看门狗后,如果不喂狗,则复位(P1.1引脚上的LED闪一下)
;*****************************************************

                ORG     0000
                LJMP    MAIN
                ORG     000BH           ;定时器0的中断向量地址
                AJMP    TIME0           ;跳转到真正的定时器程
                ORG     30H

MAIN:           SETB    P1.1
                LCALL   DELAY
                CLR     P1.1
                LCALL   DELAY
                SETB    P1.1
                LCALL   DELAY
                MOV     TMOD,#00000001B ;定时/计数器0工作于方式1
                MOV     TH0,#0EAH
                MOV     TL0,#60H        ;即60000
                SETB    EA              ;开总中断允
                SETB    ET0             ;开定时/计数器0允许
                SETB    TR0             ;定时/计数器0开始运
                MOV     0A6H,#01EH
                MOV     0A6H,#0E1H      ;在程序初始化中激活看门狗。

LOOP:           SETB    P1.7
                LCALL   DELAY
                CLR     P1.7
                LCALL   DELAY
                LJMP    LOOP



;定时器0的中断处理程序
TIME0:
                PUSH    ACC
                PUSH    PSW              ;将PSW和ACC推入堆栈保护
                MOV     0A6H,#01EH
                MOV     0A6H,#0E1H       ;喂狗指令,可以将这两句注释后看不喂狗的情形
                MOV     TH0,#0EAH
                MOV     TL0,#60H         ;重置定时常数
                POP     PSW
                POP     ACC
                RETI

;延时子程序
DELAY:          MOV     R7,#250
D1:             MOV     R6,#250
D2:             DJNZ    R6,D2
                DJNZ    R7,D1
                RET
                END

;在16383个机器周期内必须至少喂狗一次。当晶振为12M时每16个毫秒需喂狗一次。

⌨️ 快捷键说明

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