如何用KeilC51将ASM文件编译成Hex文件

合集下载

如何用KeilC51将ASM文件编译成Hex文件

如何用KeilC51将ASM文件编译成Hex文件

按如下步骤进行:1)点击菜单project,选择new project:2)然后选择你要保存的路径,输入工程文件的名字,比如保存到keil目录里,工程文件的名字为test. 如下图所示,然后点击保存3)这时会弹出一个对话框,要求你选择单片机的型号,你可以根据你使用的单片机来选择,keil c51 几乎支持所有的51核的单片机,如果你设计的是华邦的W77E58,可以选择winbond->W77E58,但是有一些版本,比如6.02,对它不能仿真,但是可以选择dallas的ds80c320来代替设计W77E58,两者的内核是一样的,只是w77e58带flash rom,而ds80c320没有flash rom,如果你的软件在仿真W77e58的时候有问题,那么就选用ds80c320 .我这里还是以大家用的比较多的Atmel 的89c52来说明,如图所示,选择89c52之后,右边一栏是对这个单片机的基本的说明,然后点击确定.4)这时要新建一个源程序文件,建立一个汇编或c文件,如果你已经有源程序文件,可以忽略这一步.点击菜单File->New:5)输入一个简单的程序,如下:5)选择菜单File_>SAVE:6)选择你要保存的路径,在文件名里输入文件名,注意一定要输入扩展名,如果是c程序文件,扩展名为.c,如果是汇编文件,扩展名为.a51,如果是ini文件,扩展名为.ini,其他文件类型,比如注解说明文件,可以保存为.txt的扩展名.那么我们这里是要存储一个c源程序文件,所以输入.c扩展名,保存为test.c 的名字,(也可以保存为其他名字,比如learn.c等),点击保存.7)点击Target 1前面的+号,展开里面的内容source Group1:8)用右键点击Sourece Group 1(注意用鼠标的右键,而不是左键),将弹出一个菜单,选择AddFiles to Guoup"Source Group 1".9)选择刚才的文件test.c,文件类型选择C Source file(*.c).因为我们的是c程序文件,所以选择该类型,如果是汇编文件,就选择asm source file.如果是目标文件,选择Object file,如果是库文件,选择Library file.最后点击Add. 点击add之后,窗口不会消失,(如果要添加多个文件,可以不断添加),添加完毕此时再点击Close关闭该窗口.10)这时在source group 1 里就有test.c文件,如图:11)用鼠标右键(注意用右键)点击左边的Target 1,会出现一个菜单,选择Options for Target "Target 1",会出现一个选项,如下图,选中“Create Hex File",红色箭头所示!12)在test.c上点击鼠标右键,在出现的下拉菜单中选择“build target”,看状态栏,若是:"test" - 0 Error(s), 0 Warning(s).”,恭喜你成功了,看看你的文件夹吧,是否多了个test.hex。

KEIL C51 中 C语言加入汇编语言的使用方法

KEIL C51 中 C语言加入汇编语言的使用方法

KEIL C51 中C语言加入汇编语言的使用方法
51单片机2008-06-03 18:20:42 阅读22 评论0字号:大中小
1.通过使用预处理指令#asm 和#endasm来使用汇编语言。

用户编写的汇编语言可以紧跟在#asm之后,而在#endasm之前结束。

如下所示:
#asm
/*汇编源程序*/
#endasm
在#asm和#endasm之间的语句将作为汇编语言的语句输出到由编译器产生的汇编语言文件中。

2.通过使用预处理指令# pragma asm和函数_asm()来使用汇编语言。

在程序的开头加上预处理指令#pragma asm,在该预处理指令之前只能有注释和其它预处理指令。

_asm()函数可按以下方式使用。

_asm(汇编语言字符串)
在汇编语言字符串中,可以通过回车和换行符把各个语句分开。

在C语言中使用汇编语言,可以操作C语言中的全局变量或完成用C语言难于完成的功能,但要注意以下几点:
①#asm不允许嵌套使用。

②当使用asm语句时,编译系统并不输出目标模块,而只输出汇编源文件。

③ _asm只能用小写字母,如果写成大写,就作为普通变量。

④#asm#endasm和_asm只能用在函数内。

Keil C51的使用

