我用的
单片机是STC90C516RD+,我在《51例说单片机》这本书里看到看门狗的使用很简单,就3句话:
1. 定义看门狗:sfr WDTRST=0xa6;
2:将0x1e ,0xe1分别赋值给看门狗 :
WDTRST=0x1e;
WDTRST=0Xe1;
我写了如下代码:
#include<<reg52.h>>
#include<<intrins.h>>
#define LED P3
sfr WDTRST=0xa6;
void main(void)
{
WDTRST=0x1e;
WDTRST=0Xe1;
P3=0xfe;
while(1)
{
LED=_cror_(P3,1);
delay1s(1);
}
}
但是等跑起来没有一点问题,看门狗没有复位系统。
然后我用的单片机资料里说的是有一个WDT_CONTR寄存器,它的地址是E1。我不知道这个寄存器的头文件,于是直接写出了以下代码:
sfr WDT_CONTR=0xe1;
void main(void)
{
WDT_CONTR=0X24;//打开看门狗,设定看门狗复位时间
P3=0xfe;
while(1)
{
delay100ms(10);//延时1秒
P3=_cror_(P3,1);
}
}
这个看门到了时间就会复位,LED也会一下子就跳到第一个灯那里 。
我的问题:
第一个看门狗为什么没有复位 ?
第二个看门狗的头文件 ?这两个看门狗到底哪个是对的哦 ??
WDTRST=0x1e; WDTRST=0xe1;这就是打开开门狗。0xa6这个地址的看门狗不是有一个14位的计数器么 ?看门狗复位时间是16384us。
一周热门 更多>