关于keil里面的STARTUP.A51有什么用?

我在用KEIL建立工程的时候它会自动生成STARTUP.A51这么个文件,我用汇编编程,在编译的时候会有警告,并且下载到实验板后实验板也没反应,然后我把STARTUP.A51这个文件从工程里移除后再编译,警告没有了,实验板也有正常输出了,所以我想请教一下,关于STARTUP.A51这个文件到底干嘛的?为什么在用汇编的时候有这个问题
我知道它有初始化的功能,我想知道的重点是它在以汇编语言为编程语言的前提下对编译,调试的影响!因为用汇编会出现警告,比如说地址重叠

用汇编编程的话,不需要startup.a51。从项目中移除就好。
用户需要自己注意并完成所有需要的startup内容。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-07-28
单片机机初始清零
第2个回答  推荐于2018-03-13
startup.a51的作用
和汇编一样,在C中定义的那些变量和数组的初始化就在startup.a51中进行,如果你在定义全局变量时带有数值,如unsigned char
data **=100;,那startup.a51中就会有相关的赋值。如果没有=100,startup.a51就会把他清0。(startup.a51==变量的初始化)。
这些初始化完毕后,还会设置SP指针。对非变量区域,如堆栈区,将不会有赋值或清零动作。
有人喜欢改startup.a51,为了满足自己一些想当然的爱好,这是不必要的,有可能错误的。比如掉电保护的时候想保存一些变量,
但改startup.a51来实现是很笨的方法,实际只要利用非变量区域的特性,定义一个指针变量指向堆栈低部:0xff处就可实现。,
为什么还要去改?
可以这么说:任何时候都可以不需要改startup.a51,如果你明白它的特性。
相似回答