Keil C51的使用
程序。
编辑课件
16
5、移除文件
要把某个文件从工程中移除,可在此文件上单击右键, 然后单击“Remove File ’ ’ ”。
移除不是删除,文件依然存在。
编辑课件
17
我来演示
1、打开一个已有的工程项目(不是默认项目)。 2、打开一个已有的工程项目,修改单片机型号。
3、打开一个已有的工程项目,删除原有的文件,装 入一个已有的C语言文件。
此时光标在编辑窗口里闪烁,就可以输入用户的应 用程序了。
或者把已有的程序从其他地方直接复制到程序编辑 窗口内。
文件的建立也可以用Windows环境的附件中的记 事本或写字板等纯文本编辑软件完成。
参见教材《单片机的C5编1辑应课件用程序设计》第 309 页 27
新建文件时,建议首先保存空白文件。
编辑课件
11
如果在选择了目标器件后,想更改器件,可选择 Project菜单中的Select Device for Target‘Tartet 1’。
由于不同厂家的许多型号性能相近,因此,如果找不 到用户要求的芯片信号,可以选择其他公司的相近型 号。
参见教材《单片机的C5编1辑应课件用程序设计》第 308 页 12
uVision2支持的所有CPU器件的型号根据生产厂家 形成器件组。
用户可根据需要选择相应的器件组并选择相应的器 件型号。
编辑课件
10
通过滚动条,选择生产厂商、目标CPU。
如:Atmel器件组内的AT89C51单片机。首先找到 Atmel公司,然后单击左边的“+”号展开该组。选择 AT89C51之后,单击“确定”。
程序输入完毕后别忘了再次保存。
参见教材《单片机的C5编1辑应课件用程序设计》第 309 页 28

keil软件生成HEX文件的具体操作步骤

keil软件生成HEX文件的具体操作步骤

ke订软件生成HEX文件的具体操作步骤一. 下载安装keil 软件图1二. 打开keil 软件文件IE 编魚匡)视囹© 工徒旧 凋试(W 闪存外围设备® 工具CD SVCS (S )窗口呦 帮助但)•倉色13 I® X 屉血口 G 岸率仏% Q 旄晞囲出・*側煖篦裁萬|聲点34%图2三. 新建工程匸单击文件,选择新建——新建工程文件⑸雋匡)视囹也)工悽(E )调试(W 闪存◎)外围退岀凶tr +O Ctrl 十S(N)打开 关闱© 保存⑸ | 另存为… 煤存命(D(£]新建文件(W … Ctrl 十Z程型…Project Workspace..,设笛数折库(w ・・・ 授权管理・・・程 稣的丈件打印设冒®… 打印住)Ctrl 十P打印预览Q9图32•弹出图4对话框,选择新工程的存储位置及为新工程命名,然后点保存图43•保存后弹岀图5窗口,单击atmel前面的加号弹岀图6对话框,在图6对话框中选择要编程的芯片点击确定。

下面我们以51系列单片机为列。

图6旨?电忘1’送挂设备(&S)CPU厂使用扩展的连按器3! 厂使用扩展的汇编器加!描述(C):8051-based Fullly Static 24MHz CMOS 2 T iITI er s/C ount er s ? 6 Interrupt s/2 PiThree"Lexrel Program Memory Lock, 4K 128 Bytes Orvchip RAM厂家: Atm el 设營:AT89C51 芯族; C51资料库目录(D):四. 新建c文件1.单击文件,新建——新建文件图633 123456 - uVision3 _ Jf文件輛⑥ 视囹GD 工程(0调试(D)闪存&)艸ji图72•单击文件,单击另存为,弹出图9对话框,输入文件名,文件名后加点C 。

C51编程keil c6.20c 直接嵌入汇编的方法

C51编程keil c6.20c 直接嵌入汇编的方法

x)
Untitled Document 用此方法可以在c源代码的任意位置用#pragma asm和#pragma endasm嵌入汇编 语句。 但要注意的是在直接使用形参时要小心,在不同的优化级别下产生的汇编代码 有所不同, 可以察看对应的.lst文件看一看,得到正确的优化级别后,#pragma OT (x,speed)锁定 优化级别(这里的值是0-9)。 返回首页
页码,2/2
/wenzhang/keiitled Document
页码,1/2
C51编程:keil c6.20c 直接嵌入汇编的方法!!!
上此站以来,得到大家的很多的帮助,感谢大家!特此奉上"点心"一块供大 家品尝。希望 能增加你营养。 //<asm.h> #ifdef ASM unsigned long shiftR1(register unsigned long); #else extern unsigned long shiftR1(register unsigned long); #endif //end of asm.h //<asm.c> #define ASM #include <asm.h> #include <reg52.h> #pragma OT(4,speed) unsigned long shiftR1(register unsigned long { #pragma asm clr c mov a,r4 rrc a mov r4,a mov a,r5 rrc a mov r5,a mov a,r6 rrc a mov r6,a mov a,r7 rrc a mov r7,a #pragma endasm return(x); } //end of asm.c 将此源文件加入要编译的工程文件, 将光标指向此文件,选择右键菜单“option for file 'asm.c'”, 将属性单“properties”中的“Generate Assembler SRC File”“Assemble SRC File” 两项设置成黑体的“√”将“Link Public Only”的“√”去掉,再编译即 可。 /wenzhang/keil.htm 2004-5-28

KEILC51编译软件使用方法

KEILC51编译软件使用方法

2.1 Keiluvision4的安装和使用Keil 公司是一家业界领先的微控制器(MCU )软件开发工具的独立供应商。

Keil 公司由两家私人公司联合运营,分别是德国慕尼黑的KeilElektronikGmbH 和美国德克萨斯的KeilSoftwareInc 。

Keil 公司制造和销售种类广泛的开发工具,包括ANSIC 编译器、宏汇编程序、调试器、连接器、库管理器、固件和实时操作系统核心(real-timekernel)。

有超过10万名微控制器开发人员在使用这种得到业界认可的解决方案。

其KeilC51编译器自1988年引入市场以来成为事实上的行业标准,并支持超过500种8051变种。

KeilC51是美国KeilSoftware 公司出品的51系列兼容单片机C 语言软件开发系统,与汇编相比,C 语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。

Keil 提供了包括C 编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision )将这些部分组合在一起。

