探索80C51的三种非常规的复位技术
后出现的所有的同级或低级中断请求。
图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;首先关闭中断源总使能位
SETBF0;设置一个软件复位标志位
MOVP0,#0FFH;设定通用端口P0为高阻输入状态
MOVP1,#0FFH;设定通用端口P1为高阻输入状态
MOVP2,#0FFH;设定通用端口P2为高阻输入状态
MOVP3,#0FFH;设定通用端口P3为高阻输入状态
MOVPSW,#00H;设定程序状态字寄存器为原始值
……;(据实际需要还可初始化其他SFR)
MOVDPTR,#SWR0;为RETI准备弹出地址,而又不想改变执行顺序
PUSHDPL;压栈低字节,在先
PUSHDPH;压栈高字节,在后
RETI;中断返回指令,清除高级中断激活触发器
SWR0:CLRA;准备复位地址
PUSHACC;压栈低字节00H
PUSHACC;压栈高字节00H
RETI;清除低级中断激活触发器,并跳到0000H
以下几点需要说明:(1)首先关闭总的中断使能位,以确保软件复位过程顺利完成;(2)其中的核心指令是中断返回指令RETI,因为在整个指令集中只有该指令能够清除中断激活触发器;(3)末尾RETI指令的作用还代替了一条3字节的“LJMP 0000H”指令;(4)由软件陷阱捕获的跑飞程序并不一定同时置位了所有两个中断激活触发器,但是该程序仍然适用,并且也没有任何负面影响;(5)软件复位标志这里利用了PSW中的一个通用位F0,也可以利用F1、GF0、GF1以及RAM字节单元或位单元等;(6)软件复位是一种不外扩任何硬件电路、不导致单片机发生状态迁移、纯软件的复位方法。
软硬件复位技术
软硬件复位是软件复位功能的一种延伸,也是单片机的一种自主复位方式,既具有软件复位的特点(可以由编程人员按需要来启用),又具有硬件复位的特点(能够实现硬件复位的全部操作内容)。这种复位方式是本文作者自行规划、设计和命名的。
(a)分立件电路方式
(b)IC电路方式
在上述软件复位的基础上很容易实现这里所说的软硬件复位方式,不过需要外扩一定的硬件电路的支持。图2是两种配合软硬件复位的外扩电路。其中,图2 (a)电路是在普通复位电路的基础上,添加1只三极管Q1和3只阻容元件而成的,并且其导通与截止由一条并口引脚控制,如P1.0。平时P1.0维持高电平,Q1截止;当内部软件需要实施该复位时,从P1.0脚输出低电平,Q1导通把RST脚拉高,强行复位单片机。这里R3、R4和C2起着延时和限流的双重作用。图2(b)电路是在MAX812M对接80C51电路基础上添加一条连线而成的,其工作原理与上类似。该连线把MAX812M的人工复位输入脚 MR和一条通用I/O脚(如P1.0)连接起来即可。
如何设计“软硬件复位程序”呢?其编写方法如下。
SHRST:;定义软硬件复位程序的入口地址
SETF1;设置一个软件复位标志位
CLRP1.0;从P1.0输出低电平,开始实施软硬件复位
ORL PCON,#02H;置位PD,令单片机进入停机状态,即PD模式
;经过延时后RST被拉高,迫使单片机进入复位状态
;在复位操作完成并且唤醒单片机之后,将重新从0000H开始执行用户程序
以下几点需要说明:(1)如果利用这里的“软硬件复位程序”代替前面的“软件复位程序”,可以简化用户程序并且复位进行得彻底,但是需要增加一些硬件,并且也把可以定制的复位操作给转化成了固定的复位操作。(2)在图2所示的软硬件复位的支撑电路,除了可以提供复位信号给单片机,还有一个很大的好处,就是可以为其他外围电路提供复位信号,这弥补了传统80C51的一个欠缺。
标准80C51的复位引脚RST是只能输入的单向结构,不能由单片机主动地为外围芯片提供同步的复位信号;而MC68HC05和MC68HC08系列、ST公司的ST7系列,以及许多新款51兼容单片机都把RST引脚设计为可输入/输出的双向结构,在内部看门狗溢出复位的同时,也从RST输出一个高电平脉冲,控制其他外围芯片与单片机进行同步复位操作。例如,ATMEL公司的AT89S51/52、T89C51RD2、AT89C51RC等型号和 Philips公司的P89C51RC、P89C51RA2/RB2/RD2等型号,它们都带有内部看门狗。
非法地址复位技术
一般来说,非法地址复位是指由于意外原因导致程序计时器PC内容被
- 80C51单片机通过模拟SPI口驱动UZZ9001读写操作(11-30)
- 实验六 定时器、计数器(80C51单片机汇编语言编程(11-23)
- 实验七 串行通信(80C51单片机汇编语言编程)(11-23)
- 实验八 交通灯控制(80C51单片机汇编语言编程)(11-23)
- 实验九 定时、记数、显示(80C51单片机汇编语言编程)(11-23)
- 实验二:排序、加法(80C51单片机汇编语言编程)(11-23)