复位是单片机的初始化操作,只需给AT89S51的复位引脚RST加上大于2个机器周期(即24个时钟振荡周期)的高电平就可使AT89S51复位。
复位操作
当AT89S51进行复位时,PC初始化为OOOOH,使AT89S51单片机从程序存储器的OOOOH单元开始执行程序。除了进入系统的正常初始化之外,当程序运行出错(如程序“跑飞”)或操作错误使系统处于“死锁”状态时,也需按复位键即RST脚为高电平,使AT89S51摆脱“跑飞”或“死锁”状态而重新启动程序。
除PC之外,复位操作还对其他一些寄存器有影响,这些寄存器复位时的状态见表2-7。由表2-7可以看出,复位时,SP-07H,而4个I/O端口PO~P3的引脚均为高电平。在某些控制应用中,要注意考虑PO~P3引脚的高电平对接在这些引脚上的外部电路的影响。例如,Pl口某个引脚外接一个继电器绕组,当复位时,该引脚为高电平,继电器绕组就会有电流通过,吸合继电器开关,使开关接通,可能会引起意想不到的后果。
表2-7复位时片内各寄存器的状态
复位电路设计
AT89S51的复位是由外部的复位电路实现的。AT89S51片内复位电路结构如图2-17所示
复位引脚RST通过一个施密特触发器与复位电路相连,施密特触发器用来抑制噪声,在每个机器周期的S5P2:施密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。
复位电路通常采用上电自动复位和按钮复位两种方式。
最简单的上电自动复位电路如图2-18所示
对于CMOS型单片机,由于在RST引脚内部有一个下拉电阻,故可将电阻R去掉,而将电容C选为10 μF。
上电自动复位是通过外部复位电路给电容C充电加至RST引脚一个短的高电平信号,此信号随着VCC对电容C的充电过程而逐渐回落,即RST引脚上的高电平持续时间取决于电容C的充电时间。因此为保证系统能可靠地复位,RST引脚上的高电平必须维持足够长的时间。
除了上电复位外,有时还需要按键手动复位。按键手动复位有电平和脉冲两种方式。
按键手动电平复位是通过RST端经电阻与电源Vcc接通来实现,具体电路如图2-19所示
当时钟频率选用6 MHz时,C的典型取值为10μF,R取值为2kΩ。
脉冲复位是利用RC微分电路产生的正脉冲来实现的,脉冲复位电路如图2-20所示
图中的阻容参数适于6 MHz时钟。
图2-21所示电路能输出高、低两种电平的复位控制信号,以适应外围I/O接口芯片所要求的不同复位电平信号。图2-21中,74LS122为单稳电路。实验表明,电容C选择约为0.1μF较好
在实际应用系统设计中,若有外部扩展的I/O接口电路也需初始复位,如果它们的复位端和AT89S51的复位端相连,复位电路中的R、C参数要受到影响,这时复位电路中的R、C参数要统一考虑,以保证可靠复位。如果AT89S51与外围I/O接口电路的复位电路和复位时间不完全一致,使单片机初始化程序不能正常运行,外围I/O接口电路的复位也可以不与AT89S51复位端相连,采用独立的上电复位电路。若RC上电复位电路接施密特电路输入端,施密特电路输出接AT89S51和外围电路复位端,则能使系统可靠地同步复位。一般来说,单片机的复位速度比外围I/O接口电路快些。为保证系统可靠复位,在初始化程序中应安排一定的复位延迟时间。
相关文章