- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
探索 80C51 的三种非常规的复位技术
标准 80C51 片内现有的复位逻辑比较简单,只有通过一条复位引脚 RST 进行外部扩展。技术手册中给出了上电复位(POR,power on reset)和人工复位(MRST,manual reset)电路的接线方法,借助于一只专用外围芯片,如 MAX813L 或 DSl323 等,来扩充欠压复位(LVR,low voltage reset)和看门狗复位(WDR,watch dog timerreset)也有文章介绍。
本文将介绍三种非常规扩展复位方式软件复位(SWR,software reset) 、软硬件复位(SHR,software andhardware reset)和非法地址复位(IAR,illegal address reset)。
软件陷阱技术及其改良方法
软件陷阱(software trap)是一种捕捉程序“跑飞”的编程方法。通常可以在程序中设置软件陷阱,引导程序失控的单片机跳转到一个指定的地址去执行,最终回复到正常轨道上来。软件陷阱可以设置在用户程序的空隙处或者转移指令之后,还可以利用一系列的陷阱指令来填充程序存储器的空白区。实现软件陷阱功能的指令是一个“5 字节指令串”,通常包含 2 条单字节 NOP 指令和 1 条 3 字节跳转指令。
NOP ;利用空操作指令NOP ;来增加捕捉有效性
LJMP SWRST;无条件跳转到指定地址去
其中“SWRST”可以是一段“软件复位程序”的入口地址标号,也可以是复位矢量“0000H”,即主程序入口地址。如果 S W R S T 等于复位矢量 0000H,则会把捕捉到的跑飞程序引导到初始化程序入口地址去执行,从而达到回复到正常轨道的目的。这种处理方法只适合中断功能没有被启用的场合。可以设想,假如是在(低级或高级)中断服务程序中跑飞的,这时即使把程序拉回到起点 ,而中断激活触发器不能够被清除 ,会影响以后的中断请求无法被 CPU 响应。
如果 SWRST 等于“软件复位程序”的入口地址,则会引发一次“软件复位”。关于软件复位程序的设计方法,随后介绍。
总之,这种方法的指导思想是指,把未使用的ROM 空间用跳转引导指令填满,作为软件“陷阱”,以捕获“飞掉”的程序,并强行将捕获到的跑飞程序引向一个特定的地址,在那里由一段专门处理错误的程序进行处理,以恢复系统的正常运行。为提高跑飞程序的捕获率,通常还要在引导指令之前放置上几条空操作指令 NOP。理由是,8051 的指令编码采用的是不等长方式,长度分别为 1~3 字节,而程序跑飞又是通过非法随机改变 PC 值形成的。假若跑飞后的 PC 值落到 3 字节指令 LJMP 的中间,就会把操作数当作操作码来执行,将会产生不可预知的结果。为了提高捕捉的有效性,就在 LJMP 指令之前至少填充 2 条单字节的 NOP 指令。
如果把“5 字节指令串”改换成如下作者新设计的“4 字节指令串”,陷阱指令将会更加有效。理由是,该指令对应的目标码为“00 20 00 20H”,这段码无论重复多少次都是等同的。另外,应该在程序存储器 0020H 开始的 3 字节中再放置一条跳转到“软件复位程序”真正入口的中转指令 LJMP SWRST。经过核查,-0020H~0022H 字节恰好位于定时器 T1 中断矢量区尾部和串口中断矢量之前。
SWRST0 EQU 0020H:定义“软件复位程序”的间接入口地址为“0020H” NOP ;填充一条单字节的空操作指令,机器码是“00H”
LJMP SWRST0 ;无条件跳转到指定地址去。对应的机器码是“20 00 20H”
软件复位技术
软件复位是一种新技术,目前有越来越多的新型单片机配备了该功能。例如 Philips 公司的 P 87LPC 700 和P89LPC900 系列、TI—BB 公司的 MSCl 200 系列和 SunPlus 公司的 SPMC65 系列等,内部都设计了专门用于实现软件复位的控制寄存器或者控制位。
软件复位是在利用软件陷阱技术或软件看门狗技术时,必需配套实施的一项后续处理工作。所谓“软件复位” 是一种由用户软件控制的复位活动,就是利用一系列指令来模拟硬件复位所实现的各种操作内容 ,并且重新从头开始执行用户程序。
其中的操作内容应该包含:(1)对于标准 80C51 的 21 个特殊功能寄存器SFR 的复位操作,利用 MOV 指令很容易实现。全部复位可能不是必需的,只管那些在用户程序中用到的 SFR 即可,可以由用户自己定制。(2)对于无统一编址的程序计时器 PC 的复位,利用一条跳转指令即可。(3)中断激活触发器的复位既容易被人们忽略,也不容易实现。理由是它们对于用户程序是不可见的 ,无法直接读写其内容。有的编程人员采用 LJMP 0000H(
文档评论(0)