| 
 | 
 
注意事项: 
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(); 
} 
} 
}         
/************************************结束*************************************/ 
 
 
 
 |   
 
 
 
 |