51单片机(十二)—— 单片机复位

一、复位介绍

        复位为单片机提供了一条从已知初始条件启动处理的途径。复位期间,大部分控制和状态寄存器被迫使用初始值,单片机的外围模块被禁止,单片机用于复位的复位源有加电复位、外部RESET管脚复位、看门狗复位等。

         我们实验对应的硬件复位电路,如下图所示。

         这个图中集成了51单片机和AVR单片机的复位电路,对于51单片机,将J12上的跳线帽跳到左侧,则左侧的电路与单片机的复位引脚相连,正常情况由于R14的下拉作用,单片机的复位引脚为低电平,单片机正常工作,如果按下按键,VCC与单片机复位引脚相连,单片机产生复位。

二、例程测试

1、硬件复位

        这个实验我们来测试硬件复位功能,测试代码的主要部分如下所示,完整代码可以从本文资源中下载。

void main (void)
{
	unsigned char j;
	for(j=0;j<5;j++)       //LED灯闪烁5次
	{
		LED1=0;            //将P00口赋值0,对外输出低电平,灯点亮。
		delay(30000);      //调用延时函数
		LED1=1;            //将P00口赋值1,对外输出高电平,灯熄灭。
		delay(30000);      //调用延时函数
	}
	for(;;);
}

        在这个代码中,LED1闪烁5次,然后进入死循环。将代码烧写到单片机中并运行,LED1闪烁5次,按下复位按键,则LED1重新闪烁5次,说明单片机产生了复位,程序重新从头开始运行。

2、软件复位

        这个实验的代码如下所示

void main (void)
{
	unsigned char j;
	for(j=0;j<5;j++)       //LED灯闪烁5次
	{
		LED1=0;            //将P00口赋值0,对外输出低电平,灯点亮。
		delay(30000);      //调用延时函数
		LED1=1;            //将P00口赋值1,对外输出高电平,灯熄灭。
		delay(30000);      //调用延时函数
	}
	delay(60000);    //延时
	delay(60000); 	 //延时
	delay(60000); 	 //延时
	ISP_CONTR=0x20;  //软件复位
	for(;;);
}

         从代码中可以看到,上电之后LED1闪烁5次,然后延时,之后通过ISP_CONTR=0x20;语句将单片机软件复位。
将代码烧写到单片机中,LED1闪5下之后熄灭。过几秒之后,又闪5下,如此反复。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值