MPLAB-PICC生成HEX文件简单说明
使用MPLAB烧写PIC单片机程序步骤
使用MPLAB烧写PIC单片机程序步骤MPLAB是一个由Microchip公司开发的集成开发环境(IDE),用于编写和调试基于PIC单片机的程序。
使用MPLAB可以简化PIC单片机程序的开发过程,并提供了许多有用的工具和功能。
下面是使用MPLAB烧写PIC单片机程序的步骤:1. 确定PIC单片机型号和连接方式:首先要确定要使用的PIC单片机型号,以及将要使用的编程器和连接方式。
Microchip公司提供了许多不同型号的PIC单片机,每个型号和系列都有特定的功能和规格。
确定型号后,需要选择与之兼容的编程器和连接方式。
常见的连接方式包括ICSP(In-Circuit Serial Programming)和ICD(In-Circuit Debugging)。
3.创建一个新的项目:在MPLAB软件中,选择“文件”->“新建项目”来创建一个新的项目。
在弹出的对话框中,选择合适的PIC单片机型号,并指定项目的文件夹和名称。
点击“下一步”以继续。
4.配置项目设置:在下一个对话框中,可以对项目的设置进行配置。
包括选择编程器和连接方式,配置时钟频率,选择编译器和其他选项等。
可以根据实际需求进行设置,并点击“完成”以完成项目的创建。
6.编译程序:在编写完PIC单片机程序后,可以点击工具栏上的“构建”按钮或选择“生成”->“生成工程”来编译程序。
MPLAB将自动调用所选的编译器来生成目标代码和可执行文件。
编译结束后,可以在“输出”窗口中查看编译结果和错误信息。
7.烧写程序到PIC单片机:在MPLAB软件中,选择“调试”->“运行”来启动烧写程序的过程。
根据之前配置的编程器和连接方式,MPLAB将尝试连接到PIC单片机,并将目标代码烧写到芯片中。
可以在“输出”窗口中查看烧写过程的详细信息和结果。
如果烧写成功,PIC单片机将会开始执行程序。
8. 调试和测试程序:如果程序无法正常运行或存在Bug,可以使用MPLAB提供的调试和测试工具来进行调试和测试。
生成hex文件
Keil的使用方法打开keil程序,在Project菜单下选择New Project
选择好保存的路径和当前的文件名之后,点击保存
然后会弹出如下窗口
在这里你需要选择芯片的类型,下面以A T89C51为例,选择好之后点击确定
这时会弹出一个窗口,让你选择是否加载“标准启动文件”,初学者不用加载,选择“否”
下面我们要建立一个C或者Ams文件,以C文件为例,点击File菜单下的New,创建一个新的Text1文档,在里面输入需要写的程序,下面以一段代码为例,
选择File菜单下的Save按钮保存之后,会出现以下对话框
输入文件名(由于默认是的保存类型是All File,而我们要的是C类型的文件,所以要输入后缀为.c的文件名)
点击保存,如果操作正确,程序中的关键字会变成蓝色
点击资源菜单下的“+”号
右键Source Group 1,选择Add File to Group ‘Source Group 1’这个选项
然后选中刚才保存的C类型文件,点击Add
然后点击Close,完成文件的添加。
下一步要进行工程设置,选择Project菜单下的Options for Target ‘Target 1’
会出现如下对话框
录进单片机用的。
如下图,然后点击确定
进行编译之后,就能生成一个hex文件了。
生成HEX步骤
五、应用软件调试程
1、建立一个新工程单击Project菜单,在弹出的下拉菜单中选中New Project 选项
2、然后选择你要保存的路径,输入工程文件的名字,比如保存到C51目录里,工程文件的名字为C51,然后点击保存.
3、这时会弹出一个对话框,要求你选择单片机的型号.我这里用Atmel 的89c52,选择89c52之后,右边一栏是对这个单片机的基本的说明,然后点击确定.
4、单击“File”菜单,再在下拉菜单中单击“New”选项然后把上面的程序复制到这个新建文件里,以1fengzhong.ASM为扩展名保存。
5、然后单击“Add File to Group ‘Source Group 1’”
6、选中1fengzhong.asm,然后单击“Add”在“Source Group 1”文件夹中多了一个子项“1fengzhong.asm”
7、单击“Project”菜单,再在下拉菜单中单击“option for target“target1”选项,在弹出的对话框中单击“OUT PUT”选项,在create executable和create hex 这两个选项中打勾。
8、译成功退出KEILC。
9、运行STC,单击Open File选项,找到用Keil C 生成的“1fengzhong.hex”文件,串口选用COM1,其他设置默认。
10、连接好小信号系统板与电脑之间的连线,接好小信号系统板的电源(5V)此时不通电。
11、单击STC的“Download”键,然后接通小信号系统板电源。
MPLABIDE简单使用说明书
和 MCS51 单片机中的 Keil 编程开发软件一样,我们做项目开发,MPLAB IDE软件也是以工程为单位,即我们得为咱们的源程序创建工程文件,再进行配置,载入相应的源程序文件。
下面,我们来一起看一下,在PIC中,如何创建我们的第一个工程。
一、启动 MPLAB IDE用以下任何一种方法启动该软件:A.选择Start>Programs>Microchip>MPLAB IDE 7.41>MPLAB IDE。
(不同版本的MPLAB IDE软件可能路径名称会略有不同。
)B.双击桌面上的MPLAB IDE 图标。
二、创建源文件1.选择File(文件)>new…(新建),出现一个文本编辑窗口,在该窗口中输入以下汇编语言源程序:2.先创建文件夹D:\myprj,然后将上面输入的源程序保存该文件夹,注意文件的扩展名为asm,这里我们将它保存为exam1.asm:文件保存后,我们发现源程序编辑窗口中的程序被着上了各种颜色,这些颜色能帮助我们更好地阅读源程序,快速发现输入有误的指令:三、创建项目项目是将文件组织起来以便进行编译和汇编的方式。
选择Project(项目)>new…(新建),出现New Project (新项目)对话框:在New Project(新项目)对话框中,我们将这个示例项目命名为MyPrj,使用Browse 按钮,将项目放在名为D:\myprj的文件夹中。
单击OK按钮,在MPLAB IDE 界面上我们会看到已创建项目的的项目窗口,如下图:如果项目窗口未打开,请选择View>Project。
四、给项目节点添加文件源文件是必须添加的。
其他文件,如头文件、库文件、链接描述文件,视项目的具体情况可加可不加。
在本实例中,只添加一个源文件exam1.asm,在左边的项目窗口中找到Source Files节点,在其上点鼠标右键,在弹出的快捷菜单中选Add Files。
PIC单片机hex文件烧录方法
PIC单片机文件烧录方法
1. 把需要烧录的单片机正确的放入烧录座中,并将烧录座与PICKit3编程器相连,之后将PICkit3编程器连接好在电脑上,打开MPLAB IDE v8.92软件,如图1所示:
图1
2.选择需要烧录的器件,依次选择Configure——Select Device,选择PIC18F67J60器件,选择后点击OK,如图4,5所示:
选择器件,
Configure
图4
PIC18F67J60
3.连接PICkit3编程器,依次选择Programmer——Select Programmer——PICkit3
如图6所示,
选择PICkit3编程器
图6
4.给单片机上电,依次选择Programmer—Settings——Power,勾选Power target circuit from PICkit3,并将电压值调到4.5V,单击确认,如图A,B所示:
若出现如图7所示的界面,则表示与PICkit3编程器连接成功,若没有出现此界面,则表示没有连接上。
图B
图7
5.加载双摄像头单片机hex文件烧写的.hex,依次选择File——Import,选择所需的烧写的.hex文件,如图2,3所示:
图2
加载hex文件,
File——Import 表明连接成功
选择所需的
烧写的.hex
图3
6.连接成功后,如何8所示,这时把单片机放在烧座上(方向不要搞错),点第一个图标,烧录程序,烧录成功后出现如图9所示的界面。
点第一个图标,标烧
录程序
图8
显示此字样,表明烧录成功
图9
7.把单片机取出来,再放入新单片机重复第6步操作。
基础知识hex文件格式详解
基础知识hex文件格式详解hex文件格式总结•什么是hex文件?•文件格式•指令类型(Record type)•校验和o:04 02B0 00 92020008 AEo:04 0000 05 08000135 B9o:00 0000 01 FF•hex转bin文件什么是hex文件?hex是用于文件格式是intel规定的标准,总体来说,hex是文本文件,经常在微控制器的固件开发中看到hex的身影,例如基于STM32F103硬件,使用MDK开发的话,该软件就可以生成hex文件;如下图所示;这是一个简单的STM32标准外设库工程,代码里什么都没做,具体如下;#include 'stm32f10x.h'#include <stdio.h>/*** @brief Main program.* @param None* @retval None*/int main(void){/* Add your application code here*//* Infinite loop */while (1){}}最终,我们打开生成的hex文件,可以看到,这的确是一个文本文件,所以,直接将hex文件烧入MCU的Flash还是不行的,除非烧录软件可以把hex文件转成bin文件,然后再进行烧录;:020*********F2:10000000000400204901000899010008950100083A:10001000970100089101000881020008000000001B:100020000000000000000000000000009D0100082A:1000300093010008000000009B010008290200084D:100040006301000863010008630100086301000800:1000500063010008630100086301000863010008F0:1000600063010008630100086301000863010008E0:1000700063010008630100086301000863010008D0:10008000630100086301000863010008000000002C:1000900000000000000000000000000063010008F4:1000A00063010008630100086301000863010008A0:1000B0006301000863010008630100086301000890:1000C0006301000863010008630100086301000880:1000D0006301000863010008630100086301000870 :1000E0006301000863010008630100086301000860 :1000F0006301000863010008000000000000000028 :100100000000000000000000630100086301000817 :10011000630100086301000863010008630100082F :10012000630100086301000863010008630100081F :1001300063010008DFF80CD000F018F80048004711 :10014000A102000800040020064880470648004736 :10015000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE777:10016000FEE7FEE72D02000835010008064C074DAA :1001700006E0E06840F0010394E807009847103477 :10018000AC42F6D3FFF7DAFFA4020008B40200087D :10019000FEE77047FEE7FEE77047704770470000D4 :1001A0000CB500211F4801910091026842F4803291 :1001B00002604FF4A063026802F400320092019AD8 :1001C000521C0192009A12B9019A9A42F3D1026824 :1001D000920324D50121009141684160416841604A :1001E00041684160416821F47C114160416841F4FB :1001F00098114160016841F08071016001688901D6 :10020000FCD5416821F003014160416841F00201E1 :1002100041604168C1F381010229FAD10CBD00910E :100220000CBD00000010024070470000104810B5DF :10023000016841F00101016041680E4A11404160CE :1002400001680D4A11400160016821F480210160BC :10025000416821F4FE0141604FF41F0181600021DB :10026000C162FFF79DFF05494FF00060086010BDB7 :10027000001002400000FFF8FFFFF6FE08ED00E06E :10028000FEE702E008C8121F08C1002AFAD1704731 :100290007047002001E001C1121F002AFBD1704706 :1002A000FEE70000B4020008000000200004000087:0402B00092020008AE:0400000508000135B9:00000001FF文件格式通过上面的文件,我们不难发现,hex文件每行都由:作为起始码,这是显而易见的,而后面这些乱七八糟的数据又代表什么呢?先看下面这张图;hexformat这个和一般的通讯协议类似,一帧数据往往包括起始码,数据长度,数据类型,数据,校验码等等,所以hex文件也不例外,这里它包含几个特点,下面参考了wiki;•起始码:每行数据作为一帧,并由:作为起始码;•字节长度:两个十六进制数字(一对十六进制数字),指示数据字段中的字节数(十六进制数字对)。
单片机烧录用的hex文件,文件格式解析(转载)
单⽚机烧录⽤的hex⽂件,⽂件格式解析(转载)含有单⽚机的电⼦产品在量产的时候会⽤到.hex⽂件或者.bin。
hex是⼗六进制的,包含地址信息和数据信息,⽽bin⽂件是⼆进制的,只有数据⽽不包含地址。
任何⽂件都有⼀定的格式规范,hex⽂件同样具有完整的格式规范。
今天和⼤家分享⼀下,hex是如何解析的。
⼀、hex⽂件解析hex⽂件可以通过UltraEdit、Notepad++、记事本等⼯具打开,⽤Notepad++打开之后会看到如下数据内容。
使⽤Notepad++打开后会不同含义的数据其颜⾊不同。
每⾏数据都会有⼀个冒号开始,后⾯的数据由:数据长度、地址、标识符、有效数据、校验数据等构成。
以上图的第⼀⾏为例,进⾏解析:第1个字节10,表⽰该⾏具有0x10个数据,即16个字节的数据;第2、3个字节C000,表⽰该⾏的起始地址为0xC000;第4个字节00,表⽰该⾏记录的是数据;第5-20个字节,表⽰的是有效数据;第21个字节73,表⽰前⾯数据的校验数据,校验⽅法:0x100-前⾯字节累加和;其中,第4个字节具有5种类型:00-05,含义如下:字段含义00表⽰后⾯记录的是数据01表⽰⽂件结束02表⽰扩展段地址03表⽰开始段地址04表⽰扩展线性地址05表⽰开始线性地址单⽚机的hex⽂件以00居多,都⽤来表⽰数据。
hex⽂件的结束部分如下图所⽰。
最后⼀⾏的01表⽰⽂件结束了,最后的FF表⽰校验数据,由0x100-0x01=0xFF得来。
⼆、扩展地址细⼼的同学可能发现了,上⾯的地址都是两个字节,范围从0x000-0xFFFF,如果地址是0x17FFFF该怎么办呢?这就要⽤到扩展字段了,举例如下:第⼀⾏中,第⼀个字节为0x02,表⽰只有两个字节的数据,⽽扩展段的标识符为0x04表⽰后⾯的数据0x0800为扩展线性地址,基地址的计算⽅法为:(0x0800<<16)=0x08000000,在0x04标识段出现之前,下⾯的数据都是这个基地址。
MPLAB打开工程编译说明书
MPLAB 打开工程及编译PIC 18F 系列开发学习系统使用说明书V1.0给力者GEILIERTM注意:文件夹不能用中文,同时该文件夹的路径中也不能含有中文!1 将光盘上的例程文件夹Source Code 复制到硬盘上。
×文件夹路径中不能有中文2 随便打开一个例程文件夹,点击扩展名为mcp 或者mcw 的文件,即可打开该工程。
w ww .Mo vi n gC hi p .c o mw ww .Mo vi n gC hi p .c o m√文件夹路径中没有中文3 MPLAB 软件将自动将该工程打开,可能打开后,看不到任何内容。
显示出工程名称,说明工程已经打开4 如果如上图所示,无任何内容出现,那么需要按下图将这两项前面打钩。
w ww .M o v i n gC hi p .c o mw w w .M o v i n gC h i p .c o m5 打钩后,工程文件导航及输出界面均会出现。
可以通过点击C 文件来展开源代码界面。
w ww .M o v i n gC hi p .c o mw w w .M o v i n gC h i p .c o m6 C 源代码文件已经展开,在这里,我们可以查看、修改源代码。
w ww .M o v i n gC hi p .c o mw w w .M o v i n gC h i p .c o m7 点击编译键,可以编译源代码。
点击编译编译后,编译输出窗口将编译的参数罗列出来,一些细节可以在这里查看.生成了HEX 格式的同名文件w ww .Mo vi n gC hi p .c o mw ww .Mo vi n gC hi p .c o m8 编译完后,在该目录下,就生成或者重新生成了同名的HEX 文件。
9 这个HEX 文件既是我们要写入单片机的文件,将其写入单片机,单片机即开始运行。
提示:很多人都会问,我点编译后,生成不了HEX 文件,而是生成COF 文件,如下图:可按如下介绍进行设置:w ww .Mo vi n gC hi p .c o mw ww .Mo vi n gC hi p .c o m点开“PICC -18 Linker ”,我们发现IDE 的默认设置就是生成COF 文件。
使用MPLAB烧写PIC单片机程序步骤(自己写的)
使⽤MPLAB烧写PIC单⽚机程序步骤(⾃⼰写的)
步骤:加载⽂件------选择单⽚机型号-------选择烧写器--------连接器件--------烧写程序
1、加载⽂件
选择软件界⾯左上⾓“File”选项;
弹出下拉选项框,选择“Import”选项,弹出对话框;
在“查找范围”中选择要烧写⽂件的路径,然后选择要烧写的后缀为.hex的⽂件,再点击右下⾓“打开”按钮
2、选择单⽚机
选择软件界⾯第⼀⾏第⼋个“Configure”选项;
弹出下拉选项框,选择“Select Device”选项,弹出对话框,在Device选项的下拉框中选择所要烧写的单⽚机型号;
3、选择烧写器
选择软件界⾯第⼀⾏第六个“Programmer”选项;
弹出下拉选项框,选择“Select programmer”选项,弹出右拉选项框,选择第4项“PICkit_3”;
硬件连接好后,继续操作以下步骤:
4、连接器件
再次选择软件界⾯第⼀⾏第六个“Programmer”选项;
在此次下拉框中点击“Reconnect”选项
5、烧写程序
点击第⼀个图标。
2016年度精品--ICD3给PIC单片机烧录hex档文件
ICD3给PIC单片机烧录hex档文件一、打开MPLAB IDE软件。
图1图2二、点击“File->import”导入要烧录的hex档。
图3图4三、导入后如图5.图5中红色圈内表示hex档已经被导入,且导入的路径也可以看的到。
图5三、点击“Programmer->slecte programmer->MAPLAB ICD3”即选择烧录工具为ICD3,如图6。
图6四、将ICD3与电脑连接上,连接成功后如图7红色圈内所示“MPLABICD 3 Connected。
”表示连接ICD3成功。
图7五、对烧录CPU进行选择。
点击“Configure->Slecte Dvice”弹出图9画面。
在“Dvice”下拉菜单中选择要烧录的CPU型号。
这里以“dsPIC33FJ64GP804”为例。
图8图9六、将要烧录的装置与ICD3连接,点击“Programmer->Setting”弹出图10设置对话框。
点击“Power”,画面如图11。
圈内打钩。
电压根据CPU的类型选择,这里以3.3V的CPU为例选择3.25V电压点击确定这时ICD3为装置供电为3.25V。
画面如图12圈内表示软件已经识别到了待烧录的CPU。
图10图11图12图13七、烧录前先将CPU内的原有程序擦除才可以准确的烧录程序。
点击图14红色圈内的图标擦除CPU中的程序,再点击绿色圈内图标烧录程序。
图14图15擦除成功(a)(b)图16烧录完成八、如图16所示烧录完成。
点击图17中的圈内图标将该工作空间保存下来,给同一型号CPU烧录程序的话下次打开存储的工作空间后即“PIC_download.mcw”后给装置供电无需其他设置就可以给CPU烧录程序。
图17图18图19图20财务工作总结ppt[财务工作总结ppt]一、合理安排收支预算,严格预算管理单位预算是学校完成各项工作任务,实现事业计划的重要前提,因此认真做好我校的收支预算责任重大,财务工作总结ppt。
PICC使用说明(包括编程实例)
PIC的C语言使用(一)在MPLAB-IDE中使用HitechC编译器一、装入编译器:1、启动MPLAB-IDE,如下图所示选择Project-》Install LanguageTool2、在弹出的安装语言工具对话框里“Language Suite”选项现在显示的是Microchip,点击后面的箭头来选择语言。
我使用的工具是HI-TECH PICCME,所以选择为“HI-TECH PICC”。
3、接下来在“Tool Name”里选择编译器组件的调用路径,这里有“PICC Compiler”(C编译器)、“PICC Assembler”(汇编器)和“PICC Linker”(链接器)3项都需要设置。
用“Browse”来选择调用路径,把上述3项组件的调用文件都设为PICC.EXE。
点“OK”后完成设置。
二、选用编译器:1、新建一个项目,编辑项目对话框的“Language Tool Suite”栏目默认是“Microchip”,它改为“HI-TECH PICC”。
2、在项目文件框里点“flasha[.hex]”,这时“Node Properties”(节点属性)按钮将会亮起来。
点击进入。
3、设置节点属性。
由于FLASHA.C还有其他相关连的源程序需要加进来,所以在“Language Tool”栏里应该择“PICC Linker”(链接器)。
通常我们可以选择:1)Generate debug info:显示debug信息;2)Create map file:选择该项后我们将看到ROM、RAM的使用情况;3)Error file:显示错误信息;4)Compile for MPLAB ICD:如果不使用ICD,就不必选择这个项目了。
4、设置完成之后点“Add Node”来添加节点。
这个项目有两个节点:fla.c和flasha.c,选择节点后点击“Node Properties”或直接双节点来进入节点属性设置。
PICC编程技巧
注:本组文章主要为网友CYPOK的论著,由我们收集整理,特对CYPOK表示感谢!1、PICC和MPLAB集成PICC和MPLAB集成:PICC有自己的文本编辑器,不过是DOS风格的,看来PICC的工程师要专业冷到酷底了...大家大可不必用它,如果你没什么癖好的话,你不会不用UltraEdit吧?1:建立你的工作目录:建议在C盘根目录下建立一个以A开头的文件夹做为工作目录.因为你会发现它总是在你查找文件时候第一个跳入你眼中.2:MPLAB调用PICC.(以MPLAB5.7版本为例子)启动MPLAB.在Project-->Install Language Tool:Language Suite----->hi-tech piccTool Name ---->PICC CompilerExecutable ---->c:hi-pic inpicc.exe (假如你的PICC是默认安装的)选Command-line最后OK.上面这步只需要设定一次,除非你重新安装了MPLAB.3:创建你的项目文件:(假如你实现用EDIT编辑好了一个叫AA.C的C代码文件)Project-->New Project-->File Name--->myc (假如我们把项目文件取名字叫MYC.PJT)右边窗口当然要选择中你的工作目录.然后OK.4:设定你的PICC工作参数:Project-->Edit Project上面4个栏目就用默认的,空的也就让它空着,无所谓的.需要修改的是:Development Mode---->选择你的PIC型号.当然要选择Mplab SIM Simulator让你可以用软件仿真.Language Tool Suite--->HI-TECH PICC上面的步骤,你可能会遇见多个提示条,不要管它,一路确定.下面是PICC编译器的选择项:双击Project Files窗口里面的MYC.HEX,出现一个选择拦目.命令很多,大家可以看PICC文本编辑器里面的HELP,里面有详细说明.下面就推荐几个常用也是建议用的:Generate debug info以及下面的2项.Produce assembler list file就在它们后面打勾即可,其它的不要管,除非你有特殊要求.5:添加你的C代码文件:当进行了前面几步后,按Add Node找到AA.C文件就OK了.6:编译C代码:最简单的一步:直接按下F10.编译完后,会出现各种调试信息.C代码对应的汇编代码就是工作目录里面的AA.IST,用EDIT打开可以看见详细的对比.7:其它,要是一切都没问题,那么你就可以调试和烧片了,和以往操作无异.2、如何从汇编转向PICC首先要求你要有C语言的基础。
单片机C语言第三课生成HEX文件和最小化系统
第三课生成HEX文件和最小化系统在开始C语言地主要内容时,我们先来看看如何用KEIL uVISION2来编译生成用于烧写芯片地HEX文件.HEX 文件格式是Intel公司提出地按地址排列地数据信息,数据宽度为字节,所有数据使用16进制数字表示, 常用来保存单片机或其他处理器地目标程序代码.它保存物理程序存储区中地目标代码映象.一般地编程器都支持这种格式.我们先来打开第一课做地第一项目,打开它地所在目录,找到test.Uv2地文件就可以打开先前地项目了.然后右击图3-1中地1项目文件夹,弹出项目功能菜单,选Options for Target'Target1',弹出项目选项设置窗口,同样先选中项目文件夹图标,这时在Project菜单中也有一样地菜单可选.打开项目选项窗口,转到Output选项页图3-2所示,图中1是选择编译输出地路径,2是设置编译输出生成地文件名,3则是决定是否要创建HEX文件,选中它就可以输出HEX文件到指定地路径中.选好了?好,我们再将它重新编译一次,很快在编译信息窗口中就显示HEX文件创建到指定地路径中了,如图3-3.这样我们就可用自己地编程器所附带地软件去读取并烧到芯片了,再用实验板看结果,至于编程器或仿真器品种繁多具体方法就看它地说明书了,这里也不做讨论.(技巧:一、在图3-1中地1里地项目文件树形目录中,先选中对象,再单击它就可对它进行重命名操作,双击文件图标便可打开文件.二、在Project下拉菜单地最下方有最近编辑过地项目路径保存,这里可以快速打开最近在编辑地项目.)图3-1项目功能菜单图3-2 项目选项窗口图3-3 编译信息窗口或许您已把编译好地文件烧到了芯片上,如果您购买或自制了带串口输出元件地学习实验板,那您就可以把串口和PC机串口相联用串口调试软件或Windows地超级终端,将其波特率设为1200,就可以看到不停输出地"Hello World!"字样.也许您还没有实验板,那这里先说说AT89C51地最小化系统,再以一实例程序验证最小化系统是否在运行,这个最小化系统也易于自制用于实验.图3-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口为低电平,点亮LEDfor (a=0; a<50000; a++); //这是一个循环P1_0 = 1; //设P1.0口为高电平,熄灭LED}while(1);}图3-4 AT89C51最小化系统这里先讲讲KEIL C编译器所支持地注释语句.一种是以"//"符号开始地语句,符号之后地语句都被视为注释,直到有回车换行.另一种是在""符号之内地为注释.注释不会被C编译器所编译.一个C应用程序中应有一个main主函数,main函数可以调用别地功能函数,但其它功能函数不允许调用main函数.不论main函数放在程序中地那个位置,总是先被执行.用上面学到地知识编译写好地OneLED程序,并把它烧到刚做好地最小化系统中.上电,刚开始时LED是不亮地(因为上电复位后所有地IO口都置1引脚为高电平),然后延时一段时间(for (a=0; a<50000; a++)这句在运行),LED亮,再延时,LED熄灭,然后交替亮、灭.第一个真正地小应用就做完,呵呵,先不要管它是否实用哦.如果没有这样地效果那么您就要认真检查一下电路或编译烧写地步骤了.版权申明本文部分内容,包括文字、图片、以及设计等在网上搜集整理.版权为个人所有This article includes some parts, including text, pictures, and design. Copyright is personal ownership.用户可将本文地内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律地规定,不得侵犯本网站及相关权利人地合法权利.除此以外,将本文任何内容或服务用于其他用途时,须征得本人及相关权利人地书面许可,并支付报酬.Users may use the contents or services of this article for personal study, research or appreciation, and othernon-commercial or non-profit purposes, but at the same time, they shall abide by the provisions of copyright law and other relevant laws, and shall not infringe upon the legitimate rights of this website and its relevant obligees. In addition, when any content or service of this article is used for other purposes, written permission and remuneration shall be obtained from the person concerned and the relevant obligee.转载或引用本文内容必须是以新闻性或资料性公共免费信息为使用目地地合理、善意引用,不得对本文内容原意进行曲解、修改,并自负版权等法律责任.Reproduction or quotation of the content of this article must be reasonable and good-faith citation for the use of news or informative public free information. It shall not misinterpret or modify the original intention of the content of this article, and shall bear legal liability such as copyright.。
hex文件格式详解
学习的路上,越努力越渺小。
——单片机初学者在学习单片机的路上,我用过KEIL、CodeWarrior、CCS等编译器,但最近因一个小项目,采用的PIC18F25K80芯片,使用MPLAB的PICC18编译器,在烧写代码的时候,突然意识到自己一直在使用.Hex文件,但从未对该文件去研究、理解过,从而有此下文:Hex文件通常由编译器在项目编译链接后生成,用于传输被存储于ROM或者EEPROM 的程序或数据,可在项目工程目录下查找到。
用记事本或者Notepad++打开hex文件,hex 文件由一行行“:数字”组成,每行以冒号开头,内容全部为16进制数字。
Hex文件每行都是一个十六进制的记录,该记录由5各部分组成:数据长度(1个字节)、数据起始地址(2个字节,高位在前,低位在后)、记录类型(1个字节)、数据(n个字节)、校验码(1个字节)。
打开Hex文件,如下::020*********F2:101800002039002055190008A1270008A327000847:1018100000000000000000000000000000000000C8…:10C000001A67296887689968A768B20529A401009A:10C01000204214021440420A0313DA0342140313A9:08C020000B03420A0327DB03B6:04000005080018BD1A:00000001FF以:101800002039002055190008A1270008A327000847为例:“0x100x180x000x000x200x030x900x020x550x190x000x080xA10x270x000x080xA3 0x270x000x080x47”“:”表示记录开始;“回车换行”表示记录结束;“0x10”表示数据长度是16,即本条记录数据是16个字节;“0x180x00”表示数据起始地址,即本条记录的数据起始地址为0x1800;“0x00”表示数据类型,数据类型有:0x00、0x01、0x02、0x03、0x04、0x05。
单片机烧录文件HEX文件格式说明
HEX文件格式说明在我讲解《微型计算机控制技术》的时候,一个学生问我关于HEX的内容解释时,我的解释不够清晰,感觉不太,我下课后立刻上网查找收集资料,并且整理如下,同时发给学生一份。
整理如下:概念描述HEX文件格式是一种能够烧写到单片机中,被单片机执行的文件格式。
可以使用不同的编辑器将C 或汇编源文件编译成HEX文件,如IAR,KEIL等。
Hex文件是遵循Hex文件格式的ASCII文本文件。
在Hex文件的每一行中都包含了一个hex记录。
这些记录是由一些代表机器语言代码和常量的16进制数据组成。
Hex文件常用来传输要存储在ROM、EPROM或者Flash中的程序和数据。
大部分的EPROM编程器都能使用Hex文件。
格式介绍Hex由任意数量的十六进制记录组成。
每个记录包含6个域,它们按下列格式排列。
| MARK | RECLEN | OFFSET | RECTYP | DA TA | CHKSUM |,实际表示如下例1::04010C00303230005D用以下表1解释上述格式:1Byte(8 bit)用表 1 HEX格式组成| MARK |——(1Byte)Start Code(冒号):每个HEX记录都由冒号开头;| RECLEN |——(1Byte)Byte count(本行数据长度):是数据长度域,它代表记录中数据的字节量,如例1中的04表示本条记录中有4个字节的数据;| OFFSET |——(2 Byte)Address(本行数据的起始地址):是地址域,它代表记录当中数据的起始地址;如例1中的010C表示本条记录中第一个数据30的地址为010C。
| RECTYP |-----> (1 Byte)Record type(数据类型):是代表HEX记录类型的域,它可能是以下数据当中的一个:例子中的00表示该行为数据记录。
表 2 数据类型对照表| DATA |——(n Byte)Data(数据):是数据域,一个记录可以有许多数据字节.记录当中数据字节的数量必须和数据长度域中指定的数字相符;最多0xFF个。
解读hex文件
PIC HEX文件格式分析- 适用MPLAB8位機2011-03-25 11:26:40 阅读39 评论0 字号:大中小订阅本文引自:/212583/95624概要.HEX文件是MPLAB生成的一种可执行文件的格式,它本身是由ASCII字符组成的,但其包含16进制的可执行代码的信息,也就是说,这类文件描述在程序存储器的哪个单元放入什么指令。
.HEX文件的种类MPLAB可以生成3种不同格式的可执行文件。
其中两种是.HEX文件,它们分别称为INHX8M格式(Intel Hex Format)和INHX32格式(Intel Hex 32 Format);另外一种称为INHX8S格式(Intel Split Hex Format),这种格式会同时生成.HXL和.HXH文件,两个文件分别存放指令数据的低字节和高字节。
这里只讨论两种.HEX文件。
MPLAB内嵌的连接器MPLINK在默认情况下生成INHX32 格式的.HEX文件,也可以使用/aINHX8M选项指定生成INHX8M格式的.HEX文件。
我们的烧写器应该能支持这两种格式的.HEX文件。
INHX32格式的.HEX文件一个INHX32格式的.HEX文件是由若干个形式相同的行构成的。
行的种类对于最多只有8K字程序空间的PIC16F87X单片机而言,相应的.HEX文件只有3种不同的行:线性地址定位行,代码数据行,结尾标志行。
一个.HEX文件的第1行是一个线性地址定位行,后面接着是若干个代码数据行,最后一行是结尾标志行。
线性地址定位行仅仅对超过32K字代码的程序有用。
实际上,INHX32格式与INHX8M格式的不同之处就在于它能表示超过32K字代码的程序。
线性地址定位行中指定指令存放地址的高16位,而低16位由代码数据行中的“AAAA”部分指定。
“AAAA”表示指令存放地址的2倍,所以最多能表示32K字的指令,而PIC16F87X单片机最多只有8K字程序空间,故不需要用到指令地址的高16位,因此.HEX文件的线性地址定位行指定的指令地址的高16位总为“0000”。
PIC单片机hex文件烧录方法
PIC单片机文件烧录方法1. 把需要烧录的单片机正确的放入烧录座中,并将烧录座与PICKit3编程器相连,之后将PICkit3编程器连接好在电脑上,打开MPLAB IDE v8.92软件,如图1所示:图12.选择需要烧录的器件,依次选择Configure——Select Device,选择PIC12F1840- PIC12F1822器件,选择后点击OK,如图4,5所示:图4 选择器件,Configure选择PIC12F1840器件选择PIC12F1820器件选择后,点击OK图53.连接PICkit3编程器,依次选择Programmer——Select Programmer——PICkit3如图6所示,选择PICkit3编程器图64.给单片机上电,依次选择Programmer—Settings——Power,勾选Power target circuit from PICkit3,并将电压值调到4.5V,单击确认,如图A,B所示:若出现如图7所示的界面,则表示与PICkit3编程器连接成功,若没有出现此界面,则表示没有连接上。
图A勾选此项,给单片机上电图B图75.加载双摄像头单片机hex文件烧写的.hex,依次选择File——Import,选择所需的烧写的.hex文件,如图2,3所示:图2加载hex文件,File——Import 表明连接成功选择所需的烧写的.hex图36.连接成功后,如何8所示,这时把单片机放在烧座上(方向不要搞错),点第一个图标,烧录程序,烧录成功后出现如图9所示的界面。
点第一个图标,标烧录程序图8显示此字样,表明烧录成功图97.把单片机取出来,再放入新单片机重复第6步操作。
用matlab生成.hex和.mig格式
ROM初始化文件既可以是*.mif也可以是*.hex文件,但是如果工程需要在Modelsim中进行仿真的话,则必须生成*.hex文件对ROM进行初始化。
一般简单且有规律的初始化数据可以用Excel先生成mif文件再在综合软件中转化为hex文件,但如果所需信号要叠加各种各样的噪声时。
Excel则不能胜任,此时我们用MATLAB生成所需初始化数据,在使用下述程序则很容易生成HEX初始化文件。
程序先介绍hex文件的结构,后给出matlab程序,且我做了详细的注释,希望对大家有所帮助。
% __Created by He Yapeng.@School of Electronic Engineering and Photoelectricity Technology at Nanjing University of Science and Technology% --Email:lwkj0920@. ');% Intel HEX文件是由一行行符合Intel HEX文件格式的文本所构成的ASCII文本文件。
在Intel HEX文件中,% 每一行包含一个HEX记录。
这些记录由对应机器语言码和/或常量数据的十六进制编码数字组成。
Intel HEX文件通常用于传输将被存于ROM或者EPROM中的程序和数据。
大多数EPROM 编程器或模拟器使用Intel HEX文件。
% 记录格式% Intel HEX由任意数量的十六进制记录组成。
每个记录包含5个域,它们按以下格式排列:% :llaaaatt[dd...]cc% 每一组字母对应一个不同的域,每一个字母对应一个十六进制编码的数字。
每一个域由至少两个十六进制编码数字组成,它们构成一个字节,就像以下描述的那样:% : 每个Intel HEX记录都由冒号开头.% ll 是数据长度域,它代表记录当中数据字节(dd)的数量.% aaaa 是地址域,它代表记录当中数据的起始地址.% tt 是代表HEX记录类型的域,它可能是以下数据当中的一个:% 00 –数据记录% 01 –文件结束记录% 02 –扩展段地址记录% 04 –扩展线性地址记录% dd 是数据域,它代表一个字节的数据.一个记录可以有许多数据字节.记录当中数据字节的数量必须和数据长度域(ll)中指定的数字相符.% cc 是校验和域,它表示这个记录的校验和.校验和的计算是通过将记录当中所有十六进制编码数字对的值相加,以256为模进行以下补足.%% 数据记录% Intel HEX文件由任意数量以回车换行符结束的数据记录组成.数据记录外观如下:% :10246200464C5549442050524F46494C4500464C33% 其中:% 10 是这个记录当中数据字节的数量.% 2462 是数据将被下载到存储器当中的地址.% 00 是记录类型(数据记录)% 464C…464C是数据.% 33 是这个记录的校验和.%% 扩展线性地址记录(HEX386)% 扩展线性地址记录也叫作32位地址记录或HEX386记录.这些记录包含数据地址的高16位.扩展线性地址记录总是有两个数据字节,外观如下:% :02000004FFFFFC% 其中:% 02 是这个记录当中数据字节的数量.% 0000 是地址域,对于扩展线性地址记录,这个域总是0000.% 04 是记录类型 04(扩展线性地址记录)% FFFF 是地址的高16位.% FC 是这个记录的校验和,计算方法如下:% 01h + NOT(02h + 00h + 00h + 04h + FFh + FFh).% 当一个扩展线性地址记录被读取,存储于数据域的扩展线性地址被保存,它被应用于从Intel HEX文件读取来的随后的记录.线性地址保持有效,直到它被另外一个扩展地址记录所改变.% 通过把记录当中的地址域与被移位的来自扩展线性地址记录的地址数据相加获得数据记录的绝对存储器地址.% 以下的例子演示了这个过程..% 来自数据记录地址域的地址 2462% 扩展线性地址记录的数据域 + FFFF% ------------% 绝对存储器地址 FFFF2462%% 扩展段地址记录(HEX86)% 扩展段地址记录也叫HEX86记录,它包括4-19位数据地址段.扩展段地址记录总是有两个数据字节,外观如下:% :020*********EA% 其中:% 02 是记录当中数据字节的数量.% 0000 是地址域.对于扩展段地址记录,这个域总是0000.% 02 是记录类型 02(扩展段地址记录)% 1200 是地址段.% EA 是这个记录的校验和,计算方法如下:% 01h + NOT(02h + 00h + 00h + 02h + 12h + 00h).% 当一个扩展段地址记录被读取,存储于数据域的扩展段地址被保存,它被应用于从Intel HEX文件读取来的随后的记录.段地址保持有效,直到它被另外一个扩展地址记录所改变.% 通过把记录当中的地址域与被移位的来自扩展段地址记录的地址数据相加获得数据记录的绝对存储器地址.% 以下的例子演示了这个过程..% 来自数据记录地址域的地址 2462% 扩展段地址记录数据域 + 1200% ---------% 绝对存储器地址 00014462%% 文件结束(EOF)记录% Intel HEX文件必须以文件结束(EOF)记录结束.这个记录的记录类型域的值必须是01.EOF 记录外观总是如下:% :00000001FF% 其中:% 00 是记录当中数据字节的数量.% 0000 是数据被下载到存储器当中的地址.在文件结束记录当中地址是没有意义被忽略的.0000h是典型的地址.% 01 是记录类型 01(文件结束记录)% FF 是这个记录的校验和,计算方法如下:% 01h + NOT(00h + 00h + 00h + 01h).%% Intel HEX文件例子:% 下面是一个完整的Intel HEX文件的例子:% :10001300AC12AD13AE10AF1112002F8E0E8F0F2244% :10000300E50B250DF509E50A350CF5081200132259% :03000000020023D8% :0C002300787FE4F6D8FD7581130200031D% :10002F00EFF88DF0A4FFEDC5F0CEA42EFEEC88F016% :04003F00A42EFE22CB% :00000001FF%%%% 附:英文原文%% QUESTION% What is the Intel HEX file format?% ANSWER% The Intel HEX file is an ASCII text file with lines of text that follow the % Intel HEX file format. Each line in an Intel HEX file contains one HEX record. % These records are made up of hexadecimal numbers that represent machine% language code and/or constant data. Intel HEX files are often used to transfer % the program and data that would be stored in a ROM or EPROM. Most EPROM% programmers or emulators can use Intel HEX files.% Record Format% An Intel HEX file is composed of any number of HEX records. Each record is made % up of five fields that are arranged in the following format:% :llaaaatt[dd...]cc% Each group of letters corresponds to a different field, and each letter% represents a single hexadecimal digit. Each field is composed of at least two % hexadecimal digits-which make up a byte-as described below:% : is the colon that starts every Intel HEX record.% ll is the record-length field that represents the number of data bytes (dd) in % the record.% aaaa is the address field that represents the starting address for subsequent % data in the record.% tt is the field that represents the HEX record type, which may be one of the % following:% 00 - data record% 01 - end-of-file record% 02 - extended segment address record% 04 - extended linear address record% dd is a data field that represents one byte of data. A record may have multiple % data bytes. The number of data bytes in the record must match the number% specified by the ll field.% cc is the checksum field that represents the checksum of the record. The% checksum is calculated by summing the values of all hexadecimal digit pairs in % the record modulo 256 and taking the two's complement.% Data Records% The Intel HEX file is made up of any number of data records that are terminated % with a carriage return and a linefeed. Data records appear as follows:% :10246200464C5549442050524F46494C4500464C33% where:% 10 is the number of data bytes in the record.% 2462 is the address where the data are to be located in memory.% 00 is the record type 00 (a data record).% 464C...464C is the data.% 33 is the checksum of the record.% Extended Linear Address Records (HEX386)% Extended linear address records are also known as 32-bit address records and % HEX386 records. These records contain the upper 16 bits (bits 16-31) of the % data address. The extended linear address record always has two data bytes and % appears as follows:% :02000004FFFFFC% where:% 02 is the number of data bytes in the record.% 0000 is the address field. For the extended linear address record, this field % is always 0000.% 04 is the record type 04 (an extended linear address record).% FFFF is the upper 16 bits of the address.% FC is the checksum of the record and is calculated as% 01h + NOT(02h + 00h + 00h + 04h + FFh + FFh).% When an extended linear address record is read, the extended linear address % stored in the data field is saved and is applied to subsequent records read % from the Intel HEX file. The linear address remains effective until changed by % another extended address record.% The absolute-memory address of a data record is obtained by adding the address % field in the record to the shifted address data from the extended linear% address record. The following example illustrates this process..% Address from the data record's address field 2462% Extended linear address record data field FFFF% --------% Absolute-memory address FFFF2462% Extended Segment Address Records (HEX86)% Extended segment address records-also known as HEX86 records-contain bits 4-19 % of the data address segment. The extended segment address record always has two % data bytes and appears as follows:% :020*********EA% where:% 02 is the number of data bytes in the record.% 0000 is the address field. For the extended segment address record, this field % is always 0000.% 02 is the record type 02 (an extended segment address record).% 1200 is the segment of the address.% EA is the checksum of the record and is calculated as% 01h + NOT(02h + 00h + 00h + 02h + 12h + 00h).% When an extended segment address record is read, the extended segment address % stored in the data field is saved and is applied to subsequent records read % from the Intel HEX file. The segment address remains effective until changed by % another extended address record.% The absolute-memory address of a data record is obtained by adding the address % field in the record to the shifted-address data from the extended segment% address record. The following example illustrates this process.% Address from the data record's address field 2462% Extended segment address record data field 1200% --------% Absolute memory address 00014462% End-of-File (EOF) Records% An Intel HEX file must end with an end-of-file (EOF) record. This record must % have the value 01 in the record type field. An EOF record always appears as % follows:% :00000001FF% where:% 00 is the number of data bytes in the record.% 0000 is the address where the data are to be located in memory. The address in % end-of-file records is meaningless and is ignored. An address of 0000h is% typical.% 01 is the record type 01 (an end-of-file record).% FF is the checksum of the record and is calculated as% 01h + NOT(00h + 00h + 00h + 01h).% Example Intel HEX File% Following is an example of a complete Intel HEX file:% :10001300AC12AD13AE10AF1112002F8E0E8F0F2244% :10000300E50B250DF509E50A350CF5081200132259% :03000000020023D8% :0C002300787FE4F6D8FD7581130200031D% :10002F00EFF88DF0A4FFEDC5F0CEA42EFEEC88F016% :04003F00A42EFE22CB% :00000001FFclear ;clc;data=1:16;%data need to be writen into the mif filefh=fopen('E:Hex1.hex','w');l_data=length(data);for j=1:l_dataadr=dec2hex(j-1,4);%4位十六进制表示的地址data_hex=dec2hex(data(j),4);%4位十六进制表示的数据data_H=floor(data(j)/2^8);%数据十六进制高两位data_L=data(j)-data_H*2^8;%数据十六进制低两位adr_H=floor((j-1)/2^8);%地址十六进制高两位adr_L=(j-1)-adr_H*2^8;%地址十六进制低两位idetify_word=mod(2^8-mod(2+adr_H+adr_L+data_H+data_L,2^8),2^8);%十进制表示的校验位,外围mod函数是以防里面的mod函数结果为0idetify_word_hex=dec2hex(idetify_word,2);%十六进制表示的校验位fprintf(fh,[':02',adr,'00',data_hex,idetify_word_hex,' ']);%产生HEX码(end-1:end)endfprintf(fh,':00000001FF');fclose(fh);。