51单片机程序空间大小

keil工程选择的mcu是at89c52,工程编译出来的HEX文件有19kb为啥可以下载到stc89c52,程序也能运行,52单片机flash不是只有8kb?为什么编译器... keil工程选择的mcu是at89c52,工程编译出来的HEX文件有19kb 为啥可以下载到stc89c52,程序也能运行,52单片机flash不是只有8kb?为什么编译器没有报错? 8kb flash可以允许多大的hex文件? 求专业解答,也可以一起讨论。 展开
 我来答
lycdl
高粉答主

推荐于2017-12-16 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2万
采纳率:94%
帮助的人:4927万
展开全部

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的,否则编译时肯定会报错的。

ATF144X
2013-12-25 · TA获得超过1.2万个赞
知道大有可为答主
回答量:5344
采纳率:77%
帮助的人:4659万
展开全部
HEX文件19KB,实际的代码量估计在6~7KB左右,STC89C51是8KB的正好能装下。
你要看你写的代码有多大,就看编译后CODE等于多少,不是看HEX文件的大小。
活着用HEX2BIN将HEX文件转换为BIN格式的,再看看多大。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhxiufan
2013-12-25 · 知道合伙人软件行家
zhxiufan
知道合伙人软件行家
采纳数:14923 获赞数:38385
国家科技进步奖

向TA提问 私信TA
展开全部
下载到单片机的程序是二进制数据,HEX文件内容是ASCII码表示的数据,所以19KB的HEX文件转换成二进制文件可能只有几K,8kb flash可以允许多大的hex文件这不好说,只能说8kb flash可以存下8K的字节的二进制文件。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式