中国软件网

您现在的位置是:网站首页>软件百科

软件百科

51单片机—软件看门狗

中国软件网2023-03-11软件百科家人定位软件
k线训练软件,家人定位软件,365抽奖软件,51单片机—软件看门狗,k线训练软件,家人定位软件,365抽奖软件的书,突然发现自己学了这么长的时间还没有用过看门狗这个东东~~表示很惭愧,(*^__^*)嘻嘻,当程序

51单片机—软件看门狗

51单片机—软件看门狗,

  k线训练软件,家人定位软件,365抽奖软件的书,突然发现自己学了这么长的时间还没有用过看门狗这个东东~~表示很惭愧,(*^__^*) 嘻嘻

  当程序跑飞到一个临时构成的死循环中时,这是如果没有人为的操作(也就是按下复位键),那么软件系统将完全瘫痪。那么我们就要让MCU自己实现监视系统运行的情况,这就是程序运行监视系统(WatchDog)。

  简单来说吧,好比一个主人养了一条狗,主人在正常工作时总是不忘记每隔一段时间就喂一次狗,狗吃过东西就安静下来,这样也就不会影响主人生活。但是如果主人打瞌睡忘记喂狗,那么时间到了,狗就饿了,发现主人还没有喂它,就会大叫起来,把主人吵醒。呵呵,这就是喽。。。。。。国外把这种程序运行监控系统成为WatchDog(看门狗)。其中看门狗的特性有:

  1》本身能独立工作,基本上不依赖于CPU(这里还要解释一下,它占用CPU主要是那么几微秒,既喂狗)

  2》CPU在一个固定的时间间隔和系统打一次交道(也就是喂狗,1中已经提到),以表明系统目前正常

  当系统陷入死循环后,什么样的程序才能使它跳出来呢?只有比这个死程序更高级的中断程序才能夺走死程序对CPU的控制权。为此,咱们可以用一个定时器来做看门狗,将它的溢出中断设定为高优先级中断,然后将系统的其它中断设定为低优先级的中断(这里一定要保证你设定的看门狗的那个中断一定要比你程序中的其它的中断要高!!!!)(这里的设置方法很多,但是刚才说的原则一定要满足!)。那就比如说吧,用T0作看门狗,定时约为16ms,如果你的系统中没有用到INT0,那么你就不需要设置PTO了(这里我就不多解释了~~大家懂得的)。

  当看门狗启动后,系统工作程序必须经常“喂它”,而且每两次的间隔不得大于16ms(这里还是上边的例子)

  当程序陷入死循环后,16ms之内即可引起一次T0中断,产生高优先级中断,从而结束死循环。同时,建议在T0中断里直接转向出错处理程序,也就是在中断向量区放置一条“LJMP ERROR”就哦了(这里用汇编语言好解释~~)

  下面是用汇编写的看门狗程序,它包含模拟的主程序,“喂狗”(DOG)程序和空弹返回0000H(TOP)程序。

  MAIN: MOVSP,#06H;模块硬件复位,这些可根据系统对资源的使用情况增减

  TOP:POPACC;空弹断点地址,也就是先将你压入的地址取出来,然后赋予新的值

  这是软件抗干扰的方法之一,还有一种方法就是软件陷阱技术,这个也挺简单的,我也就不多赘述了~~

  提示:软件陷阱就是一条引导指令强行将捕获的程序引向一个指定的地址,再那里有一段专门对程序出错进行处理的程序,用来使程序按既定的目标执行。真正的软件陷阱由三条指令组成:

很赞哦!