stc89C51使用串口给电脑发送数字,从0开始累加。一秒钟加一个数字,如果5秒钟之内没有按下按键

stc89C51使用串口给电脑发送数字,从0开始累加。一秒钟加一个数字,如果5秒钟之内没有按下按键就通过看门狗自动复位,如果按下按键,就继续累加,看门狗那里一直实现不了功... stc89C51使用串口给电脑发送数字,从0开始累加。一秒钟加一个数字,如果5秒钟之内没有按下按键就通过看门狗自动复位,如果按下按键,就继续累加,看门狗那里一直实现不了功能,求大佬给我写一个程序借鉴一下 展开
 我来答
lycdl
高粉答主

2018-08-11 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2万
采纳率:94%
帮助的人:4885万
展开全部

在主程序中启动看门运丛狗以后,在主程序循环中要不断地刷新看门狗,一旦停止刷新看门 狗,就会产生看门狗复位。程序如下:

#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单片机看门狗寄存器设置如下图

追问
哇⊙∀⊙!感谢感谢☺☺☺
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式