stc15系列单片机的喂狗指令是什么,也就是用哪条指令让它的重新计数?已解答。
本帖最后由 jianhong_wu 于 2015-1-6 17:39 编辑问:
stc15系列单片机的喂狗指令是什么,也就是用哪条指令让它的重新计数?
鸿哥-深圳:
我们能直接在stc-isp这个烧录软件里找到看门狗的溢出复位程序,比如:
#include "reg51.h"
#include "intrins.h"
sfr WDT_CONTR = 0xc1; //看门狗控制寄存器
sbit P32 = P3^2; //测试口
void delay(unsigned int i)
{
while (i--)
{
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
}
void main()
{
P32 = 0;
delay(10000); //复位闪灯延时
P32 = 1;
WDT_CONTR = 0x04; //看门狗定时器溢出时间计算公式: (12 * 32768 * PS) / FOSC (秒)
//设置看门狗定时器分频数为32,溢出时间如下:
//11.0592M : 1.14s
//18.432M: 0.68s
//20M : 0.63s
WDT_CONTR |= 0x20; //启动看门狗
while (1);
}
但是要让它不溢出复位的喂狗指令是什么?我仔细看了芯片资料后,发现喂狗指令是:WDT_CONTR |= 0x10;这是根据以下数据手册:
如果在把WDT_CONTR |= 0x10;添加到以上那段代码的while(1)里就不会溢出复位的,起到及时喂狗的效果。比如:
#include "reg51.h"
#include "intrins.h"
sfr WDT_CONTR = 0xc1; //看门狗控制寄存器
sbit P32 = P3^2; //测试口
void delay(unsigned int i)
{
while (i--)
{
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
}
void main()
{
P32 = 0;
delay(10000); //复位闪灯延时
P32 = 1;
WDT_CONTR = 0x04; //看门狗定时器溢出时间计算公式: (12 * 32768 * PS) / FOSC (秒)
//设置看门狗定时器分频数为32,溢出时间如下:
//11.0592M : 1.14s
//18.432M: 0.68s
//20M : 0.63s
WDT_CONTR |= 0x20; //启动看门狗
while (1)
{
WDT_CONTR |= 0x10; //喂狗指令
}
}
页:
[1]