您的位置 首页 硬件

51单片机—软件看门狗

这是第一次写一写下自己的学习的过程,这只是个开始,呵呵,当然没有结束的一个开始今天没有事情,就看看单片机的书,突然发现自己学了这么

这是榜首次写一写下自己的学习的进程,这仅仅个开端,呵呵,当然没有完毕的一个开端

今日没有作业,就看看单片机的书,忽然发现自己学了这么长的时刻还没有用过看门狗这个东东~~标明很羞愧,(*^__^*) 嘻嘻……

已然这是自己的榜首篇文章,那就来个简略,可是也好写的东东吧~~~

001.软件看门狗

当程序跑飞到一个暂时构成的死循环中时,这是假如没有人为的操作(也便是按下复位键),那么软件体系将彻底瘫痪。那么我们就要让MCU自己完成监督体系运转的状况,这便是程序运转监督体系(WatchDog)。

简略来说吧,比方一个主人养了一条狗,主人在正常作业时总是不忘掉每隔一段时刻就喂一次狗,狗吃过东西就安静下来,这样也就不会影响主人日子。可是假如主人打瞌睡忘掉喂狗,那么时刻到了,狗就饿了,发现主人还没有喂它,就会大叫起来,把主人惊醒。呵呵,这便是喽。。。。。。国外把这种程序运转监控体系成为WatchDog(看门狗)。其间看门狗的特性有:

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

2》CPU在一个固定的时刻距离和体系打一次交道(也便是喂狗,1中现已说到),以标明体系现在正常

3》当CPU堕入死循环后,能即便发觉并能够使体系复位

下面便是程序的规划进程了~~~

当体系堕入死循环后,什么样的程序才干使它跳出来呢?只有比这个死程序更高档的中止程序才干夺走死程序对CPU的控制权。为此,我们能够用一个守时器来做看门狗,将它的溢出中止设定为高优先级中止,然后将体系的其它中止设定为低优先级的中止(这儿一定要确保你设定的看门狗的那个中止一定要比你程序中的其它的中止要高!!!!)(这儿的设置办法许多,可是方才说的准则一定要满意!)。那就比方说吧,用T0作看门狗,守时约为16ms,假如你的体系中没有用到INT0,那么你就不需求设置PTO了(这儿我就不多解说了~~我们懂得的)。

当看门狗发动后,体系作业程序有必要常常“喂它”,并且每两次的距离不得大于16ms(这儿仍是上边的比如)

当程序堕入死循环后,16ms之内即可引起一次T0中止,发生高优先级中止,然后完毕死循环。一起,主张在T0中止里直接转向犯错处理程序,也便是在中止向量区放置一条“LJMP ERROR”就哦了(这儿用汇编语言好解说~~)

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

ORG0000H

AJMPMAIN

ORG000BH

LGMPTOP

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

MOVPSW,#OOH

MOVSCON,#01H

.

.

.

MOVIE,#00H

MOVIP,#00H

MOVTMOD,#01H

LCALLDOG;调用DOG的时刻距离应该小于例题中的16ms

.;这儿就省了要增加的程序,自己依据自需求来增加就哦了,我也就不费话了

.

.

DOG:MOVTH0,#0B1H;这便是喂狗程序,这儿用的是守时计数器0

MOVTL0,#0E0H

SETBTR0

RET

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

POPACC;这儿赋值为0,你懂得,也便是要让它回来到程序的最初~~

CLRA;当然你也能够不这样做,这儿也能够来一个调用指令,自己搞定吧!

PUSHACC

PUSHACC

RETI;(这儿是RETI,不是RET)

  到这儿看门狗的都该说清楚了~~~

  这是软件抗干扰的办法之一,还有一种办法便是软件圈套技能,这个也挺简略的,我也就不多赘述了~~

提示:软件圈套便是一条引导指令强即将捕获的程序引向一个指定的地址,再那里有一段专门对程序犯错进行处理的程序,用来使程序按既定的方针履行。真实的软件圈套由三条指令组成:

  NOP

NOP

LJMPERROR

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/yingjian/257945.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部