电子系统设计与创新能力培养1.ppt

  1. 1、本文档共108页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
程序设计 (2)寄存器资源分配 (3)标志位资源分配与功能 以上两项请直接参阅程序清单 程序设计 3.程序流程图 图5为主程序流程图。 具体程序设计略 程序设计 4.容错设计 允许错误存在,并能防止它对系统正常工作的破坏,称为“容错”。 人为操作失误是造成系统工作失败的最重要的因素。世界上许多次严重的事故,如切尔诺贝利核洩漏,就是错误操作造成的。 程序设计 4.容错设计 一个没有考虑容错的设计,包括一个程序,不能算一个完美的设计。 上述数字定时器程序就至少没有考虑二种人-机交互易产生的错误: (1)上电后,显示10分隐含时间。正常操作应当是:不设新时间;或者先按功能键,设分个位。再按功能键,设分十位。再按一次功能键正常倒计时。但是如果上电后直接按加键,则分个位将动作,这将导致功能键动作次数紊乱。 (2)倒计时开始后,如果按任何一键,也将出现非正常情况。 程序设计 4.容错设计 对于第一种情况,可以在系统时钟程序检测到“+”键时,先判别一下功能键次数是否为零,若是则不做加法而直接退出,见下面所列程序。 对于第二种情况,可以在开始计时后关闭外部中断,而在计时结束后再重新允许外部中断。 程序设计 5.软件的简单抗干扰措施 (1)指令冗余 现以CK0程序中的含有冗余指令的几个语句为例简单说明一下它的抗干扰原理。语句如下:(具体程序见程序清单) 程序设计 (1)指令冗余 程序正常运行时,程序计数器(PC)指针在执行JMP MPRO语句时指向095H,这条指令对应的机器码为80H,25H。前者是指令码,后者为相对跳转地址,即执行此指令后程序指针应跳转到25H加下条指令的PC值,即跳至OBCH。后面的三条空操作冗余指令对程序运行毫无影响。 程序设计 (1)指令冗余 倘若程序计数器的值受到了外界干扰,指向25H(如虚线所示),如果不加冗余指令,则25H被当做指令码,将执行ADD A, data addr,即执行累加器ACC加一个数据地址为紧跟其后的20H。下一条指令,由于PC指向B2H,将执行CPL bit addr,即对18H这个位地址了反。可见程序被完全破坏。 程序设计 (1)指令冗余 如果干扰后指针仍是指向25H,但下面有三条NOP指令,程序执行的是ADD A,00H,累加器的值会改变。但PC下一个指向的二个NOP,再下一个指向的将是正常的JB KS, RCKO语言。至少减少了程序被破坏的程度,能接着恢复正常运行。 冗余指令NOP通常加在2字节或3字节指令的后面。 程序设计 5.软件的简单抗干扰措施 (2)软件陷阱 程序的长度总是小于程序存储器的容量,本课题中程序长度为170H(368 Byte),而89C2051内部Flash memory的容量为2kB(800H),有大片的内存的FFH剩余区。FFH为MCS-51内核的指令代码MOV A,R7。在剩余区里可以安排若干跳转到初值化地址的指令,以便程序跳飞时能被这些陷阱所捕获,还原到初值化或其它程序,请参看程序清单。 程序设计 5.软件的简单抗干扰措施 (3)监视定时器 监视定时器(Watch Dog Timer-WDT)俗称“看门狗”,是一种最常用的很有效的抗干扰方法。它的工作原理可以用图1.10来说明。 程序设计 监视定时器是一个时间计数器,复位以后,每隔一个固定的时间tWDT由Q端发生一个进位脉冲,迫使MCU复位。MCU在程序正常运行时,启动WDT,并每隔tWDT的时间通过I/O口向WDT发送复位信号,所以WDT永远没有强迫MCU复位的可能。当程序受到干扰,“跑飞”以后,程序不能正常的向WDT发送,于是在跑飞tWDT时间以后,MCU复位,程序又纳入正常运行。 WDT可以用外部器件自行设计,也可以使用具有WDT功能的IC,如X5045。现在已经有不少MCU内部已带有WDT,只需程序控制其运行即可。 对低端产品的本设计而言还没有必要使用WDT。 程序设计 6.计时精度 既然课题提出了对时间精度的要求,设计时就必须予以考虑。 本设计是利用MCU的定时器软件计时。计时误差首先取决于MCU的时钟。 (1)MCU时钟引起的计时误差 MCU的fosc=6MHz,是由石英晶体振荡器产生的,其频率稳定度优于10-6,有时可达10-11。按10-6计算,每秒变化6μs,100分的变化仅0.036s,故此变化可以忽略。 程序设计 6.计时精度 (2)中断响应时间造成的误差 计时定时器的初填值,是按下式计算出来的 式中为计时器的容量,这里是65536,TINT为中断(计数溢出)的时间,TC为机器周期,这里TC=2μs。0.1s中断的初填值为15536(3CB0H)。由TC为整数,此初填值是无误差的。 程序设计 6.计时精度 但是由于中断请求到执行中断服务程序的第一条指令是需要几个TC

文档评论(0)

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

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

1亿VIP精品文档

相关文档