用keil编译51程序时,下面的Program Size: data=47.0 xdata=0 code=3092,是什么意思?各个值允许最大是多少?

用keil编译51程序时,下面的Program Size: data=47.0 xdata=0 code=3092,是什么意思?各个值允许最大是多少?,第1张

data=47.0 编茄差译器编译后,程序总共需要拍则占用47字节的片内RAM空间。注意这个大小仅仅是累加而已,并未考虑各个块之间的空隙,也就是说实际占用的RAM空间可能多于此数值。

xdata=0 程序未使用片外RAM(映射)空间

code=3092 编译器编译出的各个代码块总共大小为3092字节。与前面的袭纳棚data一样,由于各个块之间可能存在空隙,因此实际生成的代码大小可能多于此数值。

AT89C52的程序空间是8KB是确认无疑的,但指的是存放纯二进制的机器码,就是二进制数。而KeilC编译的HEX代码文件并不是纯二进制数,是以ASCII码格式存放的文件,而且其中还有一些编译信息,如地址、校验和等。所以,不能看HEX文件的大小来确定下载到单片机内的真正的程序空间大小,也就是说HEX文件的大小并不是真正下载的单片机的程序大小。而下载到单片机的代码空间大小要看Keilc编译时给出的代码数的判乎历提示,才是真正要下载到单片机内的代码空间。举个例子,下图是一个程序编译后的提示,真正的二进制代码是337个字节,而HEX文件却是1KB。这里还有一个误区,你看到的HEX文件的大小是 *** 作系统给出的大小吧,它是取整KB的,就是说HEX文件不足1KB时,也显示是1KB。

再明确一点说吧,假如编译后的代码是750418,用纯二进制数(即BIN格式,有些汇编程序的编译器输出的就是BIN格式)的代码保存就是3个字节,而用HEX格式保存就是6个字节,因为要用6个ASCII码来表示。这来算来,HEX文件大小是BIN文件的二倍,加上一些地址信息,是大于二倍的。

好,回到你的问题来,你的HEX文件是19KB,你看一下编译后的代码大小提示,肯定是不掘搜会顷乎超过8KB的,否则编译时肯定会报错的。

取决于51单片机上的Flash存储器大小。

一般不用多少行来描述,而是锋信能编译多少Kb程序。通常51单片机只有2~8Kb,因此程序容量不大。有些可以达到64Kb,可以做很大的程序和处理较大的数据量。

2Kb大约不超过200行,8Kb能到500行,64Kb基本无限制了判册。掘基宏此后看软件是否有限制,通常没有注册的只能编译大约8Kb~32Kb的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12402383.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存