南阳市工信局地址在哪:利用单片机内部定时器实现软件看门狗
来源:百度文库 编辑:偶看新闻 时间:2024/05/21 23:38:05
勤镐工控(05/09/04)
软件看门狗(WATCH DOG)也叫做程序运行监视系统。当程序运行受到干扰,程序飞到一个临时构成的死循环中时,系统将完全瘫痪,软件陷阱也无能为力了,这时就需要人工复位或硬件复位;如果没有人工操作和硬件复位系统,我们采用软件看门狗技术同样也能使系统复位,恢复正常。这种程序监视系统就好比主人家养了一条狗,主人总要定时喂狗,如果主人忘了喂狗(程序受到干扰,跑飞掉了),狗就会大叫起来,提醒主人(程序重新运行)。软件看门狗的特性如下:
1、本身独立工作,基本上不依赖CPU;
2、CPU在一个固定的时间间隔内和系统打一次交道(喂一次狗),以表明系统目前工作正常。
3、当CPU陷入死循环后,能及时发觉并使系统复位。
当系统陷入死循环后,怎样才能从死循环中跳出来呢?只有比这个死循环更高级的中断程序才能夺走CPU的控制权。为此,可以用一个定时器来做软件看门狗,因为定时器在运行时不占用CPU资源,它是独立工作的,所以,将它的溢出中断设定为最高优先级中断,系统的其它中断均设为比它低级的中断优先级。然后根据看门狗的定时时间来设定定时器初值。软件看门狗启动后,系统工作程序必须经常“喂它”,且每两次之间的间隔不得大于定时器的定时时间。程序中只要设立一个设置定时器初值的子程序,喂它时只要调用这个子程序即可。
当程序陷入死循环后,定时器溢出,产生高优先级中断,从而跳出死循环。我们还可以在定时器中断服务程序中放置一条LJMP ERR指令,即可使程序转向出错处理程序;由出错程序来完成以后的工作,并用软件的方法使系统复位。
以下是一个用定时/计数器T0作软件看门狗的完整程序:
ORG0000H
AJMPMAIN
ORG000BH
LJMPERR
MAIN:MOVSP,#60H
MOVPSW,#00H
MOVSCON,#00H
MOVTMOD,#01H;设置T0为16位定时器
SETBET0 ;允许T0中断
SETBPT0 ;设置T0中断为高级中断
MOVTL0,#00H;设定T0的定时初值,定时时间约为16ms(6M晶振)
MOVTH0,#0B0H
SETBEA ;开中断
SETBTR0 ;启动T0
LOOP:...... ;主程序开始
LCALLWATCH DOG ;调用喂狗子程序
......
LJMPLOOP
WATCH DOG:MOVTL0,#00H;喂狗子程序
MOVTH0,#0B0H
SETBTR0
RET
ERR:POPACC ;定时器中断
POPACC ;看门狗软件复位程序
CLRA
PUSHACC
PUSHACC
RETI
在程序中,由于执行了中断服务程序后,PC的指针已经指向0000H,从而实现了软件复位的目的。
软件看门狗(WATCH DOG)也叫做程序运行监视系统。当程序运行受到干扰,程序飞到一个临时构成的死循环中时,系统将完全瘫痪,软件陷阱也无能为力了,这时就需要人工复位或硬件复位;如果没有人工操作和硬件复位系统,我们采用软件看门狗技术同样也能使系统复位,恢复正常。这种程序监视系统就好比主人家养了一条狗,主人总要定时喂狗,如果主人忘了喂狗(程序受到干扰,跑飞掉了),狗就会大叫起来,提醒主人(程序重新运行)。软件看门狗的特性如下:
1、本身独立工作,基本上不依赖CPU;
2、CPU在一个固定的时间间隔内和系统打一次交道(喂一次狗),以表明系统目前工作正常。
3、当CPU陷入死循环后,能及时发觉并使系统复位。
当系统陷入死循环后,怎样才能从死循环中跳出来呢?只有比这个死循环更高级的中断程序才能夺走CPU的控制权。为此,可以用一个定时器来做软件看门狗,因为定时器在运行时不占用CPU资源,它是独立工作的,所以,将它的溢出中断设定为最高优先级中断,系统的其它中断均设为比它低级的中断优先级。然后根据看门狗的定时时间来设定定时器初值。软件看门狗启动后,系统工作程序必须经常“喂它”,且每两次之间的间隔不得大于定时器的定时时间。程序中只要设立一个设置定时器初值的子程序,喂它时只要调用这个子程序即可。
当程序陷入死循环后,定时器溢出,产生高优先级中断,从而跳出死循环。我们还可以在定时器中断服务程序中放置一条LJMP ERR指令,即可使程序转向出错处理程序;由出错程序来完成以后的工作,并用软件的方法使系统复位。
以下是一个用定时/计数器T0作软件看门狗的完整程序:
ORG0000H
AJMPMAIN
ORG000BH
LJMPERR
MAIN:MOVSP,#60H
MOVPSW,#00H
MOVSCON,#00H
MOVTMOD,#01H;设置T0为16位定时器
SETBET0 ;允许T0中断
SETBPT0 ;设置T0中断为高级中断
MOVTL0,#00H;设定T0的定时初值,定时时间约为16ms(6M晶振)
MOVTH0,#0B0H
SETBEA ;开中断
SETBTR0 ;启动T0
LOOP:...... ;主程序开始
LCALLWATCH DOG ;调用喂狗子程序
......
LJMPLOOP
WATCH DOG:MOVTL0,#00H;喂狗子程序
MOVTH0,#0B0H
SETBTR0
RET
ERR:POPACC ;定时器中断
POPACC ;看门狗软件复位程序
CLRA
PUSHACC
PUSHACC
RETI
在程序中,由于执行了中断服务程序后,PC的指针已经指向0000H,从而实现了软件复位的目的。
单片机中的看门狗是什么
单片机倒计时定时器原理图
单片机定时器/计数器初始化的计算方法
用单片机做定时器的问题
我想问单片机中看门狗是如何用软件进行应用的有的话发到我的邮箱中!!xingudongde@163.com先谢谢了
怎样去掉烦人的“看门狗”软件?
请问单片机中的定时器1的溢出率是怎么回事呢?
AVR单片机定时器如何使用?偶是初学者,具体些?
52单片机的T2定时器最长定时时间是多少?
关于陵阳单片机的定时器\计时器问题
单片机定时器在关中断后计数值会还原吗?
如果单片机芯片加了自复位,是否可以不加看门狗?
单片机能否实现PID控制?
利用声卡可以实现
MCS-51单片机定时器工作方式0是指什么工作方式?
如何实现内部联网共享
怎样利用软件路由?例如,win2003操作系统内置了路由器的功能,可以利用软路由实现共享上网。
利用单片机设计电子钟程序是什么?
各位大虾,请问nokia7610能利用软件来实现全屏播放视频文件吗?这个软件那里有?
多普达565不利用别的软件可以实现把录音做为铃声吗?
利用软件实现汽车、飞机模拟驾驶训练的主要技术是
利用软件实现汽车、飞机模拟驾驶训练的主要技术是
2.利用软件实现汽车、飞机模拟驾驶训练的主要技术是
利用软件实现汽车、飞机模拟驾驶训练的主要技术是