电子产业一站式赋能平台

PCB联盟网

搜索
查看: 1916|回复: 1
收起左侧

单片机C语言实例-74-按键喂狗

[复制链接]
发表于 2021-12-20 10:37:39 | 显示全部楼层 |阅读模式
单片机C语言实例-74-按键喂狗

内容:通过按键喂狗防止溢出复位 看门狗演示程序  
        在16383个机器周期内必须至少喂狗一次
        标准AT89s52单片机试验通过。
------------------------------------------------*/
#include <reg52.h>

sfr WDTRST = 0xA6;

sbit  K1 = P3^0;
sbit  K2 = P3^1;
sbit  LED1=P1^1;
sbit  LED2=P1^2;

void DelayUs2x(unsigned char t);//us级延时函数声明
void DelayMs(unsigned char t); //ms级延时
/*------------------------------------------------
                    主函数
------------------------------------------------*/
main()
{
   LED1=0;
   DelayMs(100);
   LED1=1;
   DelayMs(100);

   TMOD=0x01;
   TH0=0xc6;      //定时16ms
   TL0=0x66;
   EA=1;
   ET0=1;

   WDTRST=0x1e;   //在程序初始化中激活看门狗。
   WDTRST=0xe1;   //先送1E,后送E1

   if(K1==0)
   {
     TR0=1;
   }

   while(1)
   {   
     if(K2==0)
     {
       TR0=0;
     }
         LED2=1;
         LED1=1;
         DelayMs(100);
         LED2=0;
         DelayMs(100);
   }
}
/*------------------------------------------------
              定时器中断函数
------------------------------------------------*/
void Time0(void) interrupt 1
{
   TH0=0xc6;      //定时16ms
   TL0=0x66;

   WDTRST=0x1e;   //喂狗指令
   WDTRST=0xe1;
}

/*------------------------------------------------
uS延时函数,含有输入参数 unsigned char t,无返回值
unsigned char 是定义无符号字符变量,其值的范围是
0~255 这里使用晶振12M,精确延时请使用汇编,大致延时
长度如下 T=tx2+5 uS
------------------------------------------------*/
void DelayUs2x(unsigned char t)
{   
while(--t);
}
/*------------------------------------------------
mS延时函数,含有输入参数 unsigned char t,无返回值
unsigned char 是定义无符号字符变量,其值的范围是
0~255 这里使用晶振12M,精确延时请使用汇编
------------------------------------------------*/
void DelayMs(unsigned char t)
{

while(t--)
{
     //大致延时1mS
     DelayUs2x(245);
         DelayUs2x(245);
}
}


更多详情参考附件文档
+08:00C150联盟网8463.png
游客,如果您要查看本帖隐藏内容请回复

回复

使用道具 举报

0

主题

3

帖子

11

积分

一级会员

Rank: 1

积分
11
发表于 2021-12-29 12:57:20 | 显示全部楼层
按键喂狗是实际意义吗?是不是长期不操作就复位?
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表