APP下载

C51单片机看门狗程序优化设计

2013-08-15

中国新技术新产品 2013年14期
关键词:看门狗主程序子程序

(陕西中医学院,陕西 西安 712046)

经济的发展,促进了科学技术的不断延伸,C51系统的单片机也在不断的发展,这大大满足了实际工作的需要,也不可避免的带来了一些弊端。比如单片及芯片的抗干扰现象,这种现象不利于智能型仪表单片机系统的稳定运行。本文就看门狗硬件电路及其设计方案展开分析,通过采取相应的措施,解决问题。

1 关于看门狗的电路系统分析

在实际工作中,看门狗的电路系统的应用范围是比较广泛的,它实现了单片机系统的内部相关环节的稳定运行,确保了无人监控下的程序的正常运作。看门狗电路系统的正常运行,离不开看门狗芯片与单片机的I/O引脚环节的正常运作。这就需要我们针对这一环节进行具体分析,I/O引脚环节的稳定性决定了看门狗系统的正常运行,该环节如果受到内外因素的干扰,是极易导致程序的不正常发展的,容易使系统陷入不良的循环中。为此我们要实现看门狗的引脚程序环节的稳定运行,从而保证单片机的有效复位,这样保障了程序的顺利执行,保证单片机的自动复位。

(1)为了保证看门狗电路系统的稳定运行,我们要进行看门狗电路设计方式的深化,它主要包括两种环节,硬件看门狗设计环节与软件看门狗设计环节。前者的正常运行,离不开对定时器的有效应用,从而确保主程序的有效监控,在主程序的运作过程中,我们要确保定时器的及时复位,避免下序环节出现运行故障。

软件看门狗技术模式与硬件看门狗有类似之处,它通过对软件的利用,实现程序的稳定运行。比如对51单片机的定时器的应用。它利用内部定位器实现对主程序的实施监控。确保主程序运作过程中的相关变量值的有效判断,确保该值的准确控制,在运作过程中,没有发生变化则就会进行程序的复位。

传统的看门狗电路复位指令是通过主程序的插入来进行的,其指令模式主要是脉冲式,进行两条取反指令的运行,这是为了促进程序跑飞时其中断功能的稳定运行,促进CPU的正常运作,保证中断子程序的稳定运行,确保该看门狗整体系统的正常运作。在此过程中,如果中断子程序执行喂狗指令,那么必然会看门狗的定时器的稳定运行,导致微机系统的运作混乱,不能实现其正常装套的运转,从而不利于实际工作程序的顺利开展。

(2)在喂狗指令的运作过程中,主程序系统都能得到良好的响应,促进单片机系统的稳定运行。在此运作过程中,有一种模式影响单片机的稳定运行,比如其主程序正常运行,但是其中断响应功能的缺乏,是不利于看门狗电路系统的正常运行,不利于单片机系统的正常工作。比如在系统进行中断子程序环节的运作时,受到外界因素的干扰。程序出现跑飞现象,导致中断功能的无法响应。

这种情况是由51单片机的中断系统内部的相关环节导致的,比如其两个优先级的状态触发器,进行两级中断响应状态的分别指标。在此过程中,如果CPU响应出现中断的现象,就会引发相关环节的优先级状态触发器,从而导致同级别的所有中断申请的屏蔽,等到reti指令运作的时候,此优先级状态触发器才会被CPU硬件清除,确保下序环节的中断请求的正常相应。当然,象上述这种情况是比较少见的。大多数情况下,程序跑飞后都会使pc指针越出有效程序区,造成“死机”。这时“看门狗”就起作用了。在大多数系统中,中断子程序执行的时间占总运行时间的百分比都非常小,而在执行中断程序时,pc指针跑飞越过reti指令,而主程序又能正常运行的机会就更少。

(3)在中断子程序的运作过程中,出现其数据信息的运作比较复杂,并且进行一系列的函数运作时,就很可能发生系统失常的现象,比如在智能流量计过程中的死机现象,这种死机现象并不是很明显,其键盘显示操作是正常情况,但是在设定参数环节,总流量不发生累计,导致中断系统的失效,进而不利于主程序的稳定运”指令直接插在中断子程序中是不合适的,而单独插在主程序中又显然是不够的。笔者通过仔细推敲后,将“喂狗”指令分解开来,取反指令变成置位和清零两种指令,将置位指令插在主程序中,而将清零指令插在t 0中断子程序中,这样将两者联系起来,缺一不可,无论主程序运行失效,还是t 0中断请求失效,都不能完成完整的“喂狗”指令,造成“看门狗”动作,从而确保了系统安全可靠地工作。

2 关于看门狗电路整体设计思路的分析

为了保证该看门狗电路整体设计的稳定运行,我们要进行C51单片机内部定时器系统的有效编程,确保看门狗的电路功能的稳定运行。进行软件环节与硬件环节的有效设置,确保看门狗的定时器设置程序的稳定运行。在此过程中,我们要实现对主程序的有效应用,确保对看门狗的定时器程序的有效设置,确保其定时器系统的计时环节的稳定运行,将其计时规定在50ms,当达到这一标准时,定时器会发生溢出中断,从而推动溢出中断服务程序环节的运作,确保下序环节的稳定运作,实现看门狗电路系统的正常运行。当num的值等于100时,说明看门狗定时器已经计时5s,此时,单片机I/O端口P1.0输出高电平,对程序进行复位。在此过程中,喂狗代码将被穿插于程序中循环体末尾。当循环体结束时,喂狗代码执行,关闭定时器1、清空num并重新初始化定时器设置。若循环体进入死循环,喂狗代码无法执行,num将一直累加至100,此时程序复位。 喂狗代码放置位置可根据num预计数值进行调整:当num门限值较小,即看门狗计数时间较短时,喂狗代码可放于程序中各循环体之后或均匀分布于整个主程序中。当num门限值较大,即看门狗计数时间较长时,喂狗代码可放于程序主循环体末尾。但是需注意看门狗计数时间必须长于正常工作时间,以免非正常复位。

结语

在此过程中,我们要注意对看门狗的定时器复位影响因素的应用,确保该用户程序的唯一指令的应用,避免出现看门狗定时器的误复位现象,避免出现系统的死机现象,从而保证看门狗系统内部程序的稳定运行,确保实际工作的正常开展。对没有中断的用户系统,只需将清零指令也插在主程序中就可以了;对于有多种中断的用户系统,如果没有中断嵌套,则清零指令可以插在任一个中断子程序中,而在主程序中适当加入一些有关中断的冗余指令,以免因有关中断的特殊功能寄存器数据受到干扰时导致中断功能失效。

[1]李烈彪,李仙.计算机系统的可靠性技术[J].计算机技术与发展,2007,17(11):142-145.

[2]范立南.单片机原理及应用教程[M].北京:北京大学出版社,2006.

[3]卢大伟,刘炳云.用定时器实现软件看门狗应注意的问题[J].中国仪器仪表,1998(04):36-37.

猜你喜欢

看门狗主程序子程序
把他叫醒
电控冰箱软件模块化设计
一种采用FPGA实现的通用看门狗电路
子程序在数控车加工槽中的应用探索
简化编程与子程序嵌套的应用
未经授权的第三方软件侵权问题研究
——以“腾讯与360之争”为视角*