header
×
单片机 > 单片机程序设计 > 详情

关于stc51的冷启动下载和复位

发布时间:2020-05-30 发布时间:
|
Stc单片机里面有一段出厂时固化的程序,这段程序的作用是检测串口是否要下载程序,不需要则执行单片机内的用户程序。每次启动时运行这端程序,这就是为什么每次下载时要冷启动。而复位后单片机是从地址0000H处开始执行,地址0000H又会指向主程序入口,即主函数处,即片内下载的用户程序而不会执行前面已经固化的检测串口那段程序。这就是为什么单片机每次下载要冷启动,而复位不行。注意,程序前面的宏定义什么的东西不占用系统时间,所以主程序即主函数处。 
有一个办法可以给那些需要加电立刻启动的用户,STC单片机可以设置为加电时只有P1.0/P1.1为低电平时开始下载程序,否则直接执行用户程序。这种办法快,不用等前面检测串口的那段时间 。stc单片机冷启动是必须的而复位电路不是必须的,不管是冷启动还是手动启动。也就是想下载程序必须冷启动,而有没有复位电路无所谓。但是最小系统板上必须有复位电路,无论是上电复位,还是上电加手动复位,虽然在一些简单的程序中看不出区别,但是因为复位操作会对一些特殊寄存器产生影响,这样没有复位操作的话再次执行函数的时候会出现错误。单片机断电后在通电也会从主函数处继续执行,可能是单片机断电后地址自动回到0000H,但是那些特殊寄存器里的值不会改变。 
 
对于上电复位,貌似电路不会有电流流过,但是上电瞬间,有一个给电容充电的过程,这个过程中rst端口会出现一个正脉冲,只要该脉冲保持1ms以上就能使单片机复位。 
单片机的复位操作使单片机进入初始化状态,其中包括使程序计数器PC=0000H,这表明程序从0000H地址单元开始执行。单片机冷启动后,片内RAM为随机值,运行中的复位操作不改变片内RAM区中的内容,21个特殊功能寄存器复位后的状态为确定值,见下表。 
值得指出的是,记住一些特殊功能寄存器复位后的主要状态,对于了解单片机的初态,减少应用程序中的初始化部分是十分必要的。 说明:表中符号*为随机状态; A=00H,表明累加器已被清零; 
特殊功能寄存器  
初始状态 特殊功能寄存器 
初始状态 A  00H TMOD 00H B  00H TCON 00H  PSW  00H  TH0 00H SP 07H TL0 00H DPL 00H TH1 00H DPH 
00H 
TL1 
00H 



P0~P3 FFH SBUF 不定 IP  ***00000B SCON 00H  IE 
0**00000B  
PCON 
0*******B  
PSW=00H,表明选寄存器0组为工作寄存器组; 
SP=07H,表明堆栈指针指向片内RAM 07H字节单元,根据堆栈操作的先加后压法则,第一个被压入的内容写入到08H单元中; 
Po-P3=FFH,表明已向各端口线写入1,此时,各端口既可用于输入又可用于输出; IP=×××00000B,表明各个中断源处于低优先级; IE=0××00000B,表明各个中断均被关断;  
系统复位是任何微机系统执行的第一步,使整个控制芯片回到默认的硬件状态下。51单片机的复位是由RESET引脚来控制的,此引脚与高电平相接超过24个振荡周期后,51单片机即进入芯片内部复位状态,而且一直在此状态下等待,直到RESET引脚转为低电平后,才检查EA引脚是高电平或低电平,若为高电平则执行芯片内部的程序代码,若为低电平便会执行外部程序。 
51单片机在系统复位时,将其内部的一些重要寄存器设置为特定的值,至于内部RAM内部的数据则不变。


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
基于单片机利用无字库12864液晶模块自制日历
footer