单片机软件三重监视抗干扰技术-设计应用_第1页
单片机软件三重监视抗干扰技术-设计应用_第2页
单片机软件三重监视抗干扰技术-设计应用_第3页
单片机软件三重监视抗干扰技术-设计应用_第4页
单片机软件三重监视抗干扰技术-设计应用_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

精品文档-下载后可编辑单片机软件三重监视抗干扰技术-设计应用摘要本文以MCS—51单片机为例,说明了主程序、中断服务程序相互监视的抗干扰方法。该方法使用方便,编程灵活,大大提高了单片机应用系统的抗干扰性能。关键词单片机;干扰

应用于工业过程控制和智能化仪器仪表的单片机,由于现场条件往往十分恶劣,不可避免地会受到各种各样的电磁干扰。当串入系统的干扰作用于单片机内部的CPU部件时,后果更加严重,将导致系统失控。典型的失控故障是破坏程序计数器PC的状态,导致程序在地址空间内“乱飞”,或者陷入“死循环”。因此,尽可能早地发现程序失控,并采取相应的补救措施,是单片机应用系统抗干扰设计的重要内容。

使程序从“乱飞”状态纳入正轨的方法称为程序拦截技术,包括指令冗余技术、软件陷阱技术等。使程序摆脱“死循环”,通常多采用硬件电路实现的监视技术,又称“看门狗”技术(Watchdog)。常见的硬件“看门狗”电路有单稳态型“看门狗”电路、计数器型“看门狗”电路、微处理器监控专用芯片等。上述的抗干扰方法可参阅有关资料文献。本文将讨论由软件实现的“看门狗”技术。

由硬件电路实现的“看门狗”技术,可以有效地克服主程序或中断服务程序由于陷入“死循环”而带来的不良后果。但在工业应用当中,严重的干扰有时会破坏中断方式控制字,导致中断关闭,这时一般的硬件“看门狗”将不能使中断恢复正常。依靠软件进行多重监视,可以弥补上述不足。

软件“看门狗”技术的基本思路是:在主程序中对中断服务程序的运行进行监视;在中断服务程序中对主程序的运行进行监视;采用两个中断实施相互监视,称之谓软件三重监视抗干扰技术。从概率观点,这种相互依存,相互制约的抗干扰措施,将使系统的可靠性大大提高。

本文以MCS—51单片机为例,说明软件三重监视的基本原理。系统软件包括主程序、T0定时中断子程序和T1定时中断子程序3部分,将T0设计成中断,T1设计成低级中断,从而形成中断嵌套。1主程序监视过程设计主程序完成系统测控功能的同时,还要监视T0中断服务程序因干扰而引起的中断关闭故障。A0为T0中断服务程序运行状态的观测单元,T0每发生中断,A0计数单元少中断(T0定时溢出时间小于测控功能模块运行时间),引起A0的变化。在测控功能模块的出口处,将A0值与E0值进行比较,以判断A0是否发生变化。若A0发生变化,说明T0中断运行正常;若A0不变化,说明T0中断关闭,则转到程序入口0000H处,进行出错处理后,程序恢复正常运行。

设A0、E0、M计数单元分别为内RAM中的30H、40H和50H单元,监视程序如下:

loop1:MOV50H,#00H;清M单元

MOV40H,30H;暂存A0单元

…;测控功能模块

CLRC

MOVA,30H

SUBBA,40H;判断A0变化

JZloop

MOV30H,#00H

LJMPloop1

loop:LJMP0000H2T1中断服务程序监视过程设计T1中断服务程序在完成特定测控功能的同时,还要监视主程序的运行状态。在中断服务程序中设置一个主程序运行计时器M1,T1每中断,M便自行加1。M中的数值与T1定时溢出时间之积表示时间值。若由M表示的时间值大于主程序的运行时间,说明主程序因干扰而陷入了“死循环”,T1中断服务程序便修改断点地址,返回0000H,进行出错处理。若M不大于主程序运行时间,说明主程序运行正常,中断服务程序也正常返回。M单元在系统主程序运行中循环清“0”。

设单片机晶振频率为6MHz,T1以工作方式1产生2ms的定时中断,则T1的计数初值为:(216-N)×2×10-6=2×10-3

N=64536D=FC18H

主程序的循环时间为200ms,T取值应不小于64H,可取68H。A1为T1中断程序运行状态监测单元,取内RAM31H单元,M仍取50H单元,60H、61H为暂存单元,则T1中断监视程序如下:

PUSHPSW;保护现场

PUSHACC

MOVTH1,#0FCH;T1置初值

MOVTL1,#18H

INC31H;A1单元加1

INC50H;M单元加1

CLRC

MOVA,#68H

SUBBA,50H;T≥M?

JCloop

…;中断测控程序

POPACC;恢复现场

POPPSW

RETI;返回

loop:POPACC;恢复现场

POPPSW

POP60H;原断点弹出

POP61H

MOV60H,#00H;断点修改为0000H

MOV61H,#00H

PUSH60H

PUSH61H

RETI;返回3T0中断服务程序监视过程设计T0中断的功能是监视T1中断服务程序的运行状态。由于T0中断服务程序较短,因干扰而引起的“死循环”的几率很小,重点考虑中断关闭故障。A1、B1为T1中断运行状态观测单元。A1的初值为00H,T1每中断,A1便加1,T0中断服务程序中若检测到A1>0,说明T1中断正常;若A1=0,则B1单元加1(B1的初值为00H),若B1的累加值大于Q,说明T1中断失效,失效时间为T0定时溢出时间与Q值之积。例如:T0的定时溢出时间为4ms,T1的定时溢出时间为2ms,当Q=5时,说明允许T1的失效时间为20ms,在这样长的时间内,T1并没有发生中断,说明T1中断发生了故障。由于T0中断级别高于T1中断级别,所以T1的任何故障(如死循环、中断关闭)都会由T0检测出来。T0中断服务程序一般很短,发生“死循环”的几率很小。

设单片机晶振频率为6MHz,T0以工作方式1产生4ms的定时中断,则T0的计数初值为:

(216-N)×2×10-6=4×10-3

N=63536D=F830H

设计数单元A0、A1、B1分别为内RAM30H、31H、32H,Q=5,60H、61H为暂存单元,则T0中断监视程序如下:

PUSHPSW;保护现场

PUSHACC

MOVTH0,#0F8H;设T0初值

MOVTL0,#30H

INC30H;A0加1

MOVA,31H;A1单元判0

JZloop1

CLRA;清A1、B1单元

MOV31H,A

MOV32H,A

loop0:POPACC;恢复现场

POPPSW

RETI;返回

loop1:INC32H;B1加1

CLRC

MOVA,32H;B1≥Q?

SUBBA,#05H

JCloop0

POPACC;恢复现场

POPPSW

POP60H;原断点弹出

POP61H

MOV60H,#00H;修改断点0000H

MOV61H,#00H

PUSH60H

PUSH

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论