找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1689|回复: 3
收起左侧

问各位一个关于51单片机看门狗的问题

[复制链接]
ID:676489 发表于 2020-2-8 17:21 | 显示全部楼层 |阅读模式
  1. sfr WDTRST=0xa6; //声明看门狗寄存器
复制代码
然后主程序启用看门狗,如下
  1. WDTRST=0x1e;
  2. WDTRST=0xe1;
复制代码
再然后进入中断程序(中断检查过,没问题)
  1. void kan()interrupt 1{                  
  2.         TL0=(65536-1000)%256;
  3.         TH0=(65536-1000)/256;
  4.         if(++x==146){   //把146设置成14600,系统也不会复位
  5.                 x=0;
  6.                 WDTRST=0x1e;
  7. WDTRST=0xe1;  
  8.         }
复制代码
于是我在x=0;后面加了个while死循环,146变成14600
  1. void kan()interrupt 1{
  2.         TL0=(65536-1000)%256;
  3.         TH0=(65536-1000)/256;
  4.         if(++x==146){
  5.                 x=0;while(1);
  6.                 WDTRST=0x1e;
  7. WDTRST=0xe1;
  8.         }
复制代码
14.6秒进入中断后死循环,主程序没有执行,我想看门狗会溢出,然后复位系统。
可是并没有复位。请问各位这是什么原因?难道我看门狗设置的有问题吗?求助



回复

使用道具 举报

ID:235200 发表于 2020-2-9 00:52 | 显示全部楼层
虽然14.6秒进入了死循环,但这个死循环仍然会产生定时中断再一次进入后,又跳过了死循环,要达到目的,在x=0;后还加一条TR0=0;就能实现了
回复

使用道具 举报

ID:326783 发表于 2020-2-14 16:55 | 显示全部楼层
看门狗最好不要加在中断中执行,放在主程序里.
回复

使用道具 举报

ID:159575 发表于 2020-2-16 18:21 来自手机 | 显示全部楼层
中断里喂狗,不会复位的
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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