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

单片机-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;}
}

http://www.xdnf.cn/news/3435.html

相关文章:

  • 数字智慧方案5972丨智慧农业大数据平台解决方案(65页PPT)(文末有下载方式)
  • CompletableFuture
  • 【基础算法】二分查找算法 - JAVA
  • Python Cookbook-6.12 检查一个实例的状态变化
  • 【笔记】深度学习模型训练的 GPU 内存优化之旅③:内存交换篇
  • 【软件设计师:复习】上午题核心知识点总结(二)
  • C语言学习之动态内存的管理
  • VSCode插件Python Image Preview使用笔记
  • 【FreeRTOS-列表和列表项】
  • PyTorch中“原地”赋值的思考
  • QT —— 信号和槽(带参数的信号和槽函数)
  • Qwen3 正式发布
  • Ethan独立开发产品日报 | 2025-04-30
  • Java中修饰类的关键字
  • [蓝桥杯 2021 省 AB] 砝码称重 Java
  • 【论文速递】2025年08周 (Robotics/Embodied AI/LLM)
  • Y1代码AC集
  • 坚鹏:平安保险集团《保险行业发展趋势与AI应用方法及案例》培训
  • 【Redis】Another Redis Desktop Manager 安装指南
  • 深入理解虚拟机与容器:原理、对比与应用场景分析
  • 动态规划简单题2
  • 算法-堆、排序算法、矩阵乘法
  • 面试手撕——迭代法中序遍历二叉树
  • 负载均衡深度实践:基于Nginx+Keepalived的高可用方案与Zabbix监控设计
  • Cesium Entity动态更新
  • 嵌入式AI还是一片蓝海
  • Day107 | 147.对链表进行插入排序 | 简单选择、冒泡、直接插入
  • 【专题五】位运算(2)
  • AXI中的out of order和interleaving的定义和两者的差别?
  • OSPF的路由