c程序hex文件在用keil2编译生成新的hex文件怎么不一样了

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c程序hex文件在用keil2编译生成新的hex文件怎么不一样了相关的知识,希望对你有一定的参考价值。

网上下载的c程序直接下载好用,用keil编译一下在下载就不能用了怎么回事,请高手帮帮忙,单片机是stc5a32s2

参考技术A 因为采用不同的存储器模式,对应的编译过程就不一样,你可以去看两者的反汇编程序!不同的模式,编译器会分配不同的静态、动态和堆栈空间!如果你的单片机没有外部ram,而你选择了large模式的话,你定义的变量可能会分配到外部ram中去,那样的话你程序还可能会是对的吗? 参考技术B 代码本身估计是没啥问题的,但你同时下载项目文件了吗,就是那个.uv2文件。另外,HEX文件必须使用对应的CPU,CPU不同,程序也必须做相应的修改。追问

单片机型号不一样,可是为什么不编译就好用呢,

追答

关键是项目文件,.uv2
另外,兼容51核心的单片机,如果仅仅使用了51或52的基本功能的话,的确是可以通用的。

参考技术C cpu参数设置

keil不能从.s跳到.c文件

参考技术A 加上要跳转的c程序。
这个C文件也是一个程序,其实就是转向执行这个C程序。把这个C文件中的程序定义为子程序,就是命个名,但不允许用main(),在主程序中去调用这个子程序就好了,需要这主程序的最前面加一条,#include要跳转的c程序。

以上是关于c程序hex文件在用keil2编译生成新的hex文件怎么不一样了的主要内容,如果未能解决你的问题,请参考以下文章

keil生成的文件分别是啥?

keil如何关闭.map文件

hex和bin文件格式的区别

谁能帮我把一个hex文件反编译为c语言文件?

自动生成版本信息,重新编译指定文件,一键编译IAR工程同时生成hex,bin,out文件

arduino 怎么生存hex