中易网

51单片机的flash是32k,意思生成的hex文件一定要小于32k吗。它们俩是这种关系吗。

答案:3  悬赏:0  
解决时间 2021-01-14 06:27
  • 提问者网友:山高云阔
  • 2021-01-13 13:56
51单片机的flash是32k,意思生成的hex文件一定要小于32k吗。它们俩是这种关系吗。
最佳答案
  • 二级知识专家网友:何以畏孤独
  • 2021-01-13 15:32
你的hex文件里还有一些其他的数据,不需要烧到单片机里,所以即使文件稍微大于32k也可以。
只要能下载成功就说明没有问题。追问这个32k实际是指bin文件的大小吧?你能帮我看下这个图片三个东西,data,xdata,code各是什么意思吗
全部回答
  • 1楼网友:行雁书
  • 2021-01-13 17:18
不严谨的说法,hex文件是一种特殊格式的程序文件,hex文件里面存储的是全部ASCII字符,这些字符有固定的规律,如果想了解如何将Hex文件转为Bin文件可以查一下Intel的Hex文件的规格书。由于有一系列地址、数据、校验信息在HEX文件里,所通常状况下Hex文件是比BIN文件体积要大。也正是由于HEX文件中包含了地址信息,所以HEX文件可以存储非连续地址的二进制文件或者说是程序文件,在这种情况下HEX文件就有可能比包含同样多信息的BIN文件小了。
这其中的关键其实就是个HEX文件格式的问题,你随便查一查HEX文件的数据格式,你的问题就迎刃而解了。
至于你说的51单片机的数据区问题。
data区对应51单片机的内部RAM,C51里通过data(用于声明直接或间接寻址数据),idata(用于声明只间接寻址数据)。
xdata区对应51单片机的MOVX指令寻址,传统51单片机中对应于外部RAM,一些变种的51单片机(现在主流的单片机应该都算是传统51单片机的变种)中扩展了内部RAM就是通过MOVX指令做的文章,C51中使用xdata关键字声明。
code区对应51单片机的程序存储区,这个不多说了,C51中可以使用code关键字将数据定义在程序存储区。
另,找本C语言的书看看吧,这些都是最基础的东西,good luck.
  • 2楼网友:玩世
  • 2021-01-13 15:52
hex文件已经34K了 不是代码有34k 或许你的代码也就十几k而已 因为hex还包含其他的文件
data是数据的意思 xdata是外部数据的意思 code是代码的字符数量
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息