在和一人聊天时,遇到了一个问题,单片机复位的问题,实在是很高深啊,因为一般书里是不说的,所以上网看看,转载于下:
一、问题
1、单片机要完成复位,为什么复位信号必须至少持续2个机器周期啊。
2、复位期间单片机在做什么?主要是这2个机器周期内在做什么。
3、单片机上电之后复位之前,单片机在做什么?
二、答案
1.复位信号要持续一定的时期,因为检测复位信号状态首先需要一定的时间,其次是为了单片机状态的稳定。
2.主要做的就是初始化每个寄存器,包括最重要的PC指针,不包括RAM,然后单片机从复位地址开始执行程序。
3.单片机上电后,上电复位信号使单片机被锁定在复位状态直到复位信号撤销。复位信号一上电就有,但是这时单片机并不执行复位操作,首先要等Vcc稳定、然后晶振开始起振、振荡稳定后才执行两周期的复位操作(晶振没起振CPU怎么操作啊)。
因此单片机上电之后复位之前单片机不操作,状态稳定。开始复位操作时(振荡稳定后,也就是2周期开始)RESET信号仍然使单片机锁定在复位状态,但CPU执行PC指针、SFR等的复位操作。
所以从上电到复位信号撤销前,单片机的状态一直是稳定的,单片机程序跑飞是由于复位信号的保持时间小于这个过程所需的时间,也就是PC指针、SFR等还没复位,复位信号就撤销了而放任CPU执行,从而导致程序跑飞、单片机混乱等现象。复位信号的保持时间跟复位电路的设计有关。