以下是引用meteor_chu在2008-11-21 11:57:00的发言:原来一直以为MCU启动时会把flash中的程序,数据统统加载到RAM中。 但是MCU 的RAM一般比flash小很多,不可能全部加载进去。 请各位高人讲解一下MCU启动过程?给我们新手解解惑。谢谢! 不是高人哦 我也有不懂的地方,我们共同研究,这个问题问得太强。 谈MCU的启动并不是加电就能启动的。只有加电后复位条件满足才能启动。 以51为例,系统加电后,如果复位脚获得两个机器周期的高电平,完成启动过程。如果两个机器周期过后,复位信号还未撤销,则继续进行新一轮的启动过程。直到高电平被撤销。 启动成功后,芯片内部各寄存器处于就绪的初始状态。初始状态下,pc=0000,表示要从0000H开始执行程序,各特殊功能寄存器sdr大多数为0,只有几个特殊:sbuf不确定;sp=07,表示第一个压栈的数据要进入08,即不占用工作寄存器0区;各io口寄存器(80H、90H、A0H、B0H)均为0FFH(即各IO口线为1,高电平,表示处于允许数据输入的状态);对未用区域的SFR不能读写,读到的是随机数,写入的不能被保存。内部RAM区的状态如果停电时间较长,则大多数已经为0,少数还保持为停电前的状态,实际旧数据已不可用。如果电压还存在,只是手动复位,则与前面复位所述相同,而RAM区内容被完整保存。 至于在那两个复位必需的机器周期里MCU究竟做了那些事,我不能全部得知。 时钟振荡电路是只要通电就工作的,否则就不能核算两个机器周期。复位引脚就是逻辑电路中RS触发器的“R”有效,使输出清零,这个输出表示各寄存器的状态,所以大多数为0,也包括PC,至于为什么需要两个机器周期现不得而知,因为一个触发器的复位不需要那么长时间,莫非分区域的进行触发器复位?好我只知道那么多。也还有很多不知道的 。 |