看门狗死活不清零,什么鬼?

2020-02-06 10:07发布

本帖最后由 JYX2015 于 2015-12-14 19:52 编辑

如题,这段代码咋一看是对的,但是就是没反应,是不是汇编指令错了?

  1. while (!TMR1IF)
  2.   {
  3.      CLRWDT();
  4.                               
  5.   }


  6. #define        CLRWDT()        asm("clrwdt")

复制代码

想不通。循环是能进的,应该没有被优化掉。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
tenx
1楼-- · 2020-02-07 07:07
中断中喂狗是不提倡的,起不到防跑飞的作用
fangjikun
2楼-- · 2020-02-07 10:43
int main (void)
   {    //单片机初始化         
         while (1)
                {       
                  asm("CLRWDT");
                 //函数1       
                  asm("CLRWDT");
                 //函数2       
                  asm("CLRWDT");
                 //函数3       
                  asm("CLRWDT");  
                 //函数4
                }
     }
清狗没反应,你通过什么手段来观察其效果?
JYX2015
3楼-- · 2020-02-07 14:48
 精彩回答 2  元偷偷看……
JYX2015
4楼-- · 2020-02-07 15:41
fangjikun 发表于 2015-12-16 22:09
int main (void)
   {    //单片机初始化         
         while (1)

把看门狗延时打到32秒。
32秒后系统自动重启,这不显然是看门狗的原因?
JYX2015
5楼-- · 2020-02-07 18:03
tenx 发表于 2015-12-16 13:02
中断中喂狗是不提倡的,起不到防跑飞的作用

这话没错。可是现在的情况是根本就不喂,而且找不到原因。
liansh2002
6楼-- · 2020-02-07 19:00
TMR1IF置1以后你根本就没手动清零吧,不然你这程序就是个死循环,根本运行不了

一周热门 更多>