7个回答
展开全部
首先 ,你要知道什么是看门狗?
在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称"看门狗"(watchdog)。
其次,看门狗的工作原理是什么?
在系统运行以后也就启动了看门狗的计数器,看门狗就开始自动计数,如果到了一定的时间还不去清看门狗,那么看门狗计数器就会溢出从而引起看门狗中断,造成系统复位。所以在使用有看门狗的芯片时要注意清看门狗(俗称喂狗)。
下面这段程序是我成功调试过了的,看门狗寄存器的各位的具体的意义,你可以自己去看下单片机的PDF文档,里面有详细的介绍...................
#include <reg52.h> 52系列单片机头文件
#define uchar unsigned char
#define uint unsigned int
sfr WDT_CONTR=0xe1;/*看门狗寄存器声明*/
sbit led1=P1^0; /*接发光二极管*/
void delayms(uint xms) /*延时函数*/
{
uint i,j;
for(i=xms;i>0;i--) /*i=xms即延时约xms毫秒 */
for(j=110;j>0;j--);
}
void main()
{
WDT_CONTR=0x35;
led1=0;
delayms(500);
led1=1;
while(1)
{
delayms(1000);
// WDT_CONTR=0x35;/*喂狗,如果这句话不加的话单片机就 会一直复位,看到的现象是发光二极管闪烁,加上这句的话,发光二极管一直亮着,所以在实际工程应用的时候通常要在程序里面调用比较频繁的函数内部写上这句话*/
}
}
/*******************************************************************
喂狗的技巧:如果一个大循环少于看门狗益处时间,
放在while(1)哪个地方都可以啊,如果大于,看下
哪个地方停顿时间长就放哪
*********************************************************************/
在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称"看门狗"(watchdog)。
其次,看门狗的工作原理是什么?
在系统运行以后也就启动了看门狗的计数器,看门狗就开始自动计数,如果到了一定的时间还不去清看门狗,那么看门狗计数器就会溢出从而引起看门狗中断,造成系统复位。所以在使用有看门狗的芯片时要注意清看门狗(俗称喂狗)。
下面这段程序是我成功调试过了的,看门狗寄存器的各位的具体的意义,你可以自己去看下单片机的PDF文档,里面有详细的介绍...................
#include <reg52.h> 52系列单片机头文件
#define uchar unsigned char
#define uint unsigned int
sfr WDT_CONTR=0xe1;/*看门狗寄存器声明*/
sbit led1=P1^0; /*接发光二极管*/
void delayms(uint xms) /*延时函数*/
{
uint i,j;
for(i=xms;i>0;i--) /*i=xms即延时约xms毫秒 */
for(j=110;j>0;j--);
}
void main()
{
WDT_CONTR=0x35;
led1=0;
delayms(500);
led1=1;
while(1)
{
delayms(1000);
// WDT_CONTR=0x35;/*喂狗,如果这句话不加的话单片机就 会一直复位,看到的现象是发光二极管闪烁,加上这句的话,发光二极管一直亮着,所以在实际工程应用的时候通常要在程序里面调用比较频繁的函数内部写上这句话*/
}
}
/*******************************************************************
喂狗的技巧:如果一个大循环少于看门狗益处时间,
放在while(1)哪个地方都可以啊,如果大于,看下
哪个地方停顿时间长就放哪
*********************************************************************/
2017-09-11
展开全部
首先,你要知道什么是看门狗?在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称"看门狗"(watchdog)。其次,看门狗的工作原理是什么?在系统运行以后也就启动了看门狗的计数器,看门狗就开始自动计数,如果到了一定的时间还不去清看门狗,那么看门狗计数器就会溢出从而引起看门狗中断,造成系统复位。所以在使用有看门狗的芯片时要注意清看门狗(俗称喂狗)。下面这段程序是我成功调试过了的,看门狗寄存器的各位的具体的意义,你可以自己去看下单片机的PDF文档,里面有详细的介绍.#include52系列单片机头文件#defineucharunsignedchar#defineuintunsignedintsfrWDT_CONTR=0xe1;/*看门狗寄存器声明*/sbitled1=P1^0;/*接发光二极管*/voiddelayms(uintxms)/*延时函数*/{uinti,j;for(i=xms;i>0;i--)/*i=xms即延时约xms毫秒*/for(j=110;j>0;j--);}voidmain(){WDT_CONTR=0x35;led1=0;delayms(500);led1=1;while(1){delayms(1000);//WDT_CONTR=0x35;/*喂狗,如果这句话不加的话单片机就会一直复位,看到的现象是发光二极管闪烁,加上这句的话,发光二极管一直亮着,所以在实际工程应用的时候通常要在程序里面调用比较频繁的函数内部写上这句话*/}}/*******************************************************************喂狗的技巧:如果一个大循环少于看门狗益处时间,放在while(1)哪个地方都可以啊,如果大于,看下哪个地方停顿时间长就放哪*********************************************************************/
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
看门狗计时器开始倒数
在倒数为0之前及时喂狗,即重置看门狗计时器,若否,进行软件复位
这是俺的理解而已
在倒数为0之前及时喂狗,即重置看门狗计时器,若否,进行软件复位
这是俺的理解而已
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
看门狗分为芯片内 和芯片外两种
原理 等一段时间没喂狗 则导致单片机复位
芯片外的喂狗方式 一般是一个引脚电平变化
芯片内喂狗 一般是想寄存器随便写个数据
原理 等一段时间没喂狗 则导致单片机复位
芯片外的喂狗方式 一般是一个引脚电平变化
芯片内喂狗 一般是想寄存器随便写个数据
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
带复位输入及溢出信号的计数器电路都可充当看门狗。
1、复位输入作为喂狗信号的输入。溢出信号(也可用译码器自行构建)作为复位信号输出。
2、复位信号输出与单片机的复位引脚相连,注意复位电平,例如,单片机是高电平复位,看门狗复位输出是低电平,那么,需要加一个反相器,或者选择电平匹配的看门狗。
3、复位输入信号与单片机的任意一个IO相连,单片机程序中每隔一段时间输出一个复位信号,时间间隔需小于看门狗计数器的溢出周期。
4、某些单片机内部就有看门狗,并且提供专用的喂狗指令。这种情况下,只需要在程序中初始化看门狗,然后,定时执行一次喂狗指令即可。
1、复位输入作为喂狗信号的输入。溢出信号(也可用译码器自行构建)作为复位信号输出。
2、复位信号输出与单片机的复位引脚相连,注意复位电平,例如,单片机是高电平复位,看门狗复位输出是低电平,那么,需要加一个反相器,或者选择电平匹配的看门狗。
3、复位输入信号与单片机的任意一个IO相连,单片机程序中每隔一段时间输出一个复位信号,时间间隔需小于看门狗计数器的溢出周期。
4、某些单片机内部就有看门狗,并且提供专用的喂狗指令。这种情况下,只需要在程序中初始化看门狗,然后,定时执行一次喂狗指令即可。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询