当前位置: 首页 > news >正文

单片机-89C51部分:13、看门狗

飞书文档https://x509p6c8to.feishu.cn/wiki/LefkwDPU7iUUWBkfKE9cGLvonSh

一、作用

程序发生死循环的时候(跑飞),能够自动复位。

启动看门狗计数器->计数器计数->指定时间内不对计数器赋值(主程序跑飞,无法喂狗)->溢出,发出复位信号。

二、设置步骤

  • 设置“看门狗”相关寄存器, 启动“看门狗”;
  • 隔一段时间清零一次,“喂狗”;
  • 如果程序正常,一直运行;如果程序出错,没有按时“喂狗”,“看门狗”就在溢出的时候,复位系统。

0b0011 0101

EN_WDT设置为1,启动看门狗

CLR_WDT设置为1,开始重新计数

IDLE_WDT设置为0,空闲模式不计数,我们设备工作时处于正常模式,可以通过寄存器设置进入掉电模式、空闲模式,以节省电量。

PS2 PS1 PS0设置溢出时间

溢出时间是=(N* Prescale* 32768)/晶振频率

N是单片机的时钟周期,默认是12

Prescale是预分频数,由PS2 PS1 PS0组成

如:

程序:

#include <reg52.h>sfr WDT_CONTR=0xe1; //无需这句是否正常?
sbit led=P2^7;void delayms(unsigned int xms) {unsigned int i,j;for (i=xms;i>0;i--)for(j=110;j>0;j--);
}void main()
{WDT_CONTR=0x35;  //启动看门狗,开始重新计数,预分频数为64,2s不喂狗会溢出并复位led=0;delayms(500);led=1;while(1){delayms(3000);WDT_CONTR=0x35;}
}

相关文章:

  • PostgreSQL数据库操作SQL
  • Kotlin-运算符重载函数
  • SAE极速部署弹性微服务商城——实验记录
  • Cookie 是什么?
  • Python 与 MongoDB 深度融合:全流程数据库操作指南
  • 力扣——23合并升序链表
  • 使用listPersonalCertificates 命令列示WebSphere Application Server特定密钥库中的个人证书
  • 【Machine Learning Q and AI 读书笔记】- 03 小样本学习
  • “Everything“工具 是 Windows 上文件名搜索引擎神奇
  • xml 和 yaml 的区别
  • 关系型数据库设计指南
  • HOOK上瘾思维模型——AI与思维模型【88】
  • 【Linux系统】Linux进程信号(产生,保存信号)
  • 使用 Spring Boot Actuator 实现应用实时监控
  • 《TCP/IP详解 卷1:协议》之第九章:IP选路
  • 项目管理进阶:详解华为研发项目管理(IPD流程管理)【附全文阅读】
  • 机器视觉开发-打开摄像头
  • Selenium:模拟真实用户的爬虫
  • Python与深度学习:自动驾驶中的物体检测,如何让汽车“看懂”世界
  • 前端函数防抖(Debounce)完整讲解 - 从原理、应用到完整实现
  • 新势力4月销量出炉:零跑逾4万辆再夺冠,蔚来环比增近六成,小米下滑
  • 湖南新宁一矿厂排水管破裂,尾砂及积水泄漏至河流,当地回应
  • 国铁集团去年收入12830亿元增3%,全年铁路运输利润总额创新高
  • 解放日报:上海深化改革开放,系统集成创新局
  • 顺利撤离空间站,神十九乘组踏上回家之旅
  • 上海“模速空间”:将形成人工智能“北斗七星”和群星态势