复位就是使中央处理器(CPU)以及其他功能部件都恢复到一个确定的初始状态,并从这个状态开始工作。单片机在开机时或在工作中因干扰而使程序失控或工作中程序处于某种死循环状态等情况下都需要复位。
MCS-51单片机的复位靠外部电路实现,信号由RESET(简称RST)引脚输入,高电平有效,在振荡器工作时,只要保持RST引脚高电平两个机器周期,单片机即复位。若RST引脚一直保持高电平,那么,单片机就处于循环复位状态。为了保证复位成功,一般复位引脚RST上只要出现10ms以上的高电平,单片机就实现了可靠复位。复位后的特殊功能寄存器SFR的状态如表2-9所示。
表2-9 单片机复位后各内部寄存器SFR的状态
对MCS-51单片机复位状态表说明:
(1)(PSW)=00 H,由于(RS1)=0,(RS0)=0,复位后单片机选择工作寄存器0组。
(2)(SP)=07 H,复位后堆栈建立在片内RAM的08 H单元处。
(3)TH1、TL1、TH0、TL0的内容为00H,16位定时/计数器T0、T1的计数初值为0。
(4)(TMOD)=00H,复位后定时/计数器T0、T1为定时器方式0、非门控方式。
(5)(TCON)=00 H,复位后定时/计数器T0、T1停止工作,且外部中断0、1为电平触发方式。
(6)(SCON)=00 H,复位后串行口工作在移位寄存器方式,且禁止串行口接收。
(7)(IE)=00H,复位后屏蔽所有中断。
(8)(IP)=00 H,复位后所有中断源都设置为低优先级。
(9)P0~P3口锁存器都是全1状态(FFH),说明复位后4个并行接口设置为输入口。
在某些控制应用中,要注意考虑P0~P3引脚的高电平对接在这些引脚上的外部电路的影响。例如,当P1口某个引脚外接一个继电器绕组,当复位时该引脚为高电平,继电器绕组就会有电流通过,就会吸合继电器开关,使开关接通,可能会引起意想不到的后果。(www.xing528.com)
(10)(PC)=0000H,因此复位后程序总是从0000H开始,为此要在以0000 H开始的存储单元中存放一条无条件转移指令,以便跳转到实际程序的入口去执行。
复位后,程序存储器ROM内容不变。片内RAM和片外RAM的内容在上电复位后为随机数,而在手动复位后,原数据保持不变。
单片机片内的复位电路结构见图2-23。复位引脚RST通过一个施密特触发器与复位电路相连,施密特触发器用来抑制噪声,在每个机器周期的S5P2,施密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。
图2-23 单片机片内的复位电路结构
复位电路一般有上电复位、手动开关复位和自动复位电路3种,如图2-24所示。
图2-24 单片机复位电路图
1.上电复位电路
它是利用电容充放电来实现的。上电瞬间RST端的电位与VCC相同,随着充电电流的减小,RST端的电位逐渐下降。图中的R是施密特触发器输入端的一个下拉电阻,时间常数为100ms。只要VCC的上电时间不超过1ms,振荡器建立时间不超过10ms,这个时间常数足以保证完成复位操作。上电复位所需的最短时间是振荡周期建立时间加上两个机器周期时间,在这个时间内RST端的电平应维持高于施密特触发器的下阀值。
2.手动复位电路
它是上电复位与手动复位相结合的方案。上电复位过程与上电复位电路相似。手动复位时,按下复位按钮,电容C通过1kΩ电阻迅速放电,使RST端迅速变为高电平,复位按钮松开后,电容通过R和内部下拉电阻放电,逐渐使RST端恢复为低电平。
3.自动复位电路
它利用“看门狗”芯片(如MAX 705~708/813)内部的定时器的计时和清零来实现。若在1.6s内WDI端没有收到来自P1.0的触发信号,且WDI处于非高阻态,则WDO输出变低。只要RESET有效或WDI输入高阻,则看门狗定时器就被禁止,且保持清零和不计时状态。一旦RESET撤消并且WDI检测到短至50ns低电平或高电平跳变,则定时器将开始1.6s的计时。即WDI端的跳变会消零定时器,并启动一次新的计数周期。当单片机正常工作时,始终会执行CPL P1.0取反指令,使定时器的计时到一定时间清零,从而保证系统正常运行,不执行复位功能。当单片机软件“跑飞”,即工作不正常时,“看门狗”芯片内部的定时器计时就会产生溢出,从而使系统自动复位,恢复正常工作。利用自动复位电路,可以实现无人执勤,一般在环境比较恶劣的情况下使用。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。