复位是使单片机的CPU及系统的各个部件处于特定的初始状态,并使系统从初始状态开始工作。单片机的复位是一个很重要的内容,一般在系统上电或者程序死机的时候需要进行单片机的复位。
单片机的复位状态是单片机在上电时,首先进入的一个特定的状态。在复位状态下,CPU和整个硬件资源,特别是特殊功能寄存器都处于初始化的状态。如表2-7所示,列出了在单片机复位状态下的初始值。
表2-7 单片机的复位状态
续表
其中,带“*”号的为AT89S52所特有的,其余适用于所有的8051。从表2-7中可以看出,在复位状态下,PC=0000H,表示单片机CPU将从0000H单元开始向下执行程序。
单片机的复位电路是促使单片机进入复位状态的硬件结构。单片机的复位是很重要的,复位操作可以完成单片机的初始化,也可使处于死机状态下的单片机重新开始运行。
单片机复位的原理是在时钟电路开始工作后,在单片机的RST引脚施加24个时钟振荡脉冲(即两个机器周期)以上的高电平,单片机便可以实现复位。在复位期间,单片机的ALE引脚和 PSEN 引脚均输出高电平。当RST引脚从高电平跳变为低电平后,单片机便从0000H单元开始执行程序。
在实际应用中,一般采用外部复位电路来进行单片机复位。一般在RST引脚保持10ms以上的高电平,保证单片机能够可靠地复位。单片机的复位电路可以有上电复位、手动加上电复位、看门狗复位及一些复杂的复位电路。下面分别进行介绍。
上电复位电路的基本原理是利用RC电路的充放电效应,电路如图2-6所示。当单片机系统上电的时候,复位电路通过电容加在RST引脚一个短暂的高电平信号,这个高电平信号随着电容的充电而逐渐降低,这个高电平持续的时间和RC电路的充放电时间有关。
在实际应用的电路中,一般采用既可以手动复位,又可以上电复位的电路,这样可以人工复位单片机系统。这种电路如图2-7所示。上电复位部分的原理也是RC电路的充放电效应。除了系统上电的时候可以给RST引脚一个短暂的高电平信号外,当按下按键开关的时候,VCC通过一个电阻连接到RST引脚,给RST一个高电平,按键松开的时候,RST引脚恢复为低电平,复位完成。
定时监视器复位是采用单片机内部的看门狗来实现的复位操作。近年来新出的新型单片机均包含看门狗WDT,WDT可以根据应用程序的运行周期来设定。当应用程序在运行过程中,由于外界的干扰而进入非正常工作状态时,WDT定时计数器产生溢出信号,复位单片机,重新恢复正常运行。
图2-6 上电复位电路
图2-7 手动加上电复位电路
对于自身不带看门狗功能的单片机,可以采用专门的复位电路芯片,如MAXIM公司的MAX813L。MAX813L是带有看门狗和电源监控功能的复位芯片,具体的用法可以参考该芯片的资料手册。
对于前面介绍的简单的复位电路,干扰很容易传入复位端。虽然在大多数情况下不会引起单片机错误复位,但有时会使某些寄存器错误复位。因此,在一些要求严格的场合,需要对单片机的复位电路进行仔细设计,或者采用专用的复位芯片来完成,如图2-8和图2-9所示的便是两个例子。
图2-8 复杂的复位电路1
图2-9 复杂的复位电路2