在程序初始化中向看门狗寄存器(WDTRST地址是0A6H)中先写入01EH,再写入0E1H。即可激 活看门狗。
ORG 0000H
LJMP begin
Begin:
MOV 0A6H,#01EH ;先送1E
MOV 0A6H,#0E1H ;后送E1
;在程序初始化中激活看门狗。
……
……
For:
……
MOV 0A6H,#01EH ;先送1E
MOV 0A6H,#0E1H ;后送E1
;喂狗指令
……
LJMP For
在C语言中要增加一个声明语句。 在AT89X51h声明文件中增加一行 sfr WDTRST = 0xA6;
Main()
{
WDTRST=0x1E;
WDTRST=0xE1;//初始化看门狗。
While (1)
{
WDTRST=0x1E;
WDTRST=0xE1;//喂狗指令
}
}
其他参考代码:
AJMP MAIN ;汇编
MAIN:
;启动看门狗
Mov 0A6H,#01EH ;先送1E
Mov 0A6H,#0E1H ;后送E1
;主程序
START:
ACALL WDT ;调用复位看门狗子程序
AJMP START
;主程序
;复位看门狗子程序
WDT:
Mov 0A6H,#01EH ;先送1E
Mov 0A6H,#0E1H ;后送E1
RET
END
注意事项:
1. 89S51的看门狗必须由程序激活后才开始工作。所以必须保证CPU有可靠的上电复位。否则看门狗也无法工作。
2. 看门狗使用的是CPU的晶振。在晶振停振的时候看门狗也无效。
3. 89S51只有14位计数器。在16383个机器周期内必须至少喂狗一次。而且这个时间是固定的,无法更改。当晶振为12M时每16个毫秒需喂狗一次。还可利用定时器把看门狗的喂狗时间延长几秒至几分钟。
你不往寄存器写值,默认是没有开看门狗的,你就不用管了
一种方法是在delay里面喂,这种方法很适用,一劳永逸。第二种就是delay的实参减小,多次调用delay,调用中间进行喂狗,这种比较麻烦。
书上也有说错的时候。还是根据实际情况来。
应用于看门狗电路,现在很多5152系列都集成了看门狗电路,看门狗是为了防止程序执行到不可预料的情况,所以先给watch dog reg 赋予一定初值,在一定时间内它会自动减1,当减为0时系统将会自动复位,所以程序必须在一定时间重新设置watch dog reg 使其不会自动复位(即喂狗),表示程序运行正常。
一般51 data sheet 里都有相关介绍。
通过调用宏指令CLRWDT()来实现喂狗。
PIC有中低端的八位单片机PIC10/12/16的,高端的八位单片机PIC18系列,1十六位单片机PIC24和dsPIC,还有一个PIC32是三十二位的。上述的都可以通过调用宏指令CLRWDT()。来实现。
您好,开发DSP系统时,必须有DSP开发板和仿真器,实际中可能还需要一些其他外围的元件。仿真器的作用为:将DSP开发板(DSP的JTAG接口)与电脑(并口或USB接口)连接,
这样所编写的程序才能写入DSP开发板,以及在计算机上通过软件(CCS软件)调试DSP开发板,开发过程中离不开仿真器。
开发软件时,每次调试程序都必须经过JTAG仿真器将程序装载到开发板中,此装载过程时间可能大于看门狗电路的复位时间(16 s)。如果采用图2所示电路,则每次装载程序时
会出现仿真器连接错误。其原因是装载过程中看门狗启动,将DSP的复位引脚拉低,导致工作失常。为保证DSP系统调试与工作正常,需对原理图作出以下改进.具体电路如图
3所示。在MR与WDO之间加上一个跳针,在每次加载程序时将跳针断开,关闭看门狗功能;正常运行时将跳针短路,即可实现看门狗的功能。电路中也给出了手动复位、上电
复位及掉电复位功能的原理图。
MAX706S具有功能强大、外围电路简单、使用方便可靠等特点,能有效提高系统的可靠性和抗干扰能力。本文提供了改进的原理图,可以方便地应用于DSP系统中,具有很好的
实用价值。
主要有以下几个原因:
1、看门狗配置错误:可能是因为看门狗定时时间设置不合理、看门狗没有被使能等原因导致喂狗失败。
2、系统资源紧张:如果系统在喂狗的时候正在执行一些比较耗时的任务,可能会导致喂狗失败。
3、中断响应问题:如果在中断服务程序中禁用了看门狗,也可能会导致喂狗失败。
以上就是关于51单片机看门狗问题全部的内容,包括:51单片机看门狗问题、C语言 怎么设置喂狗、keil c里面“喂狗”什么意思等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)