找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 17003|回复: 0
打印 上一主题 下一主题
收起左侧

第11章 单片机小知识(复位 )

[复制链接]
跳转到指定楼层
楼主
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。
}
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏5 分享淘帖 顶1 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表