单片机常用输出格式--Hex-80(Hex 386)

我前面曾经介绍了Intel 32 bit Hex,但并不是所有的.hex文件都属于这种格式。Keil输出的hex文件则是另外一个类似的格式Hex-80。与前者类似,纪录的格式为:
:LLAAAARRDDDD………DDDDCC
LL:             Length field-长度段:数据段(D)的字节数
AAAA:      Address field-地址段:数据段第一个字节的地址
RR:            Record type-纪录类型,00代表数据,01代表纪录结束
DD..:         Data field-数据段
CC:            CheckSum field-校验和: 计算方法是将本条记录冒号开始的所有对字母<不包括本效验字和冒号>所表示的十六进制数字<一对字母表示一个十六进制数,这样的一个十六进制数为一个字节>都加起来然后模除256得到的余数最后求出余数的补码即是本效验字节cc.

例子::011B50002272
LL = 0x01
AAAA = 0x1B50
RR=0x00
DD=0x22
CHECK SUM = ~((0x01+0x1B+0x50+0x22)&0xFF)+1 = 0x72

与Intel 32不同,由于Hex-80用于64K地址范围以内的系统,所以没有基址设定的指令。如果在Keil-51中,用跨BANK的方式超过了64K,编译器会产生多个HXX文件来标识BANK。如:
test.h00
test.h01
test.h02
分别在每个bank的视角来产生64K代码空间。对于Common Bank由于其在每个Bank的视角中都存在,所以在几个文件中都有同样的存在,这点要求编程人员注意。
还有,貌似Keil产生的Hex-80文件地址并不连续~天晓得Keil为什么不规整一下。

转载于:https://my.oschina.net/u/1024767/blog/141878

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值