stc89C51使用串口给电脑发送数字,从0开始累加。一秒钟加一个数字,如果5秒钟之内没有按下按键
在主程序中启动看门运丛狗以后,在主程序循环中要不断地刷新看门狗,一旦停止刷新看门 狗,就会产生看门狗复位。程序如下:
#include <reg51.h>
sbit k1=P3^3;//按键
sfr WDT_CONTR = 0xE1; //定义STC89C51单片机看门狗寄存器
unsigned char t0n;//T0中断20次为1秒
unsigned char s5; //5秒计时
unsigned char second;//秒计时
main()
{
second=0xFF;
TMOD=0x21;
TH1 =0xFD;//晶振频率=11.0592,波特率=9600
TL1 =0xFD;
SCON=0x50;
TH0 =0x4B;//晶振频率=11.0592,定时50ms
TL0 =0xFD;
EA =1;
ET0 =1;
TR0 =1;
TR1 =1;
WDT_CONTR=0x30; //EN_WDT=1;启动看门狗,CLR_WDT=1,看门狗清0
while(1)
{
WDT_CONTR|=0x10; //刷新看门狗
if(k1==0)
{
s5=0;//有按键计时5秒清0
while(k1==0)WDT_CONTR|=0x10; //等待按键释放要刷新看门狗
}
}
}
void T0_int() interrupt 1
{
TH0 =0x4B;
TL0 =0xFD;
t0n++;
if(t0n>=20)//定时器T0中断20次,1秒到
{
t0n=0;
second++;
if((0x0f&second)==0x0a)//变成10进制数发送
{second+=6;}//删明悄乱掉这两行,按十六进制数发送
SBUF=second;//发送秒
while(TI==0);
TI=0;
s5++;
if(s5>5)//没有按键,5秒后看门狗复位
while(1);//等待看门狗复位
}
}
串口助手接收状态如下图,注意 画红线数据,有按键,5秒内没有复位,看门狗复位,重新从0开始发送,而激档5秒内没有按键,发送5以后就复位了。
STC89C51单片机看门狗寄存器设置如下图
哇⊙∀⊙!感谢感谢☺☺☺