运行Keil 软件需要WIN2000、WINXP 等操作系统。

如果你使用C 语言编程,那么Keil 几乎就是你的不二之选,即使不使用C 语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。

2.1.1 KeilμVision4简介KeilμVision4是美国KeilSoftware 公司2009年2月发布的。

KeilμVision4引入灵活的窗口管理系统,使开发人员能够使用多台监视器,并提供了视觉上的表面对窗口位置的完全控制的任何地方。

新的用户界面可以更好地利用屏幕空间和更有效地组织多个窗口,提供一个整洁,高效的环境来开发应用程序。

新版本支持更多最新的ARM 芯片,还添加了一些其他新功能。

2011年3月ARM 公司发布最新集成开发环境RealViewMDK 开发工具中集成了最新版本的KeiluVision4,其编译器、调试工具实现与ARM 器件的最完美匹配。

关于在 KEIL C51 中直接嵌入汇编

关于在 KEIL C51 中直接嵌入汇编

我找到了一些资料希望对你有用下周就要做实验了,由于听老师说机房位子可能比较少,对我这种蹭课的学生来说也就不敢奢望同选这门课的同学一样能够正常的在机房调试程序了,因此,我决定提前先在自己的工作室里把实验内容给过一遍。

第一个实验是关于嵌入式编程的,这个实验目的一方面是为了让我们熟悉ARM下编程的编译环境ADS和调试器A TX,另一方面是让我们掌握如何将c 语言和汇编语言在实际编程中相互调用。

经过这两天靠自己不断的摸索,终于掌握了如何在编译环境中进行ARM编程,另外,还学会了在c中调用汇编程序的方法,以及如何通过linux 自带的gcc编译嵌有汇编的c程序,总之,收获还是蛮多的哦,下面就总结一下吧。

1、c嵌汇编首先说一下关于GCC编译嵌有汇编语言的c语言吧,GCC编译的汇编语言不是我们上课时学的Intel x86汇编,而是A T&T汇编,两者的区别可以查看《Gcc使用的内嵌汇编语法格式小教程》。

下面是内嵌汇编的几种格式:语法__asm__(“instruction. ……instruction”); //Linux gcc中支持(注意asm的下划线均为两个否则GCC将会无法编译)__asm{instruction…instruction}; //ADS中支持(注意asm的下划线均为两个否则GCC将会无法编译)asm(“instruction [; instruction]”); //ARM C++中使用例1是我在linux环境下,编的嵌有汇编程序的c语言,并通过了GCC的编译:例1:#includeint plus(int a,int b){__asm__(“add %1,%0\n\t”:”+r”(a):”r”(b));return (c);}int main(){int a,b,c;a=2;b=1;c=plus(a,b);printf(“c=%d\n”,c);}这个程序应该是很简单的,但关键是子函数中嵌入的那段汇编程序,具体的写法可以参看其他文章。

KeilC51使用教程

KeilC51使用教程

Keil C语言程序设计示例教程(开发C8051F310)使用汇编语言或C语言要使用编译器,以便把写好的程序编译为机器码,才能把HEX可执行文件写入单片机内。

