找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6178|回复: 4
收起左侧

51单片机看门狗功能如何使用?

[复制链接]
ID:282021 发表于 2018-2-3 20:31 | 显示全部楼层 |阅读模式
51单片机看门狗功能如何使用?
回复

使用道具 举报

ID:123289 发表于 2018-2-5 18:58 | 显示全部楼层
查51手册
回复

使用道具 举报

ID:47286 发表于 2018-2-5 19:14 | 显示全部楼层
按分频定时喂狗 看手册 上面写的挺明白的
回复

使用道具 举报

ID:155507 发表于 2018-2-5 20:42 | 显示全部楼层
首先  ,你要知道什么是看门狗?

在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称"看门狗"(watchdog)。

其次,看门狗的工作原理是什么?

在系统运行以后也就启动了看门狗的计数器,看门狗就开始自动计数,如果到了一定的时间还不去清看门狗,那么看门狗计数器就会溢出从而引起看门狗中断,造成系统复位。所以在使用有看门狗的芯片时要注意清看门狗(俗称喂狗)。

下面这段程序是我成功调试过了的,看门狗寄存器的各位的具体的意义,你可以自己去看下单片机的PDF文档,里面有详细的介绍...................


  1. #include <reg52.h> 52系列单片机头文件
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sfr WDT_CONTR=0xe1;/*看门狗寄存器声明*/
  5. sbit led1=P1^0;    /*接发光二极管*/

  6. void delayms(uint xms) /*延时函数*/                                   
  7. {
  8.         uint i,j;
  9.         for(i=xms;i>0;i--)    /*i=xms即延时约xms毫秒 */
  10.         for(j=110;j>0;j--);
  11. }

  12. void main()
  13. {
  14.         WDT_CONTR=0x35;
  15.         led1=0;
  16.         delayms(500);
  17.         led1=1;      
  18.         while(1)
  19.         {
  20.                 delayms(1000);
  21.                 //  WDT_CONTR=0x35;  /*喂狗,如果这句话不加的话单片机就 会一直复位,看到的现象是发光二极管闪烁,加上这句的话,发光二极管一直亮着,所以在实际工程应用的时候通常要在程序里面调用比较频繁的函数内部写上这句话*/            
  22.         }
  23. }

  24. /*******************************************************************
  25. 喂狗的技巧:如果一个大循环少于看门狗益处时间,
  26. 放在while(1)哪个地方都可以啊,如果大于,看下
  27. 哪个地方停顿时间长就放哪
  28. *********************************************************************/
复制代码


回复

使用道具 举报

ID:209390 发表于 2018-2-6 15:14 | 显示全部楼层
配置好,在主函数里喂狗,不要在中断里喂
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表