加入收藏 | 设为首页 | 会员中心 | 我要投稿 | RSSRSS-巴斯仪表网
您当前的位置:首页 > 电子发烧 > 单片机学习

Intel HEX格式命令的解析代码

时间:2013-11-23  来源:123485.com  作者:9stone

    在P89C51RD2的ISP状态下,单片机接收上位机发送的命令和数据,这些命令和数据是采用Intel HEX 文件的格式,网上有不少文章中研究甚至反编译了BOOT ROM中的代码,得到了ISP运行的过程,在我的系统中也用到了这个东西,因为要对FLASH中的数据进行升级,所以实现了一整套Intel HEX格式命令的解析,代码如下:

    ;==============================
RUN_MODE:
    MOV     A,DATA_MODE     ;数据操作类型
    RL       A                       ;A=A*2
    ADD     A,DATA_MODE     ;A=A*3   LJMP指令占用三个字节空间
    MOV     DPTR,#IAP_BASE_ADDR ;程序散转,不能超过有84个命,85*3=255
    JMP     @A+DPTR
IAP_BASE_ADDR:
    LJMP     IAP_PRO_DATA       ;00=传送编程数据并完成编程
    LJMP     IAP_SEND_CHAR_OK ;01=传文件结束符
    LJMP     IAP_SETUP_FOSC         ;02=指定振荡器频率
    LJMP     IAP_MPRO_DAT       ;03=杂项编程功能
    LJMP     IAP_READ_CHECK     ;04=显示指定地址段FLASH 数据或查空
    LJMP     IAP_READ_DATA       ;05=各种读功能
    LJMP     IAP_SETUP_BPS       ;06=直接装载波特率
    ;以上兼容Philips的ISP命令,下面为自定义命令
    LJMP     IAP_SET_DEVICE_CLOCK ;07=设置实时时钟
    LJMP     IAP_RESTART         ;08=重新启动系统
    LJMP     IAP_READ_DEVICE_CLOCK     ;09=读取实时时钟
    。。。。。。。。。。

    LJMP     IAP_MAIN_LOOP     ;其他命令

REV_SEND1:
    JNB     RI, $
    CLR     RI
        MOV     A,SBUF       ;接收数据
        RET

;==============================
        ;接收两个ASCII字符并回传;将两个
        ;ASCII码合成为1字节二进制数
        ;==============================
REV_DAT1_SUM:
        ACALL   REV_SEND1
        ACALL   ASCII_HEX   ;将ASCII字符转化为二进制
        SWAP   A
        MOV     B,A       ;首先接收高位字节数据
        ACALL   REV_SEND1
        ACALL   ASCII_HEX   ;将ASCII字符转化为二进制
        ORL     A,B       ;组合成一个字节数据
        MOV     DATA_BUFFER,A
        ADD     A,DATA_SUM     ;计算和校验
        MOV     DATA_SUM,A
        RET

SERIAL_SEND_CHAR:
        JNB     TI,$
        CLR     TI
        MOV     SBUF,A
        RET


    除了实现Philips定义的那些命令外还可以自定义命令,实现自己需要的功能。Philips命令集严格按照芯片文档来写程序,通过前几篇文章可以写出这个IAP的系统调用接口函数。


分享到:
来顶一下
返回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
栏目导航->单片机学习
  • 电子应用基础
  • 电源技术
  • 无线传输技术
  • 信号处理
  • PCB设计
  • EDA技术
  • 单片机学习
  • 电子工具设备
  • 技术文章
  • 精彩拆解欣赏
  • 推荐资讯
    使用普通运放的仪表放大器
    使用普通运放的仪表放
    3V与5V混合系统中逻辑器接口问题
    3V与5V混合系统中逻辑
    数字PID控制及其改进算法的应用
    数字PID控制及其改进
    恶劣环境下的高性价比AD信号处理数据采集系统
    恶劣环境下的高性价比
    栏目更新
    栏目热门