KEIL uVISION是众多单片机应用开发软件中最优秀的软件之一,它支持众多不同公司的MCS51架构的芯片,甚至ARM,它集编辑,编译,仿真等于一体,它的界面和常用的微软VC++的界面相似,界面友好,易学易用,在调试程序,软件仿真方面也有很强大的功能。

因此很多开发51应用的工程师或普通的单片机爱好者,都对它十分喜欢。

在这里以51单片机并结合C程序为例(汇编操作方法类似,唯一不同的是汇编源程序文件名后缀为“.ASM ”),图文描述工程项目的创建和使用方法。

1.首先我们要养成一个习惯:最好先建立一个空文件夹,把您的工程文件放到里面,以避免和其他文件混合,如下图, 创建了一个名为“PRJ_C8051”文件夹2.点击桌面上的Keil uVision4图标,出现启动画面:3.点击“project --- New uVision Project”新建一个工程:4.在对话框,选择放在刚才建立的“PRJ_C8051”文件夹下,给这个工程取个名为Test_C8051F310, 然后保存,工程的后缀为uvporj。

5.弹出一个框,在CPU类型下我们找到并选中“Silicon Laboratories. Inc.”下的C8051F3106.加入C8051起动码7.建立一个源程序文本8.在下面空白区别写入或复制一个完整的C程序:9.输入源程序文件名名称,示例输入“Test_C8051F310.c”,然后保存:10.把刚创建的源程序文件加入到工程项目文件中。

11.设置---目标(第1步~ 第4步)15.工程项目创建和设置全部完成!点击保持并编译16.在C8051F310中的C语言程序示例//-----------------------------------------------------------------------------// Includes// 在c8051f310.h在头文件中定义了C8051F310的寄存器、输入/输出的端口//-----------------------------------------------------------------------------#include <c8051f310.h> // SFR declarations//-----------------------------------------------------------------------------// 16-bit SFR Definitions for 'F30x//-----------------------------------------------------------------------------sfr16 TMR2RL = 0xca; // Timer2 reload valuesfr16 TMR2 = 0xcc; // Timer2 counter//-----------------------------------------------------------------------------// Global CONSTANTS//-----------------------------------------------------------------------------#define SYSCLK 24500000 / 8 // SYSCLK frequency in Hzsbit LED = P0^0; // LED='1' means ON//-----------------------------------------------------------------------------// Function PROTOTYPES//-----------------------------------------------------------------------------void SYSCLK_Init (void);void PORT_Init (void);void Timer2_Init (int counts);void Timer2_ISR (void);//-----------------------------------------------------------------------------// MAIN Routine//-----------------------------------------------------------------------------void main (void){// disable watchdog timerPCA0MD &= ~0x40; // WDTE = 0 (clear watchdog timer// enable)SYSCLK_Init (); // Initialize system clock to// 24.5MHzPORT_Init (); // Initialize crossbar and GPIOTimer2_Init (SYSCLK / 12 / 10); // Init Timer2 to generate// interrupts at a 10Hz rate.EA = 1; // enable global interruptswhile (1) // spin forever{}}//-----------------------------------------------------------------------------// SYSCLK_Init//-----------------------------------------------------------------------------//// This routine initializes the system clock to use the internal 24.5MHz / 8// oscillator as its clock source. Also enables missing clock detector reset.//void SYSCLK_Init (void){OSCICN = 0x80; // configure internal oscillator for// its lowest frequency RSTSRC = 0x04; // enable missing clock detector }//-----------------------------------------------------------------------------// PORT_Init//-----------------------------------------------------------------------------//// Configure the Crossbar and GPIO ports.// P3.3 - LED (push-pull)//void PORT_Init (void){// assignmentsXBR0 = 0x00; // no digital peripherals selectedXBR1 = 0x40; // Enable crossbar and weak pull-ups//P3MDOUT |= 0x08;P0MDOUT |= 0x03; // enable LED as a push-pull output}//-----------------------------------------------------------------------------// Timer2_Init//-----------------------------------------------------------------------------//// Configure Timer2 to 16-bit auto-reload and generate an interrupt at// interval specified by <counts> using SYSCLK/48 as its time base.//void Timer2_Init (int counts){TMR2CN = 0x00; // Stop Timer2; Clear TF2;// use SYSCLK/12 as timebase CKCON &= ~0x60; // Timer2 clocked based on T2XCLK;TMR2RL = -counts; // Init reload valuesTMR2 = 0xffff; // set to reload immediatelyET2 = 1; // enable Timer2 interruptsTR2 = 1; // start Timer2}//-----------------------------------------------------------------------------// Interrupt Service Routines//-----------------------------------------------------------------------------//-----------------------------------------------------------------------------// Timer2_ISR//-----------------------------------------------------------------------------// This routine changes the state of the LED whenever Timer2 overflows.//void Timer2_ISR (void) interrupt 5{TF2H = 0; // clear Timer2 interrupt flagLED = ~LED; // change state of LED}17.KEIL C语言与汇编语言的混合编程方法C语言中加入汇编语言模块的方法:例子:void func(){C语言代码……#pragma asmMOV R6,#23DELAY2: MOV R7,#191DELAY1: DJNZ R7,DELAY1DJNZ R6,DELAY2RET#pragma endasmC语言代码……}汇编部分需要用#pragma asm和#pragma endasm包起来18.KEIL C混合编程中的错误与解决方法1)Keil提示“asm/endasm”出错的解决方法如果只是像1中那样直接加入汇编代码的话,编译将会报错,错误如下:compiling sendata.c...sendata.c(81): error C272: 'asm/endasm' requires src-control to be active sendata.c(87): error C272: 'asm/endasm' requires src-control to be active Target not created解决方法如下:首先project workspace窗口右键单击包含有汇编部分的c语言文件名,然后在如上图所示的菜单中选择带有红色方框的选项在弹出的对话框中,将上图中红色方框选中的两项打上勾(默认的情况下,前面的勾是灰色的,要让这两项前的勾变为黑色的),点击确定。

