《HEX格式介绍及分析程序.doc》由会员分享,可在线阅读,更多相关《HEX格式介绍及分析程序.doc(3页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Intel HEX格式你熟悉吗?HEX格式介绍及分析程序来源:21ic作者:LPC900栏目:MCU技术INTEL HEX格式你熟悉吗?HEX格式介绍及分析程序用Keil C51编程时,可以自动生成INTEL HEX格式的程序文件。INTEL HEX文件通常由若干个记录组成,每个记录都具有如下的形式::llAAAAttdd.ddcc其中:开头的冒号“:”是记录起始标志。“ll”是记录的有效数据长度。“AAAA”是装入地址。“tt”是记录类型。00表示数据记录,01表示结束。“dd.dd”是记录中的有效数据。数据个数必须与“ll”一致。“cc”校验和。将它的值与记录中所有字节(冒号“:”除外)内
2、容相加,其结果应为00,否则出错。举例:某行记录的内容是“:05012000B5412B215543”,则数据长度ll是05H,装入地址是0120H,记录类型是数据记录,有效数据是B5H、41H、2BH、21H、55H,校验和为43H。在文件的最后一行,总是“:00000001FF”,表示无任何有效数据,装入地址为0000H(没有用处),记录类型为01H,表示结束,校验和当然是FFH了。以下是一个分析INTEL HEX记录的简单程序:/*INTELHEX.h分析处理INTEL HEX格式记录的头文件*/#ifndef _INTEL_HEX_H_#define _INTEL_HEX_H_#inc
3、lude #include /定义INTEL HEX记录的结构structunsigned CHAR ll;/长度unsigned int AAAA;/地址unsigned CHAR tt;/记录类型,0数据,1终止CHAR dd16;/数据CHAR cc;/校验和INTELHEX;/*函数:AnalyseHEX()功能:分析一条HEX记录(把INTEL HEX记录的文本转换成INTELHEX结构)参数:hex是记录的文本一行内容转换后的结果保存在INTELHEX结构中返回:0转换成功1HEX记录文本中有错误*/bit AnalyseHEX(CHAR hex)unsigned CHAR i;u
4、nsigned CHAR j;unsigned CHAR t;unsigned CHAR n;unsigned CHAR cc;unsigned int x;/检查冒号if ( hex0 != : ) return 1;/检查长度t = (toint(hex1) 16 ) return 1;n = 2 * t + 11;if ( n != strlen(hex) ) return 1;INTELHEX.ll = t;cc = t;/提取地址t = (toint(hex3)4) + toint(hex4);cc += t;x = (unsigned int)t;x = 8;t = (toint(
5、hex5)4) + toint(hex6);cc += t;x += (unsigned int)t;INTELHEX.AAAA = x;/提取记录类型t = (toint(hex7)4) + toint(hex8);if ( (t=0) | (t=1) )cc += t;INTELHEX.tt = t;elsereturn 1;/提取数据i = 9;if ( t = 0 )j = 0;n = INTELHEX.ll;dot = (toint(hexi+)4);t += toint(hexi+);cc += t;INTELHEX.ddj+ = t; while ( -n != 0 );/提取校验和t = (toint(hexi+)4);t += toint(hexi+);cc += t;INTELHEX.ddj+ = t;/检查校验if ( cc = 0 )return 0;elsereturn 1;#endif