在ATMEL系列芯片中,
89S51单片机内部的看门狗使用方法同多数同类芯片有着共同的特点,如果我们想加固程序运行的稳定性和抗干扰性,又不想在硬件上加太多的外围电路,那么用这种芯片内置的看门狗就可以完全可以实现我们的设计要求了,使用方法具体如下:
在程序初始化中应初始化看门狗寄存器(WDTRST地址是
例程如下:
ORG 0000H
LJMP START
ORG 0030H
CLRDOG: ;喂狗子程序
……
MOV
MOV
;喂狗指令
……
RET
ORG 0100H
START:
……
……
;初始化其他寄存器
MOV
MOV
;初始化看门狗寄存器
……
……
……
LCALL CLRDOG
……
……
END
在C语言中要增加一个声明语句。
在AT89X51.h声明文件中增加一行 sfr WDTRST = 0xA6;
Main()
{
WDTRST=0x1E;
WDTRST=0xE1;//初始化看门狗。
While (1)
{
WDTRST=0x1E;
WDTRST=0xE1;//喂狗指令
}
}
在此,我只是用了一个死循环的例子来告诉大家在程序中如何“喂狗”,如果是在一个大一些的程序中,还可以把喂狗指令写在一个经常调用的子程序当中,我就不再一一举例了。
不过要用好看门狗在硬件设计和编写程序时一定要注意一些地方:首先,89S51的看门狗必须由程序激活后才开始工作。所以必须保证CPU有可靠的上电复位。否则看门狗也无法工作。其次,看门狗使用的是CPU的晶振。在晶振停振的时候看门狗也无效。(所以如果你要设计的东东要求较高的的可靠性,我建议你还是用硬件看门狗。)最后,89S51只有14位计数器。在16383个机器周期内必须至少喂狗一次。而且这个时间是固定的,无法更改。当晶振为
踩一脚
|