感谢各位大神指教多谢 |
weimeix 发表于 2021-10-29 09:16 多谢您的指教,明白了启动文件的用途万分感谢 |
稍微讲一下我理解的初始化。 通常单片机或其他计算机系统,在长时间断电后,上电复位,软件从头开始运行。这时,大多数情况下,默认RAM中的内容都是0x00h。这种情况下,做不做初始化,没多大关系。 当单片机或其他计算机系统运行过程中,按下复位按钮,或者断电后很快又上电,这时,会出现上次用到的RAM中的很大一部分,仍然保留了上次写入的数据或者是不确定的状态。如果自己写的程序中,能时刻记得,只要用到这些存储单元,就先初始化一下,也没问题。如果忘了,或者想省点事,STARTUP.A51就替你把活干了。 如果熟悉代码的话,看看STARTUP.A51,里面除了一些地址设置和循环的指令外,大量的都是 CLR A LOOP: MOVX XXXX,A DJNZ YYYY,LOOP 这样的代码。 |
多谢各位老师指教 |
创造生活 发表于 2021-10-23 09:47 客气了,我只是个老电工,你可以自己打开看一下没几条指令,就是个标准汇编文件,无非就是清零RAM、XRAM之类的操作,初始化一些BANK选择之类的 |
初始化运行环境可以参考楼上的标准酒店布局,手动复位也算,因为手动复位是上电,运行 STARTUP.A51 布置标准环境,然后再进行main()的 |
njzr 发表于 2021-10-22 20:24 老师这个初始化运行环境是什么意思呀?一般的手动复位算是初始化运行环境吗? |
C51的启动文件,建立运行环境的,编译器也是假设工作在初始化后的环境下,只要你用C编程就要加,与你程序结构是否模块化没有半毛钱关系。如果用汇编就不要加,自己进行必要的初始化即可。 |
我从来都不添加也没见有什么问题 |
应该是 STARTUP.A51 吧?不是A.51吧? 添加不添加,编译的时候,都会把STARTUP.A51 包含进去,只是不添加的话,包含默认的。一旦添加了,就有可能会更改,那么很可能会造成一些不必要的困扰,大家都用默认的,是最好的。 |
那叫启动文件,并不是清零而是复位,每一次开机或者按下复位键时都会调用这个文件。就像酒店入住一样,入住前客服要将房间布置成标准格式,无论上一个客户将房间搞成什么样,都会布置成没有人使用过一样。 |