Keil反汇编HEX文件资料

Keil反汇编HEX文件资料

Keil 程序调试窗口上一讲中我们学习了几种常用的程序调试方法,这一讲中将介绍Keil 提供各种窗口如输出窗口、观察窗口、存储器窗口、反汇编窗口、串行窗口等的用途,以及这些窗口的使用方法,并通过实例介绍这些窗口在调试中的使用。

一、程序调试时的常用窗口Keil 软件在调试程序时提供了多个窗口,主要包括输出窗口(Output Windows )、观察窗口(Watch&Call Statck Windows )、存储器窗口(Memory Window )、反汇编窗口(Dissambly Window )串行窗口(Serial Window )等。

进入调试模式后,可以通过菜单View 下的相应命令打开或关闭这些窗口。

图1是输出窗口、观察窗口和存储器窗口,各窗口的大小可以使用鼠标调整。

进入调试程序后,输出窗口自动切换到Command 页。

该页用于输入调试命令和输出调试信息。

对于初学者,可以暂不学习调试命令的使用方法。

1、存储器窗口存储器窗口中可以显示系统中各种内存中的值,通过在Address 后的编缉框内输入“字母:数字”即可显示相应内存值,其中字母可以是C 、D 、I 、X ,分别代表代码存储空间、直接寻址的片内存储空间、间接寻址的片内存储空间、扩展的外部RAM 空间,数字代表想要查看的地址。

例如输入D :0即可观察到地址0开始的片内RAM 单元值、键入C :0即可显示从0开始的ROM 单元中的值,即查看程序的二进制代码。

该窗口的显示值可以以各种形式显示,如十进制、十六进制、字符型等,改变显示方式的方法是点鼠标右键,在弹出的快捷菜单中选择,该菜单用分隔条分成三部份,其中第一部份与第二部份的三个选项为同一级别,选中第一部份的任一选项,内容将以整数形式显示,而选中第二部份的Ascii 项则将以字符型式显示,选中Float 项将相邻四字节组成的浮点数形式显示、选中Double 项则将相邻8字节组成双精度形式显示。

Keil生成HEX文件

Keil生成HEX文件
这个记录里的16BYTE的数据的起始地址就是0x0000 + 0x0004 = 0x0004.
第3条记录的长度为00,LOAD OFFSET为0000,TYPE = 01,校验和为FF。说明这个是一个END OF FILE RECORD,标识
文件的结尾。
+---------------------------------------------------------------+
| RECORD | RECLEN | LOAD | RECTYPE | INFO or DATA | CHKSUM |
| MARK ':' | | OFFSET | '00' | | |
+---------------------------------------------------------------+
01 ----文件结束记录
02 ----扩展段地址记录
04 ----扩展线性地址记录
dd 是数据域,表示一个字节的数据,一个记录可能有多个数据字节,字节数目可以
查看ll域的说明
cc 是效验和域,表示记录的效验和,计算方法是将本条记录冒号开始的所有字母对
详见INTEL 官方文档。
第1条记录的长度为02,LOAD OFFSET为0000,RECTYPE为04,说明该记录为扩展段地址记录。数据为0000,校验和为
FA。从这个记录的长度和数据,我们可以计算出一个基地址,这个地址为0X0000。后面的数据记录都以这个地址为基
地址。
第2条记录的长度为10(16),LOAD OFFSET为0004,RECTYPE为00,说明该记录为数据记录。

