精华内容
下载资源
问答
  • 51单片机认识HEX文件.doc
  • 51单片机 bin文件转化成hex文件

    热门讨论 2009-10-31 12:10:27
    可以将bin文件转化成hex文件,用hex文件转化成汇编的软件将该hex文件转化成汇编程序,通过分析汇编程序,就可以编出相应的C程序。
  • 89C51单片机初学者
  • 可以将keil、wave生成的hex文件反汇编成汇编语言
  • 本文主要讲解KEIL中hex文件的生成和单片机最小系统。
  • Keil的安装目录有C51和UV4,很明显一个是编译工具目录,另外...用命令行流程是编译源文件成OBJ,然后链接OBJ,之后转换成HEX文件。这样就OK了,很简单。 C51.exe 编译c文件,BL51.EXE链接OBJ, OH51.EXE转换文件成HEX。
  • 该资源包括5种用51单片机实现的花式流水灯C语言源码和hex文件,两种是动态流水灯,三种是使用独立键盘控制的流水灯程序。
  • 全套集合:51单片机数码管时钟电路+代码+hex文件+报告+演示视频,全套齐活包满意
  • Craftor原创,首发于与非网,转载请...HEX文件,是Intel公司提出的按地址排列的数据信息,数据宽度为字节,所有数据使用16进制数字表示。以下是一个HEX文件的内容: :0E00030075801175902275A03375B04480FE93:030...

    转:http://www.eefocus.com/craftor/blog/10-07/193051_8ce59.html

    Craftor原创,首发于与非网,转载请保留此处。

    HEX文件,是Intel公司提出的按地址排列的数据信息,数据宽度为字节,所有数据使用16进制数字表示。以下是一个HEX文件的内容:

    :0E00030075801175902275A03375B04480FE93
    :03000000020011EA
    :0C001100787FE4F6D8FD7581070200033B
    :00000001FF

    解释:冒号为每行数据的开始符号;蓝色表示此行数据长度,十六进制,如0E就是14;红色是数据存放的地址,如0003;粉红色是表示数据类型,00表示数据记录,01表示文件结束,02表示扩展段地址记录,03表示开始段地址记录,04表示扩展线性地址记录,05表示开始线性地址记录;后面紧跟着的是N位数据,长度由蓝色的长度位决定;天蓝色为校验位。

    一般单片机程序不会超过64K,所以通常数据类型只会出现00或者01,当然其它情况笔者还没有太深入研究。

    根据上面的分析,笔者写了一个将HEX文件转换成比特流文件的C程序,可以将常见的HEX文件写到64K的比特文件里。该程序也是在上一篇笔者写的51单片机软核仿真的时候用到的,转换后的比特文件,可以在ModelSim里用TCL脚本读入到内存里,从而可以对该软核进行具体程序的仿真运行。

    本人喜欢开源,所以公布出C代码。该程序运行会生成内容为65536行8位二进制数据的mem.txt文件,即64K的二进制数据。

     

     

     

    Intel hex 文件常用来保存单片机或其他处理器的目标程序代码。它保存物理程序存储区中的目标代码映象。一般的编程器都支持这种格式。
        Intel hex 文件全部由可打印的ASCII字符组成(可以用记事本打开),如下例所示:

            :2000000012014c75a800e4f508f509780a7a78e4f608dafcd283fcfded240af9a7050dbd81        

            :2000200000010ced2488ec34ff50edc283e4fcfded240af9e76d7013ed33e43c700d0dbd2a        

            :2000400000010ced2488ec34ff50e50509e50970020508e50924a8e50834fd50aee4f50874

        Intel hex 由一条或多条记录组成,每条记录都由一个冒号“:”打头,其格式如下:

             :CCAAAARR...ZZ      

        其中:

    CC   

        本条记录中的数据字节数

    AAAA   

        本条记录中的数据在存储区中的起始地址

    RR   

        记录类型:     

    00 数据记录 (data record)     
    01 结束记录 (end record)     
    02 段记录 (paragraph record)     
    03 转移地址记录 (transfer address record)

    ...   

        数据域

    ZZ   

        数据域校验和

        Intel hex文件记录中的数字都是16进制格式,两个16进制数字代表一个字节。CC域是数据域中的实际字节数,地址、记录类型和校验和域没有计算在内。校验和是取记录中从数据字节计数域(CC)到数据域(...)最后一个字节的所有字节总和的2的补码。

    转载于:https://www.cnblogs.com/shirishiqi/p/5779914.html

    展开全文
  • 如何在keil中生成hex文件,并下载到51单片机中 一、keil中生成hex文件 1、在keil中点击工具栏的options for target…, 2、在弹出来的窗口中点击output–勾选Create HEX File–点击OK 3、重新编译整个工程后,系统...

    如何在keil中生成hex文件,并下载到51单片机中

    一、keil中生成hex文件

    1、在keil中点击工具栏的options for target…,
    在这里插入图片描述
    2、在弹出来的窗口中点击output–勾选Create HEX File–点击OK
    在这里插入图片描述
    3、重新编译整个工程后,系统就会生成hex文件
    在这里插入图片描述
    如果是系统默认存储路径,你可以在keil工程文件夹的Objects中找到你的hex文件
    在这里插入图片描述

    二、将hex文件下载到51单片机中

    1、在宏晶的主页 http://www.stcmcu.com/ 下载最新的 STC-ISP.EXE 免安装版,或直接通过以下链接进行下载:http://www.stcmcudata.com/STCISP/stc-isp-15xx-v6.87S.zip
    下载完成后,解压压缩包stc-isp-15xx-v6.87S.zip,可以看到一下这些文件
    在这里插入图片描述
    2、安装CH340驱动
    以下为一种CH340G应用电路
    在这里插入图片描述
    由CH340搭建的USB转TTL电路的主要作用是实现单片机和电脑的通讯,当我们需要使用该电路时,电脑上需要安装CH340相关驱动程序。
    如果你的开发板上有CH340相关电路,将开发板通过USB接入电脑后,在电脑的设备管理器中端口一栏可以看到CH340的标识,则表示你的电脑已经装有相关驱动
    在这里插入图片描述
    如果没有,则需要我们安装驱动:
    在我们刚才下载的文件夹USB to UART DriverCH340_CH341中找到ch341ser.exe,双击该应用程序,点击安装
    在这里插入图片描述
    等待驱动安装成功即可
    在这里插入图片描述
    3、下载程序
    将自己的开发板连接电脑,双击运行应用程序stc-isp-15xx-v6.87S.exe
    在这里插入图片描述
    软件打开后选择我们所使用的芯片型号,选择CH340所在的COM口,我这里是COM5,具体是多少根据自己电脑上的情况会有变化
    在这里插入图片描述
    在这里插入图片描述

    打开程序文件,选中我们刚才的hex文件
    如果使用了P4.5作为I/O口使用,请勾选ALE脚用作P4.5口
    点击下载
    在这里插入图片描述
    显示:正在检测目标单片机,此时只需要将开发板重新上电(重新开关电源开关)即可下载完成:
    在这里插入图片描述

    三、串口通讯

    刚才我们有讲CH340相关电路实现单片机和电脑的通讯,因此除了下载程序,我们同样可以用这个电路来实现单片机的串口通讯,这里我们可以使用stc-isp-15xx-v6.87S.exe软件中自带的串口助手,当然也可以使用其他串口调试软件,我们以stc-isp-15xx-v6.87S.exe的串口助手为例,通过发送正转或反转来控制我们的电机转动。
    在这里插入图片描述
    首先我们点击串口助手,跳转到串口助手界面,选择CH340G所在的串口号,选择合适的串口通信波特率,打开串口,在发送缓冲区采用文本模式发送数据:正转,可以看到接收缓冲区接收到文本: OK ,串口通讯成功。
    在这里插入图片描述
    注意:串口通讯波特率和接收数据返回数据都是我已经在程序中写好的,本教程只是演示串口助手的使用。

    展开全文
  • 51单片机中各种小例子的hex文件

    热门讨论 2013-10-24 23:29:36
    单片机中 各种程序的例子流水灯啊 等等文件hex 有汇编的 也有C语言的
  • 建立了第一个单片机C语言项目,但为了让编译好的程序能通过编程器写入51芯 片中,要先用编译器生成HEX文件,下面来看看如何用KEIL uVISION2来编译生成用于烧写 芯片的HEX文件HEX文件格式是Intel公司提出的按地址...

    建立了第一个单片机C语言项目,但为了让编译好的程序能通过编程器写入51芯 片中,要先用编译器生成HEX文件,下面来看看如何用KEIL uVISION2来编译生成用于烧写 芯片的HEX文件。HEX文件格式是Intel公司提出的按地址排列的数据信息,数据宽度为字 节,所有数据使用16进制数字表示, 常用来保存单片机或其他处理器的目标程序代码。它保 存物理程序存储区中的目标代码映象。一般的编程器都支持这种格式。我们先来打开第一个 项目,打开它的所在目录,找到test.Uv2的文件就能打开先前的项目了。然后右击图2-1 中的1项目文件夹,弹出项目功能菜单,选Options for Target’Target1’,弹出项目选项设置窗口, 同样先选中项目文件夹图标,这个时候在Project菜单中也有一样的菜单可选。打开项目选项窗口, 转到Output选项页图2-2所示,图中1是选择编译输出的路径,2是设置编译输出生成的文件 名,3则是决定是否要创建HEX文件,选中它就能输出HEX文件到指定的路径中。选好了? 好,我们再将它重新编译一次,很快在编译信息窗口中就显示HEX文件创建到指定的路径 中了,如图2-3。这样我们就可用自己的编程器所附带的软件去读取并烧到芯片了,再用实 验板看结果,至于编程器或仿真器品种繁多具体方法就看它的说明书了,这里也不做讨论。

    (技巧:一、在图2-1中的1里的项目文件树形目录中,先选中对象,再单击它就可对它进 行重命名操作,双击文件图标便可打开文件。二、在Project下拉菜单的最下方有最近编辑过

    的项目路径保存,这里能快速打开最近在编辑的项目。)

    图2-1项目功能菜单

     

    单片机C语言教程:C51HEX文件的生成和单片机最小系统

     

    图2-2 项目选项窗口

     

    http://www.21ic.com/mcu/

     

    图 2-3 编译信息窗口

    或许您已把编译好的文件烧到了芯片上,如果您购买或自制了带串行口输出元件的学习实 验板,那您就能把串行口和 PC 机串行口相联用串行口调试软件或 Windows 的超级终端,将其波特 率设为 1200,就能看到不停输出的“Hello World!”字样。如果您还没有实验板,那这 里先说说 AT89c51 的最小化系统,再以一实例程序验证最小化系统是否在运行,这个最小化 系统也易于自制用于实验。图 2-4 便是 AT89c51 的最小化系统,不过为了让我们能看出它 是在运行的,加了一个电阻和一个 LED,用以显示它的状态,晶体震荡器能根据自己的情况使用, 一般实验板上是用 11.0592MHz 或 12MHz,使用前者的好外是能产生标准的串行口波特率,后 者则一个机器周期为 1 微秒,便于做精确定时。在自己做实验里,注意的是 VCC 是+5V 的, 不能高于此值,不然将损坏单片机,太低则不能正常工作。在 31 脚要接高电平,这样我们 才能执行片内的程序,如接低电平则使用片外的程序存储器。下面建一个新的项目名为 OneLED 来验证最小化系统是否能工作 。程序如下:

    #include < AT89X51.h> //预处理命令

    void main(void) //主函数名

    {

    //这是第一种注释方式

    unsigned int a; //定义变量 a 为 int 类型

    /* 这是第二种注释方式

    */

    do{ //do while 组成循环

    for (a=0; a<50000; a++); //这是一个循环 P1_0 = 0; //设 P1.0 口为低电平,点亮 LED for (a=0; a<50000; a++); //这是一个循环 P1_0 = 1; //设 P1.0 口为高电平,熄灭 LED

    }

    while(1);

    }

     

    http://www.21ic.com/mcu/

     

    图 2-4 AT89c51 最小化系统

    这里先讲讲 KEIL C 编译器所支持的注释语句。一种是以“//”符号开始的语句,符号之后 的语句都被视为注释,直到有回车换行。另一种是在“/*”和“*/”符号之内的为注释。注 释不会被 C 编译器所编译。一个 C 应用程序中应有一个 main 主函数,main 函数能调用别的功能函数,但其它功能函数不允许调用 main 函数。不论 main 函数放在程序中的那个位置, 总是先被执行。用上面学到的知识编译写好的 OneLED 程序,并把它烧到刚做好的最小化系 统中。上电,刚开始时 LED 是不亮的(因为上电复位后所有的 IO 口都置 1 引脚为高电平), 然后延时一段时间(for (a=0; a<50000; a++)这句在运行),LED 亮,再延时,LED 熄灭, 然后交替亮、灭。第一个真正的小实验就做完,如果没有这样的效果那么您就要认真检查一下电路或编译烧写的步骤了。


    展开全文
  • 51单片机控制的心形流水灯,为想要DIY的提供比较全面的参考。资源包含成果实物图片/视频/C语言代码/keil生成的hex文件(对应STC89C515A60S2芯片)
  • 程序写好并编译后生成hex文件,这个hex文件就是要下载到单片机里的文件,这个文件的大小不能超过单片机的FLASH大小,否则就要优化程序或者选用更大FLASH的单片机。如下图所示,就是一个编译好的hex文件:我们发现他...
  • 单片机hex/bin文件互转软件

    热门讨论 2011-03-14 16:20:23
    此工具可以实现keil编译出的比较大的hex文件转换为bin文件从而实现瘦身的目的,同时还带有串口调试功能和rt值计算,lcd编码,色环电阻判断等功能~ 对于单片机开发者来说是一款不错的软件。
  • 可能部分程序杀毒软件误报,原因我也不清楚,但保证无毒。 将HEX文件用记事本打开,然后把代码复制到...如果想练习汇编语言写单片机,但是又不够熟练,不妨用C语言写好将HEX文件转换成汇编语言代码然后来参考学习。
  • //以文本的形式打开一个hex文件 if (!src_file) return RES_HEX_FILE_NOT_EXIST; dest_file = fopen(dest, "wb");//以二进制写的方式打开文件,文件不存在也没影响 if (!dest_file) return RES_BIN_FILE_PATH_ERROR;...

    #include /********************************************************************************

    input:

    c:单个字符('0'~'9' 'a'~'f', 'A'~'F')

    output:

    单个字符转化为单个字符

    ********************************************************************************/

    static uint8_t HexCharToBinBinChar(char c)

    {

    if (c >= '0' && c <= '9')

    return c - '0';

    else if (c >= 'a' && c <= 'z')

    return c - 'a' + 10;

    else if (c >= 'A' && c <= 'Z')

    return c - 'A' + 10;

    return 0xff;

    }

    /********************************************************************************

    input:

    p: 两个文本字符

    output:

    转化为1个字节

    ********************************************************************************/

    static uint8_t Hex2Bin(const char *p)

    {

    uint8_t tmp = 0;

    tmp = HexCharToBinBinChar(p[0]);

    tmp <<= 4;

    tmp |= HexCharToBinBinChar(p[1]);

    return tmp;

    }

    /********************************************************************************

    input:

    src: hex单行字符串

    p->type: 如果函数返回结果正确,这里就存着转化后的类型

    p->len: 如果函数运行正确,这里就存着转化后的bin数据长度

    p->data: 如果函数运行正确,长度并且不为0,该指针就只想转化后的数据

    p->addr[0]: 如果函数返回结果正确,这里就存着地址的低字节

    p->addr[1]: 如果函数返回结果正确,这里就存着地址的低字节

    output:

    返回hex格式流分析的结果

    ********************************************************************************/

    static RESULT_STATUS HexFormatUncode(const char *src, BinFarmat *p)

    {

    uint8_t check = 0, tmp[4], binLen;

    uint16_t hexLen = strlen(src);

    uint16_t num = 0, offset = 0;

    if (hexLen > HEX_MAX_LENGTH)//数据内容过长

    return RES_DATA_TOO_LONG;

    if (hexLen < HEX_MIN_LEN)

    return RES_DATA_TOO_SHORT;//数据内容过短

    if (src[0] != ':')

    return RES_NO_COLON;//没有冒号

    if ((hexLen - 1) % 2 != 0)

    return RES_LENGTH_ERROR;//hexLen的长度应该为奇数

    binLen = (hexLen - 1) / 2;//bin总数据的长度,包括长度,地址,类型校验等内容

    while (num < 4)

    {

    offset = (num << 1) + 1;

    tmp[num] = Hex2Bin(src + offset);

    check += tmp[num];

    num++;

    }

    p->len = tmp[0];//把解析的这些数据保存到结构体中

    p->addr = tmp[1];

    p->addr <<= 8;

    p->addr += tmp[2];

    p->type = tmp[3];

    while (num < binLen)

    {

    offset = (num << 1) + 1; //保存真正的bin格式数据流

    p->data[num - 4] = Hex2Bin(src + offset);

    check += p->data[num - 4];

    num++;

    }

    if (p->len != binLen - 5)//检查hex格式流的长度和数据的长度是否一致

    return RES_LENGTH_ERROR;

    if (check != 0)//检查校验是否通过

    return RES_CHECK_ERROR;

    return RES_OK;

    }

    RESULT_STATUS HexFile2BinFile(char *src, char *dest)

    {

    FILE *src_file, *dest_file;

    uint16_t addr_low = 0;

    uint32_t addr_hign = 0;

    char buffer_hex[600];

    uint8_t buffer_bin[255];

    BinFarmat gBinFor;

    RESULT_STATUS res;

    gBinFor.data = buffer_bin;

    src_file = fopen(src, "r");//以文本的形式打开一个hex文件

    if (!src_file)

    return RES_HEX_FILE_NOT_EXIST;

    dest_file = fopen(dest, "wb");//以二进制写的方式打开文件,文件不存在也没影响

    if (!dest_file)

    return RES_BIN_FILE_PATH_ERROR;

    fseek(src_file, 0, SEEK_SET); //定位到开头,准备开始读取数据

    while (!feof(src_file))

    {

    fscanf(src_file, "%s

    ", buffer_hex);

    res = HexFormatUncode(buffer_hex, &gBinFor);

    if (res != RES_OK)

    {

    fclose(src_file);

    fclose(dest_file);

    return res;

    }

    switch (gBinFor.type)

    {

    case 0://数据记录

    addr_low = gBinFor.addr;

    //数据指针偏移

    fseek(dest_file, addr_low + addr_hign, SEEK_SET);

    if (fwrite((const uint8_t*)gBinFor.data, gBinFor.len, 1, dest_file) != 1)

    {

    fclose(src_file);

    fclose(dest_file);

    return RES_WRITE_ERROR;

    }

    break;

    case 1: //数据结束

    fclose(src_file);

    fclose(dest_file);

    return RES_OK;

    case 2:

    addr_hign = ((uint32_t)gBinFor.addr) << 2;

    break;

    case 4://线性段地址

    addr_hign = ((uint32_t)gBinFor.addr) << 16;

    break;

    default:

    fclose(src_file);

    fclose(dest_file);

    return RES_TYPE_ERROR;

    }

    }

    fclose(src_file);

    fclose(dest_file);

    return RES_HEX_FILE_NO_END;

    }

    展开全文
  • 51单片机花样灯程序.hex 51单片机花样灯程序.hex 51单片机花样灯程序.hex 51单片机花样灯程序.hex
  • 沈阳工业大学 单片机课程设计 msr2 ch451驱动 千以内的简易加减法计算机器 附带内加串口助手程序
  • 1. 第一次写hex文件按照“下载程序到单片机”的步骤成功下载。把程序内容深化了一些之后竟发觉hex文件不能下载到单片机内,出现以下的错误提示: Chinese:正在尝试与 MCU/单片机 握手连接 ... 打开串口失败! ...
  • 本设计是使用AT89C51单片机为核心制作的一个模拟温控电扇的系统。通过DS18B20温度传感器来实现温度的调节,使用四位一体数码管来显示电扇的挡位以及当前温度,通过proteus中的直流电机(motor)来模拟风扇的转动,...
  • 51最小系统处理的时钟温度频率计的仿真 ,单片机课设所需的资源,内附Proteus的仿真文件和hex文件
  • ;========================================================================...====Power Disassembler for MCS-51 and 6502================================;=================================================...
  •    IDE : Keil C51 Version 9.60a    OS : Windows 10 x64 typesetting : Markdown   blog : my.oschina.net/zhichengjiu   gitee : gitee.co...
  • 大四还上了一门51单片机的选修课,就当补充知识了(硬件使用第一个板子是ardunio第二个是fpga),然鹅用得编译器实在是太丑了,字体还小,这还是我修改过后的,而且没有自动补全括号和自动缩进的功能。我觉得这不是...
  • 基于51单片机的精确计时,可以实现9小时以内的精确计时 文件为hex文件,可直接使用。
  • 题目要求 一个精度为0.1s的秒表系统。...reg51.h> #define false 0 #define true 1 #define uchar unsigned char //0——255 #define uint unsigned int //0——65535 #define ulong unsigned long //0——42
  • C51智能反编译器 将HEX 文件 反编译成 C 语言 有时候用得到的哦 ,备份着吧! C51智能反编译器 将HEX 文件 反编译成 C 语言 有时候用得到的哦 ,备份着吧!

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,846
精华内容 1,138
关键字:

51单片机hex文件