资料介绍
标准80C51片内现有的复位逻辑比较简单,只有通过一条复位引脚RST进行外部扩展。技术手册中给出了上电复位(POR,power on reset)和人工复位(MRST,manual reset)电路的接线方法;借助于一只专用外围芯片,如MAX813L或DS1323等,来扩充欠压复位(LVR,low voltage reset)和看门狗复位(WDR,watch dog timer reset)也有文章介绍。
本文将介绍三种非常规扩展复位方式:软件复位(SWR,software reset)、软硬件复位(SHR,software and hardware reset)和非法地址复位(IAR,illegal address reset)。
软件陷阱技术及其改良方法
软件陷阱(software trap)是一种捕捉程序“跑飞”的编程方法。通常可以在程序中设置软件陷阱,引导程序失控的单片机跳转到一个指定的地址去执行,最终回复到正常轨道上来。软件陷阱可以设置在用户程序的空隙处或者转移指令之后,还可以利用一系列的陷阱指令来填充程序存储器的空白区。实现软件陷阱功能的指令是一个“5字节指令串”,通常包含2条单字节NOP指令和1条3字节跳转指令。
NOP ;利用空操作指令
NOP ;来增加捕捉有效性
LJMP SWRST;无条件跳转到指定地址去
其中“SWRST”可以是一段“软件复位程序”的入口地址标号,也可以是复位矢量“0000H”,即主程序入口地址。
如果SWRST等于复位矢量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公司的P87LPC700和P89LPC900系列、TI- BB公司的MSC1200系列和SunPlus公司的SPMC65系列等,内部都设计了专门用于实现软件复位的控制寄存器或者控制位。
软件复位是在利用软件陷阱技术或软件看门狗技术时,必需配套实施的一项后续处理工作。所谓“软件复位”是一种由用户软件控制的复位活动,就是利用一系列指令来模拟硬件复位所实现的各种操作内容,并且重新从头开始执行用户程序。
其中的操作内容应该包含:(1)对于标准80C51的21个特殊功能寄存器SFR的复位操作,利用MOV指令很容易实现。全部复位可能不是必需的,只管那些在用户程序中用到的SFR即可,可以由用户自己定制。
2)对于无统一编址的程序计时器PC的复位,利用一条跳转指令即可。(3)中断激活触发器的复位既容易被人们忽略,也不容易实现。理由是它们对于用户程序是不可见的,无法直接读写其内容。有的编程人员采用LJMP 0000H(机器码为20 00 00H)作为软件陷阱,认为直接跳转到复位矢量就完成了软件复位,就是这类失误案例的典型代表。
清除中断激活触发器有何必要呢?程序的跑飞是随机发生的,其起飞点完全可能发生在低级或高级中断服务子程序中,这时的中断激活触发器已经被置位。如果在程序回复之后没有及时清除它们,将阻止以后出现的所有的同级或低级中断请求。
图1 中断激活触发器示意图
中断激活触发器包含高权组和低权组两个触发器,电路组成如图1所示,该图是根据作者的理解和经验绘制的。电路中包括1个逻辑或门G1、两个S-R触发器FF1和FF2。当CPU响应低级中断请求之后,FF1被置位,其Q = 0,封锁“低权组”不再受理新的低级中断请求;当CPU响应高级中断请求之后,因为G1的作用而使FF1和FF2同时被置位,FF1的Q = 0封锁“低权组”,FF2的Q = 0封锁“高权组”,不再受理新的高级和低级中断请求。
如何设计“软件复位程序”呢?其编写方法如下。
SWRST: ;定义软件复位程序的实际入口地址
CLR EA ;首先关闭中断源总使能位
SETB F0 ;设置一个软件复位标志位
MOV P0,#0FFH ;设定通用端口P0为高阻输入状态
MOV P1,#0FFH ;设定通用端口P1为高阻输入状态
MOV P2,#0FFH ;设定通用端口P2为高阻输入状态
MOV P3,#0FFH ;设定通用端口P3为高阻输入状态
MOV PSW,#00H ;设定程序状态字寄存器为原始值
…… ;(据实际需要还可初始化其他SFR)
MOV DPTR,#SWR0 ;为RETI准备弹出地址,而又不想改变执行顺序
PUSH DPL ;压栈低字节,在先
PUSH DPH ;压栈高字节,在后
RETI ;中断返回指令,清除高级中断激活触发器
SWR0: CLR A ;准备复位地址
PUSH ACC ;压栈低字节00H
PUSH ACC ;压栈高字节00H
RETI ;清除低级中断激活触发器,并跳到0000H
下载该资料的人也在下载
下载该资料的人还在阅读
更多 >
- 80C51单片机的最小系统
- 80C51单片机串行通信讲解
- 模拟IC与80C51单片机的接口资料下载 12次下载
- 单片机基础及应用|80C51单片机的结构及信号引脚资料下载
- 80C51单片机的串行口结构和原理的程序免费下载
- 51单片机教程之80C51的结构与原理知识点概述课件免费下载 14次下载
- 80C51单片机教程之80C51的汇编语言程序设计详细资料总结 15次下载
- 80C51单片机教程之80C51单片机的指令系统详细资料概述 25次下载
- 单片机教程之80C51的中断系统及定时和计数器的详细资料概述 9次下载
- 51单片机教程之80C51单片机的指令系统 36次下载
- 80C51单片机实用教程资料合集免费下载 60次下载
- 80C51单片机的硬件结构是怎么样的? 27次下载
- 80C51的非常规复位技术 69次下载
- 基于80C51的电动智能小车设计论文
- 80c51芯片中文资料
- MySQL三种日志讲解 1.3k次阅读
- STM32三种复位形式 1.5w次阅读
- 用DS80C51/2微控制器代替Atmel TS80C320U323 2k次阅读
- 干货:三大实例讲解三种C++运算符重载 4.1k次阅读
- 80C51单片机内部定时器和计数器的结构及原理解析 1.6w次阅读
- 80C51单片机实现专用寄存器位寻址的设计方案 3.9k次阅读
- 80C51单片机与8051单片机的区别是什么 9.7k次阅读
- 51单片机引脚简介 5.6w次阅读
- 80C51单片机的startup.a51程序模块的作用 9.2k次阅读
- 80C51单片机模拟I2C总线的主机程序分享 4.1k次阅读
- 80C51单片机与8051单片机的主要差别在哪里 8.4k次阅读
- 基于80C51单片机位寻址编程 3.9k次阅读
- 基于80C51单片机的智能电表设计分析 1.5w次阅读
- 解析80C51单片机中的cpu、存储器配置以及并行输入/输出口 2.8w次阅读
- mimo技术的三种模式介绍,mimo技术作用,mimo技术种类 6.8w次阅读
下载排行
本周
- 1FS4054H 输入电压范围3.8V~6.8V 输入最大耐压28V 输入过压关闭充电阈值6.8V
- 4.22 MB | 2次下载 | 免费
- 2AC/DC 225W 开板电源 LOF225-23BxxR2系列数据手册
- 2.70 MB | 1次下载 | 1 积分
- 3晶振技术解析---电子设备的“时钟心脏”
- 1.55 MB | 1次下载 | 免费
- 4AU6830M 集成音频 DSP 的 2 × 41W 数字型 Class D 音频功率放大器数据手册
- 1.86 MB | 次下载 | 免费
- 5AU6815E 集成音频 DSP 的2×32W数字型 Class D 音频功率放大器数据手册
- 1.21 MB | 次下载 | 免费
- 6I-PEX 82652-100B-02-D_CABLINE-CA系列40P极细同轴线束SI设计图纸
- 293.34 KB | 次下载 | 免费
- 7I-PEX 82863-100B-02-D_CABLINE-CA系列PCIe/USB4极细同轴线图纸
- 301.83 KB | 次下载 | 免费
- 8YA-002S屏幕挂灯说明书
- 1.25 MB | 次下载 | 免费
本月
- 1人形机器人执行、感知系统技术及市场解析
- 3.52 MB | 5次下载 | 免费
- 2WD431产品规格书
- 1.32 MB | 3次下载 | 免费
- 3A-29回音消除模块
- 1.28 MB | 2次下载 | 免费
- 4 双麦阵列回音消除及降噪模块 A-47 说明书
- 1.96 MB | 2次下载 | 免费
- 5FS4054H 输入电压范围3.8V~6.8V 输入最大耐压28V 输入过压关闭充电阈值6.8V
- 4.22 MB | 2次下载 | 免费
- 6A-68语音处理模组规格书V1
- 1.47 MB | 1次下载 | 免费
- 7A-29P回音消除模块
- 1.42 MB | 1次下载 | 免费
- 8瑞芯微RK3562开发板资料-飞凌嵌入式
- 2.80 MB | 1次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935137次下载 | 10 积分
- 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
- 1.48MB | 420064次下载 | 10 积分
- 3Altium DXP2002下载入口
- 未知 | 233095次下载 | 10 积分
- 4电路仿真软件multisim 10.0免费下载
- 340992 | 191469次下载 | 10 积分
- 5十天学会AVR单片机与C语言视频教程 下载
- 158M | 183361次下载 | 10 积分
- 6labview8.5下载
- 未知 | 81608次下载 | 10 积分
- 7Keil工具MDK-Arm免费下载
- 0.02 MB | 73836次下载 | 10 积分
- 8LabVIEW 8.6下载
- 未知 | 65991次下载 | 10 积分
电子发烧友App





创作
发文章
发帖
提问
发资料
发视频
上传资料赚积分
评论