如何在keil中生成hex文件

如何在keil中生成hex文件

在keil中编写完程序后,要将程序通过烧录器烧写到单片机中,这时就需要在keil中产生一个hex格式的文件,只有通过这种格式,烧录器才能将程序烧写到单片机中。

hex文件格式是Intel公司提出的按地址排列的数据信息,数据宽度为字节,所有数据使用16进制数字表示, 常用来保存单片机或其他处理器的目标程序代码。

它保存物理程序存储区中的目标代码映象。

一般的编程器都支持这种格式。

如何才能产生这种格式的文件呢?
在keil中对其进行如下设置,便能产生hex文件:
点击菜单“Option for Tagret '...'” ---> 选择“Output”页--->钩选“Create HEX File”--->重编译
如果程序无误,在Project的当前目录即会产生HEX 文件。

KEIL怎样生成HEX文件和相关设置

KEIL怎样生成HEX文件和相关设置

KEIL怎样生成HEX文件和相关设置学习51单片机的朋友面对着全英文的KEIL肯定会有这样的疑问“KEIL如何生成HEX文件?”,“生成的HEX文件在哪里?”下面就简单介绍一下生成HEX 的方法工具/原料∙keil uv2 uv3∙winXP新建项目1. 1先打开KEIL软件,点击“project”菜单2. 2点击“new project”新建一个项目。

如果不新建项目是没法生成HEX文件的3. 3在接下来的对话框中,选一个目录,然后为这个项目起一个名字。

名字可以随便起,这里以“测试项目”为例4. 4接下来出现一个对话框,要为项目选一个CPU。

点击左侧的树状目录滚动条,点开“ATMEL”选中“AT89C51”,单击确定5. 5这个对话框问是否把启动文件加进项目,选“是”6. 6要生成HEX文件还要设置一下。

单击下图中的设置图标7.7切换到“output”选项卡,勾选下图中“create HEX file”。

如果要改变HEX 文件的保存位置,可以点左上角的“select flolder for objects”选一个新的文件夹完成设置后选确定END添加源文件并生成HEX文件1. 1接下来添加源文件,源文件可以是用C语言或者是汇编语言,现在以C语言为例。

在下图的图标点右键2. 2在弹出的菜单中点击“add files to group source group 1”3. 3选中要加入的C文件,C文件可以是从别处复制过来,也可以自己写4. 4点“add”后可以看到C文件出现在左侧的目录中。

这时要点击“close”关闭对话框5. 5源程序添加进来后可以点击图中编译图标生成HEX文件6. 6然后在底下的状态框中可以看到结果,出现下图表示HEX文件已经生成了7.7打开文件夹可以看到,HEX文件已经生成了END注意事项第1步:打开Keil uVision2/3第2步:新建工程project->new project将弹出creat new project框,写入工程名称,例如test。

keilC语言中加入汇编

keilC语言中加入汇编

keilC语言中加入汇编C51下加入汇编代码使用如下标志符:#pragma asm;汇编语句#pragma endasm注意:Keil编译器中需要激活Properties中的“Generate Assembler SRC File” 和“Assembler SRC File ”两个选项以下举例:1、把"xx.c"加入工程中,右击"xx.c"选择“options for file"xx.c" 选择“Generate Assembler SRC File”和“Assemble SRC File”打上黑勾有效;2、根据选择的编译模式,把相应的库文件象加"xx.c"一样加入工程中并放在"xx.c"下面,如smail模式下选"keil\c51\lib\c51s.lib"加入工程中,如果要进行浮点运算把"keil\c51\lib\c51fpl.lib"也加入工程中。

