推广 热搜: 考试动态  可查  会计  公布  工程类  开始  成考招生简章    2015考研复试  自考报名 

探索80C51的三种很规的复位技术

   日期:2021-07-27     来源:www.918yc.com    作者:未知    浏览:604    评论:0    
核心提示:标准80C51片内现有些复位逻辑比较容易,只有通过一条复位引脚RST进行外部扩展。
标准80C51片内现有些复位逻辑比较容易,只有通过一条复位引脚RST进行外部扩展。技术手册中给出了上电复位和人工复位电路的接线办法,借用于一只专用外围芯片,如MAX813L或DSl323等,来扩充欠压复位和看门狗复位也有文章介绍。
本文将介绍三种很规扩展复位方法软件复位、软硬件复位和非法地址复位。

软件陷阱技术及其改良办法

软件陷阱是一种捕捉程序“跑飞”的编程办法。一般可以在程序中设置软件陷阱,引导程序失去控制的单片机跳转到一个指定的地址去实行,最后回复到正常轨道上来。软件陷阱可以设置在用户程序的空隙处或者转移指令之后,还可以借助一系列的陷阱指令来填充程序存储器的空白区。达成软件陷阱功能的指令是一个“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系列等,内部都设计了专门用于达成软件复位的控制寄存器或者控制位。
软件复位是在借助软件陷阱技术或软件看门狗技术时,必需配套推行的一项后续处置工作。所谓“软件复位”是一种由用户软件控制的复位活动,就是借助一系列指令来模拟硬件复位所达成的各种操作内容,并且重新从头开始实行用户程序。
其中的操作内容应该包含:对于标准80C51的21个特殊功能寄存器SFR的复位操作,借助MOV指令比较容易达成。全部复位可能不是必需的,只管那些在用户程序中用到的SFR即可,可以由用户自己定制。对于无统一编址的程序计时器PC的复位,借助一条跳转指令即可。中断激活触发器的复位既容易让人们忽视,也困难达成。理由是它们对于用户程序是不可见的,没办法直接读写其内容。有些编程职员使用LJMP 0000H作为软件陷阱,觉得直接跳转到复位矢量就完成了软件复位,就是这种失误案例的典型代表。
清除中断激活触发器有什么必要呢?程序的跑飞是随机发生的,其起飞点完全可能发生在低级或高级中断服务子程序中,这个时候的中断激活触发器已经被置位。假如在程序回复之后没准时清除它们,将阻止将来出现的所有些同级或低级中断请求。
nload="ifthis.width=540" vspace=5>
中断激活触发器包含高权组和低权组两个触发器,电路组成如图1所示,该图是依据作者的理解和经验绘制的。电路中包括1个逻辑或门G1、两个S-R触发器FFl和FF2。当CPU响应低级中断请求之后,FFl被置位,其Q=0,封锁“低权组”不再受理新的低级中断请求;当CPU响应高级中断请求之后,由于G1有哪些用途而使FFl和FF2同时被置位,FFI的Q=0封锁“低权组”,FF2的Q;0封锁“高权组”,不再受理新的高级和低级中断请求。
怎么样设计“软件复位程序”呢?其撰写办法如下。
SWRST: ;概念软件复位程序的实质入口地址
CLR EA ;第一关闭中断源总使能位
SETB FO ;设置一个软件复位标志位
nload="ifthis.width=540" vspace=5>
MOV PO,#0FFH;设定通用端口PO为高阻输入状况
MOV P1,#0FFH;设定通用端口P1为高阻输入状况
MOV P2,#0FFH;设定通用端口P2为高阻输入状况
MOV P3,#0FFH, 设定通用端口P3为高阻输入状况
MOV PSW,#00H;设定程序状况字寄存器为原始值
……

[1][2]下一页

 
打赏
 
更多>同类资讯
0相关评论

推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报