欢迎来到天天文库
浏览记录
ID:41032234
大小:38.50 KB
页数:3页
时间:2019-08-14
《HEX格式介绍及分析程序》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、IntelHEX格式你熟悉吗?——HEX格式介绍及分析程序来源:21ic 作者:LPC900 栏目:MCU技术INTELHEX格式你熟悉吗?——HEX格式介绍及分析程序用KeilC51编程时,可以自动生成INTELHEX格式的程序文件。INTELHEX文件通常由若干个记录组成,每个记录都具有如下的形式: :llAAAAttdd...ddcc其中: 开头的冒号“:”是记录起始标志。 “ll”是记录的有效数据长度。 “AAAA”是装入地址。 “tt”是记录类型。00表示数据记录,01表示
2、结束。 “dd...dd”是记录中的有效数据。数据个数必须与“ll”一致。 “cc”校验和。将它的值与记录中所有字节(冒号“:”除外)内容相加,其结果应为00,否则出错。举例: 某行记录的内容是“:05012000B5412B215543”,则数据长度ll是05H,装入地址是0120H,记录类型是数据记录,有效数据是B5H、41H、2BH、21H、55H,校验和为43H。 在文件的最后一行,总是“:00000001FF”,表示无任何有效数据,装入地址为0000H(没有用处),记录类型为01
3、H,表示结束,校验和当然是FFH了。以下是一个分析INTELHEX记录的简单程序:/* INTELHEX.h 分析处理INTELHEX格式记录的头文件*/#ifndef_INTEL_HEX_H_#define_INTEL_HEX_H_#include#include//定义INTELHEX记录的结构struct{ unsignedCHARll; //长度 unsignedintAAAA; //地址 unsignedCH
4、ARtt; //记录类型,0-数据,1-终止 CHARdd[16]; //数据 CHARcc; //校验和}INTELHEX;/*函数:AnalyseHEX()功能:分析一条HEX记录(把INTELHEX记录的文本转换成INTELHEX结构)参数: hex[]是记录的文本一行内容 转换后的结果保存在INTELHEX结构中返回: 0-转换成功 1-HEX记录文本中有错误*/bitAnalyseHEX(CHARhex
5、[]){ unsignedCHARi; unsignedCHARj; unsignedCHARt; unsignedCHARn; unsignedCHARcc; unsignedintx;//检查冒号 if(hex[0]!=':')return1;//检查长度 t=(toint(hex[1])<<4)+toint(hex[2]); if(t>16)return1; n=2*t+11; if(n!=strlen(hex))return1; IN
6、TELHEX.ll=t; cc=t;//提取地址 t=(toint(hex[3])<<4)+toint(hex[4]); cc+=t; x=(unsignedint)t; x<<=8; t=(toint(hex[5])<<4)+toint(hex[6]); cc+=t; x+=(unsignedint)t; INTELHEX.AAAA=x;//提取记录类型 t=(toint(hex[7])<<4)+toint(hex[8]); if((t==0)
7、
8、
9、(t==1)) { cc+=t; INTELHEX.tt=t; } else { return1; }//提取数据 i=9; if(t==0) { j=0; n=INTELHEX.ll; do { t=(toint(hex[i++])<<4); t+=toint(hex[i++]); cc+=t;
10、 INTELHEX.dd[j++]=t; }while(--n!=0); }//提取校验和 t=(toint(hex[i++])<<4); t+=toint(hex[i++]); cc+=t; INTELHEX.dd[j++]=t;//检查校验 if(cc==0) return0; el
此文档下载收益归作者所有