在Keil 安装目录下的\C51\LIB\ 目录的LIB 文件如下:C51S.LIB - 没有浮点运算的Small modelC51C.LIB - 没有浮点运算的Compact modelC51L.LIB - 没有浮点运算的Large modelC51FPS.LIB - 带浮点运算的Small modelC51FPC.LIB - 带浮点运算的Compact modelC51FPL.LIB - 带浮点运算的Large model3、在"xx.c"头文件中加入优化:比如#pragma OT(4,speed)4、在"xx.c"中加入汇编代码#pragma ASM;Assembler Code Here#pragma ENDASM5、编译生成xx.hex注意:没有做第一步会有如下警告:'asm/endasm' requires src-control to be active没有做第二步会有如下警告:UNRESOLVED EXTERNAL SYMBOL;REFERENCE MADE TO UNRESOLVED EXTERNAL等没有做第三步会有如下警告:UNDEFINED SYMBOL (PASS-2)用Keil在C中嵌入汇编很多用C语言编单片机程序的朋友,有时候会碰上“精确延时”,而用C又要搞清楚它的编译,往往在这个时候就想到了用汇编来编写延时,具体怎么在C中嵌入汇编呢?其实也比较简单,如下图,在C 文件中要嵌入汇编的地方用#pragma asm和#pragma endasm分隔开来,这样编译时KEIL就知道这中间的一段是汇编了。

用keil生成hex文件

用keil生成hex文件

用keil生成hex文件
1、建立mcs51源文件,选择new project建立管理项目
2、选择被仿真的51器件
3、建立源文件
输入汇编语言源程序
4、点击如图图标,对源程序进行编译、链接
在下面的图形中,会显示是否有语法错误,如有着调入源程序改正,如没有则可进行下一步,生成扩展名为“hex”的二进制文件。

5、生成“hex”文件
1)鼠标指向项目文件夹
2)压下鼠标右件,选择如图中的选项,进入
3)在下图中选择,“output”
将Creat HEX File打勾建立“hex”文件,在Name of Executable 给可执行文件取名,在Select Folder for Objects 选择存放路径,然后确定。

4)点击图标再次进行汇编,汇编后即可得到扩展名为“hex”的可执行二进制文件。

KEIL里如何生成HEX文件

KEIL里如何生成HEX文件

KEIL里如何生成HEX文件第四章:KEIL使用入门本章节介绍如何使用KEIL软件建立一个工程,编写一个简单的程序,编译和下载到单片机运行的流程,目的是教会用户学会用此软件写代码的最基本步骤。

第一步:下载并安装KEIL软件(略)第二步:打开KEIL软件,会出现如下界面我使用的是keil4版本。

这是打开后的界面1:建立一个新工程出现以下界面,在你的硬盘合适的文件夹中创立一个工程文件夹,最好是英文路径,如图是创立了test文件夹打开后,文件名取test,保存弹出芯片选择框,选择Atmel的89C51或89C52(4kb/8kb程序flash),如图选择后者然后点击OK,点击YES,工程创立完成,出现以下界面2:向工程里添加文件出现了新的文本编辑框text1,点击保存按钮输入你文本的文件名,名字可据代码所实现的功能起,如图,然后点击保存现在往工程里添加已经保存好的文件然后选择刚才保存的文件,点击ADD然后点击Close现在在工程目录下已经有你的文本文件了。

3:编译并生成hex文件现在将如下代码拷贝进待编辑的文本中#include //51单片机头文件#define uint unsigned int //用uint代替unsigned int void delay(uint z) //延时函数{uint x,y;for(x=z;x>0;x--)for(y=500;y>0;y--);}void main(){while(1) //让所有led循环闪烁{P2=0xff;delay(200);P2=0x00;delay(200);}}完成后,需要设置以下进行如图设置点击OK,然后进行以下操作在最下边的信息框出现以下信息打开你所建立的工程文件夹,会发现生成了.HEX文件。

应用Keil进行程序的编译主要步骤为

应用Keil进行程序的编译主要步骤为

应用Keil进行程序的编译主要步骤为:
1、创建C程序并保存为c文档。

2、新建立工程文件并选择位置保存起来
3、工程保存后选择CPU型号89C51。

4、在创建的工程管理页面左上角点击Source Group1,再右击鼠标选择“Add
File to Group …Source Group1‟”,添加之前保存好的c文档文件。

5、添加后双击文件名3.c,就能够打开程序代码。

6、设置工程属性,在Output选项卡中要把“Creat Hex Fi”选择上。

7、工程设置好之后,点击进行编译、连接和产生目标hex文件。

成功编译后,就可以通过编程器将生成的hex目标文件烧录进去单片机中运行了。

4.4仿真结果
系统上电时间显示15分00秒,甲乙两队分数都是0。

这时可以设置比赛时间按add1 3下,将分钟调到18,按add2 30下将秒调到30。

按下运行按钮,时间开始倒计时。

如果运行后按下甲加,或者乙加,对应的队分数将会加上去。

时间还是设置18分30秒,上场的分数不会丢失。

按运行,又开始倒计时比赛时
间到,喇叭会叫。

Keil C51编译器 教程

Keil C51编译器 教程

