网站大量收购闲置独家精品文档,联系QQ:2885784924

单片机常用软件抗干扰技术的研究.docx

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机常用软件抗干扰技术的研究 1 系统的可靠性设计 在单次机制设计中,中断设计是一项系统工程,应在软件、硬件和结构设计方面进行全面考虑。单片机系统抗干扰设计的根本是硬件系统的可靠性设计,而软件系统的可靠性设计起到抑制外来干扰的作用。在进行单片机系统设计时,应做到在提高硬件系统抗干扰能力的同时,采用适当的软件抗干扰措施。软件抗干扰设计因其设计灵活、节省硬件资源、可靠性好越来越受到重视。软件抗干扰设计的技术主要有:软件陷阱捕获、软件看门狗、开机自检、指令冗余、输出端口刷新等技术。通过软件系统的可靠性设计,可达到最大限度地降低干扰对系统工作的影响,确保单片机能及时发现因干扰导致程序出现的错误,并使系统恢复到正常工作状态或及时报警的目的。下面就以MCS-51单片机系统为例,介绍在进行单片机系统设计时常用软件抗干扰技术。 2 常用软件干扰技术 2.1 捕获程序错误 程序存储器中的未使用区域一般全是0FFH,对MCS-51来说是“MOV R7,A”的单字节指令,若因干扰导致单片机的程序计数器PC值被错置,程序一旦跑飞到这些非程序存储空间,就会飞流直下,引起程序出错。捕获是指将跑飞的程序引向指定位置,再进行出错处理。这通常采用软件陷阱实现。故要先合理设计陷阱,其次要将陷阱安排在适当的位置。 2.1.1 子程序入口地址的处理 软件陷阱是指用来将捕获的跑飞程序引向程序“跑飞”处理子程序入口地址的指令。这通常用2条空操作和无条件跳转指令实现,无条件跳转指令指向程序“跑飞”处理子程序的入口地址。其具体实现代码为: NOP NOP LJM PFLY 2.1.2 软件陷阱要求 对未使用的程序存储器区域,通常在一些固定地址加上5个字节的软件陷阱指令,如果程序飞到这些未用区域,就会执行无条件跳转指令,转到相应的程序出错“跑飞”处理子程序。其具体实现为在源程序的末尾用起始地址伪指令加上如下软件陷阱指令: ORG 0600H(或07FBH) NOP;软件陷阱 NOP LJM PFLY 对中断向量区后、表格区后、各程序段之间(如子程序之间及一段处理程序完成后)及一页的末尾处加上软件陷阱,效果会更好。其具体实现的一段程序例子为: TAB: ;表格区 DB … DB … NOP ;软件陷阱 NOP LJM PFLY DSP: … ;显示子程序 RET NOP ;软件陷阱 NOP LJM PFLY DLY: … ;延时子程序 RET NOP ;软件陷阱 NOP LJM PFLY … FLY: … ;“跑飞”处理子程序,实现单片机复位 NOP NOP LJM P0000H 考虑到程序存贮器的容量,一般在1 k空间设置2~3个软件陷阱即可进实现有效捕获。 2.2 硬件复位系统程序 程序运行过程中,有时由于某种噪声干扰的影响,会出现死循环现象。这通常采用“看门狗”技术使程序脱离死循环。“看门狗”技术是通过不断检测程序循环运行时间,若发现程序循环时间超过最大循环运行时间,则认为系统陷入死循环,需进行出错处理。 “看门狗”技术既可由硬件实现,也可由软件实现。在系统成本允许的情况下,应选择专门的看门狗芯片或片内带看门狗的单片机。若条件不允许,应加软件“看门狗”。其具体实现是在单片机中设置一个定时器,定时发出中断信号,中断信号一经发出,就表示程序已经超时运行,在用户程序中及时安排清除定时器的计时数据。故程序正常运行时,不可能产生超时中断信号,反之,若出现死循环,则会产生超时中断信号,单片机收到这个中断信号后,进入中断处理程序,强迫单片机复位,重新执行程序。其具体实现代码为: ORG 0000H LJM PSTART ORG 000BH ;软件狗定时器T0中断入口 LJM PSWDG START: MOV SP,#50H MOV TMOD,#01H ;T0为16位定时器方式 MOV TL0,#78H ;2MHz晶振,定时5ms MOV TH0,#0ECH SETB ET0 ;允许T0中断 SETB PT0 ;设T0中断为高优先级 SETB TR0 ;启动T0计时 SETB EA ;CUP开中断 MAIN: … ;正常执行程序代码 MOV TL0,#78H ;喂狗防止看门狗定 MOV TH0,#0ECH ;时器T0溢出中断 … LJM PMAIN SWDG: CLR EA ;禁止中断 MOV PSW,#00H ;复位PSW寄存器 MOV R0,#02H RST1:MOV SP,#50H ;重置SP指针 MOV DPTR,#RST ;修改中断返回地址 PUSH DPL ;返回地址低字节入栈 PUSH DPH ;返回地址高字节入栈 RETI RST:DJNZ R0,RST1 ;两次执行RETI指令确保系统恢复正常 … ;模拟硬件复位单片机状态 LJM P0000H ;转到复位入口处 2

文档评论(0)

lmzwkyc + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档