HEX格式介绍及分析程序

HEX格式介绍及分析程序

ID:41032234

大小:38.50 KB

页数:3页

时间:2019-08-14

HEX格式介绍及分析程序_第1页
HEX格式介绍及分析程序_第2页
HEX格式介绍及分析程序_第3页
资源描述:

《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

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。