下面介绍Keil C51软件的使用方法 :
启动Keil C51时的屏幕
进入 Keil C51 后,屏幕如下图所示。几秒钟后出现编辑界
进入Keil C51后的编辑界面
下面通过简单的编程、调试,引导大家学习Keil C51软件的基本使用方法 和基本的调试技巧。
首先建立一个新工程,单击Project菜单,在弹 出的下拉菜单中选中New Project 选项
选好单片机的类型点击确认之后会弹出的对话框, 我们点击“否”
完成上一步骤后,屏幕如下图所示
到现在为止,我们还没有编写一句程序,下面开 始编写我们的第一个程序。在下图中,单击“File”菜 单,再在下拉菜单中单击“New”选项
新建文件后屏幕如下图所示
此时光标在编辑窗口里闪烁,这时可以键入用户的应用程序了,首先 保存该空白的文件,单击菜单上的“File”,在下拉菜单中选中“Save As” 选项单击,屏幕如下图所示,在“文件名”栏右侧的编辑框中,键入欲使 用的文件名,同时,必须键入正确的扩展名。注意,如果用C语言编写程 序,则扩展名为(.c);如果用汇编语言编写程序,则扩展名必须为(.asm)。 然后,单击“保存”按钮。
回到编辑界面后,单击“Target 1”前面的“+” 号,然后在“Source Group 1”上单击右键
然后单击“Add File to Group ‘Source Group 1’” 屏幕如下图所示
选中Test.c,然后单击“Add ”屏幕中到 加 多“ 的了了 源吗一 程?个 序子子 的项项 多的 少多 文 相少
在输入上述程序时,Keil c51会自动识别关键 字,并以不同的颜色提示用户加以注意,这样会 使用户少犯错误,有利于提高编程效率
程序输入完毕后,如下图所示
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

按如下步骤进行:
1)点击菜单project,选择new project:
2)然后选择你要保存的路径,输入工程文件的名字,比如保存到keil目录里,工程文件的名字为test. 如下图所示,然后点击保存
3)这时会弹出一个对话框,要求你选择单片机的型号,你可以根据你使用的单片机来选择,keil c51 几乎支持所有的51核的单片机,如果你设计的是华邦的W77E58,可以选择winbond->W77E58,但是有一些版本,比如6.02,对它不能仿真,但是可以选择dallas的ds80c320来代替设计W77E58,两者的内核是一样的,只是w77e58带flash rom,而ds80c320没有flash rom,如果你的软件在仿真W77e58的时候有问题,那么就选用ds80c320 .我这里还是以大家用的比较多的Atmel 的89c52
来说明,如图所示,选择89c52之后,右边一栏是对这个单片机的基本的说明,然后点击确定.
4)这时要新建一个源程序文件,建立一个汇编或c文件,如果你已经有源程序文件,可以忽略这一步.点击菜单File->New:
5)输入一个简单的程序,如下:
5)选择菜单File_>SAVE:
6)选择你要保存的路径,在文件名里输入文件名,注意一定要输入扩展名,如果是c程序文件,扩展名为.c,如果是汇编文件,扩展名为.a51,如果是ini文件,扩展名为.ini,其他文件类型,比如注解说明文件,可以保存为.txt的扩展名.那么我们这里是要存储一个c源程序文件,所以输入.c扩展名,保存为test.c 的名字,(也可以保存为其他名字,比如learn.c等),点击保存.
7)点击Target 1前面的+号,展开里面的内容source Group1:
8)用右键点击Sourece Group 1(注意用鼠标的右键,而不是左键),将弹出一个菜单,选择Add
Files to Guoup"Source Group 1".
9)选择刚才的文件test.c,
文件类型选择C Source file(*.c).因为我们的是c程序文件,所以选择该类型,如果是汇编文件,就选择asm source file.如果是目标文件,选择Object file,如果是库文件,选择Library file.最后点击Add. 点击add之后,窗口不会消失,(如果要添加多个文件,可以不断添加),添加完毕此时再点击Close关闭该窗口.
10)这时在source group 1 里就有test.c文件,如图:
11)用鼠标右键(注意用右键)点击左边的Target 1,会出现一个菜单,选择Options for Target "Target 1",会出现一个选项,如下图,
选中“Create Hex File",红色箭头所示!
12)在test.c上点击鼠标右键,在出现的下拉菜单中选择“build target”,看状态栏,若是:"test" - 0 Error(s), 0 Warning(s).”,恭喜你成功了,看看你的文件夹吧,是否多了个test.hex。

还不赶快烧入芯片试试!。

相关文档
最新文档