51单片机轻松入门—基于STC15W4K系列(C语言版)
李友全 编著:http://www.51hei.com/bbs/dpj-37954-1.html
第11章 单片机小知识(复位 ) 1 外部RST引脚复位(不断电下载程序) 2 软件复位 3 内部低压检测复位 4 看门狗复位 复位将使单片机内核及其它功能部件都处在一个确定的初始状态,并从这个状态 开始工作,复位分为热启动复位(断电复位)和冷启动复位(非断电复位)两大 类,它们区别如表11-1所示。 表11-1 冷启动复位与热启动复位对照表 冷启动复位 | 系统断电后再上电引 起的硬复位 | 热启动复位 | 通过RST引脚产生的 硬复位 | 内部看门狗复位 | 内部低压检测复位 | 通过对IAP_CONTR寄 存器操作的软复位 |
|
| 从系ISP监控程序区开始执行程序,如果检测 不到合法的ISP下载命令流,将软复位到用户 程序区执行用户程序 | 复位到用户程序区0000H处。 |
|
外部RST引脚复位就是从外部向RST引脚施加大于100uS宽度的高电平复位脉冲,外 部高电平消失后,单片机从系统ISP程序下载监控区启动,因此可以使用P5.4/RST引脚外 接常开按键到VCC的方式实现不断电下载程序(先点下载,后按复位键),这样可提高程序 下载速度。P5.4/RST引脚出厂时被配置为I/O口,要将其配置为复位引脚,需要在ISP下 载程序时设置(如上图),需要注意的是在ISP软件中改变了P5.4口的设置后,程序下载 到单片机并不立即生效,需要给单片机断电重启后才生效,ISP软件中的很多设置都是这 样的,测试过程注意断电重启才生效的问题。 2 软件复位 从用户程序区软件复位并切换到用户程序命令为: IAP_CONTR = 0x20 ; 从用户程序区软件复位并切换到ISP程序下载监控区命令为: IAP_CONTR = 0x60 ; 实验代码如下: #include "STC15W4K.H" // 注意宏定义后面没分号 void delay3s(void) { unsigned char i,j,k; for(i=255;i>0;i--) // 注意后面没分号 for(j=255;j>0;j--) // 注意后面没分号 for(k=255;k>0;k--); // 注意后面有分号 } void main(void) { P00=0; delay3s(); P00=1; delay3s(); IAP_CONTR = 0x20 ; // 选择用户程序区软复位。 // IAP_CONTR = 0x60 ; // 选择ISP区软复位。 while(1); } 3 内部低压检测复位 为防止电源接通与断开瞬间系统供电不稳定状态引起程序功能混乱(部分 外围器件供电不在要求范围内),在要求比较严格的运用中建议使用低压检 测复位,当电源电压VCC低于内部低电压检测门槛电压时,单片机产生复位, 当VCC高于内部低电压检测门槛电压时,单片机解除复位状态并恢复正常工 作,要使用此功能,前提是在STC-ISP软件下载程序时,允许低电压检测复 位,低压检测门槛电压就是复位门槛电压,IAP15W4K58S4单片机内部低压检 测门槛电压可设定范围是:2.03V—4.08V。 // 程序功能:程序运行状态LED点亮,复位状态LED熄灭。
#include "STC15W4K.H" void main(void) { while(1) { P41=0; // 点亮LED } } 4 看门狗复位
在工业控制、汽车电子、航空航天等需要高可靠性的系统中,为了防止系统在异常情况下 受到干扰,CPU程序跑飞,导致系统长时间异常工作,往往需要在系统中使用看门狗电路,看 门狗电路的基本作用就是监视CPU的工作,正常工作时,单片机可以在规定的时间内复位看门 狗(即喂狗),时间只要不超出看门狗电路的溢出时间即可,当系统进入死循环或者执行到无 程序代码区造成死机时,单片机就会停止喂狗,超过一定时间后,看门狗电路就会强制系统 复位,使系从新开始运行,要使用此功能,需要在STC-ISP软件下载程序时开启看门狗,开启 看门狗后程序必须不断地在规定的时间内喂狗,注意:看门狗一旦开启,单片机执行任何指 令都无法将其关闭,必须断电才能关闭。狗定时器溢出时间由ISP软件的分频系数确定(见下 页表格)。
具有看门狗的程序示例。 #include “STC15W4K.H” void main(void) { … // 其他初始化代码 while(1) { display(); // 显示程序 keyboard(); // 键盘程序 … // 其他代码 WDT_CONTR = 0x3c; // 喂狗信号,复位WDT。 } } |