查看: 1267|回复: 0
打印 上一主题 下一主题

看门狗应用

[复制链接]
跳转到指定楼层
沙发
发表于 2015-4-15 12:41:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
注意事项:
1. 89S51的看门狗必须由程序激活后才开始工作。所以必须保证CPU有可靠的上电复位。否则看门狗也无法工作。
2. 看门狗使用的是CPU的晶振。在晶振停振的时候看门狗也无效。
3. 89S51只有14位计数器。在16383个机器周期内必须至少喂狗一次。而且这个时间是固定的,无法更改。
当晶振为12M时每16个毫秒需喂狗一次。
**********************************************************************/
#include<reg52.h>   /*看门狗应用*/

sfr WDTRST = 0xA6;        //看门狗声明
unsigned char i;
unsigned char temp;
unsigned char a,b;
delay()//延时程序
{unsigned char m,n,s;
for(m=20;m>0;m--)
for(n=20;n>0;n--)
for(s=248;s>0;s--);
}
main()
{
/*********************************初始化看门狗*************************************/
WDTRST=0x1E;
WDTRST=0xE1;//初始化看门狗。
/*********************************初始化看门狗*************************************/
while(1)
{
/************************************喂狗指令*************************************/
WDTRST=0x1E;
WDTRST=0xE1;//喂狗指令
/************************************喂狗指令*************************************/
temp=0xfe;
P3=P2=P0=P1=temp;//直接对1/0口p3赋值,使批p3.0输出低电平。
delay();//延时
for(i=1;i<8;i++)//实现广告灯的从右到左移动
{
a=temp<<i;
b=temp>>(8-i);
P3=P2=P0=P1=a|b;
delay();
}
for(i=1;i<8;i++)//实现广告灯的从左到右移动
{
a=temp>>i;
b=temp<<(8-i);
P3=P2=P0=P1=a|b;
delay();
}
}
}       
/************************************结束*************************************/



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?加入因仑

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入因仑

本版积分规则

快速回复 返回顶部 返回列表