Keil工程文件的建立、设置与目标文件的获得

发布者:bdwhsc最新更新时间:2016-12-26 来源: eefocus关键字:Keil  工程文件  目标文件 手机看文章 扫描二维码
随时随地手机看文章

  单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为 CPU 可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工 汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于 MCS-51 单片机的汇编 软件有早期的 A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级 语言开发,单片机的开发软件也在不断发展,Keil 软件是目前最流行开发 MCS-51 系列单片 机的软件,这从近年来各仿真机厂商纷纷宣布全面支持 Keil 即可看出。Keil 提供了包括 C 编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。运行 Keil 软件需要 Pentium 或以 上的 CPU,16MB 或更多 RAM、20M 以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP 等操作系统。掌握这一软件的使用对于使用 51 系列单片机的爱好者来说是十分必要的,如 果你使用 C 语言编程,那么 Keil 几乎就是你的不二之选(目前在国内你只能买到该软件、 而你买的仿真机也很可能只支持该软件),即使不使用 C 语言而仅用汇编语言编程,其方便 易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。 

  我们将通过一些实例来学习 Keil 软件的使用,在这一部份我们将学习如何输入源程序, 建立工程、对工程进行详细的设置,以及如何将源程序变为目标代码。图 1 所示电路图使用

  89C51 单片机作为主芯片,这种单片机性属于 MCS-51 系列,其内部有 4K 的 FLASH ROM,可以反复擦写,非常适于做实验。89C51 的 P1 引脚上接 8 个发光二极管,P3.2~P3.4 引脚上接 4 个按钮开关,我们的第一个任务是让接在 P1 引脚上的发光二极管依次循环点亮。 

 

图1 简单的键盘、显示板


  一、Keil 工程的建立
  首先启动Keil 软件的集成开发环境,这里假设读者已正确安装了该软件,可以从桌面上直接双击uVision 的图标以启动该软件。
  UVison启动后,程序窗口的左边有一个工程管理窗口,该窗口有3 个标签,分别是Files、Regs、和Books,这三个标签页分别显示当前项目的文件结构、CPU 的寄存器及部份特殊功能寄存器的值(调试时才出现)和所选CPU 的附加说明文件,如果是第一次启动Keil,那么这三个标签页全是空的。
1、源文件的建立
  使用菜单“File->New”或者点击工具栏的新建文件按钮,即可在项目窗口的右侧打开一个新的文本编缉窗口,在该窗口中输入以下汇编语言源程序,例1:

MOV A,#0FEHMAIN: MOV P1,A
RL A
LCALL DELAY
AJMP MAINDELAY: MOV R7,#255D1: MOV R6,#255DJNZ R6,$
END
DJNZ      R7,D1RET

保存该文件,注意必须加上扩展名(汇编语言源程序一般用asm 或a51 为扩展名),这里假定将文件保存为exam1.asm。需要说明的是,源文件就是一般的文本文件,不一定使用Keil 软件编写,可以使用任意文本编缉器编写,而且,Keil 的编缉器对汉字的支持不好,建议使用UltraEdit 之类的编缉软件进行源程序的输入。

  2、建立工程文件

  在项目开发中,并不是仅有一个源程序就行了,还要为这个项目选择 CPU(Keil 支持数 百种 CPU,而这些 CPU 的特性并不完全相同),确定编译、汇编、连接的参数,指定调试 的方式,有一些项目还会有多个文件组成等,为管理和使用方便,Keil 使用工程(Project) 这一概念,将这些参数设置和所需的所有文件都加在一个工程中,只能对工程而不能对单一的源程序进行编译(汇编)和连接等操作,下面我们就一步一步地来建立工程。 

  点击“Project->New  Project… ”菜单,出现一个对话框,要求给将要建立的工程起一个名字,你可以在编缉框中输入一个名字(设为 exam1),不需要扩展名。点击“保存”按钮,出现第二个对话框,如图2所示,这个对话框要求选择目标 CPU(即你所用芯片的型号),Keil  支持的 CPU 很多,我们选择 Atmel 公司的 89C51 芯片。点击 ATMEL 前面的“+”号,展开该层,点击其中的 89C51,然后再点击“确定”按钮,回到主界面,此时,在工程窗口的文件页中,出现了“Target1”,前面有“+”号,点击“+”号展开,可以看到下一层的“ Source Group1”,这时的工程还是一个空的工程,里面什么文件也没有,需要手动把刚才编写好的源程序加入,点击“Source Group1”使其反白显示,然后,点击鼠标右键,出现一个下拉菜单,如图 3 所示。选中其中的“Add file to Group”Source Group1”,出现一个对话框,要求 寻找源文件,注意,该对话框下面的“文件类型” 默认为 C source file(*.c),也就是以 C 为扩展名 的文件,而我们的文件是以 asm  为扩展名的, 所以在列表框中找不到 exam1.asm,要将文件类 型改掉,点击对话框中“文件类型”后的下拉列 表,找到并选中“Asm Source File(*.a51,*.asm), 这样,在列表框中就可以找到 exam1.asm  文件了。

 

双击 exam1.asm 文件,将文件加入项目,注意,在文件加入项目后,该对话框并不消失,等待继续加入其它文件,但初学时常会误认为操作没有成功而再次双击同一文件,这时会出现如图4 所示的对话框,提示你所选文件已在列表中,此时应点击“确定”,返回前一对话框,然后点击“Close”即可返回主界面,返回后,点击“SourceGroup 1”前的加号,会发现exam1.asm 文件已在其中。双击文件名,即打开该源程序。

图2 选择目标CPU

图3 加入文件

 

图4 重复加入文件的错误



二、工程的详细设置
  工程建立好以后,还要对工程进行进一步的设置,以满足要求。

 

 

图5 对目标进行设置

  首先点击左边Project 窗口的Target 1,然后使用菜单“Project->Option for target ‘target1’”即出现对工程设置的对话框,这个对话框可谓非常复杂,共有8 个页面,要全部搞清可不容易,好在绝大部份设置项取默认值就行了。设置对话框中的Target 页面,如图5 所示,Xtal 后面的数值是晶振频率值,默认值是所选目标CPU 的最高可用频率值, 对于我们所选的AT89C51 而言是24M,该数值与最终产生的目标代码无关,仅用于软件模拟调试时显示程序执行时间。正确设置该数值可使显示时间与实际所用时间一致,一般将其设置成与你的硬件所用晶振频率相同,如果没必要了解程序执行的时间,也可以不设,这里设置为12。

  Memory Model 用于设置RAM 使用情况,有三个选择项,Small 是所有变量都在单片机的内部RAM 中;Compact 是可以使用一页外部扩展RAM,而Larget 则是可以使用全部外部的扩展RAM。Code Model 用于设置ROM 空间的使用,同样也有三个选择项,即Small模式,只用低于2K 的程序空间;Compact 模式,单个函数的代码量不能超过2K,整个程序可以使用64K 程序空间;Larget 模式,可用全部64K 空间。Use on-chip ROM 选择项,确认是否仅使用片内ROM(注意:选中该项并不会影响最终生成的目标代码量);Operating 项是操作系统选择,Keil 提供了两种操作系统:Rtx tiny 和Rtx full,关于操作系统是另外一个很大的话题了,通常我们不使用任何操作系统,即使用该项的默认值:None(不使用任何操作系统);Off Chip Code memory 用以确定系统扩展ROM 的地址范围,Off Chip xData memory 组用于确定系统扩展RAM 的地址范围,这些选择项必须根据所用硬件来决定,由于该例是单片应用,未进行任何扩展,所以均不重新选择,按默认值设置。
  设置对话框中的OutPut 页面,如图6 所示,这里面也有多个选择项,其中Creat Hex file用于生成可执行代码文件(可以用编程器写入单片机芯片的HEX 格式文件,文件的扩展名为.HEX),默认情况下该项未被选中,如果要写片做硬件实验,就必须选中该项,这一点是初学者易疏忽的,在此特别提醒注意。

 

 

 

图6 对输出进行控制

 

  选中Debug information 将会产生调试信息,这些信息用于调试,如果需要对程序进行调试,应当选中该项。Browse information 是产生浏览信息,该信息可以用菜单view->Browse 来查看,这里取默认值。

  按钮“ Select Folder for objects”是用来选择最终的目标文件所在的文件夹,默认是与工程文件在同一个文件夹中。Name of Executable 用于指定最终生成的目标文件的名字,默认与工程的名字相同,这两项一般不需要更改。工程设置对话框中的其它各页面与C51 编译选项、A51 的汇编选项、BL51 连接器的连接选项等用法有关,这里均取默认值,不作任何修改。以下仅对一些有关页面中常用的选项作一个简单介绍。

 

  Listing 标签页用于调整生成的列表文件选项。在汇编或编译完成后将产生(*.lst)的列表文件,在连接完成后也将产生(*.m51)的列表文件,该页用于对列表文件的内容和形式进行细致的调节,其中比较常用的选项是“C Compile Listing”下的“Assamble Code”项,选中该项可以在列表文件中生成C 语言源程序所对应的汇编代码。

  C51 标签页用于对Keil 的C51 编译器的编译过程进行控制,其中比较常用的是“Code Optimization”组,如图7 所示,该组中Level 是优化等级,C51 在对源程序进行编译时,可以对代码多至9 级优化,默认使用第8 级,一般不必修改,如果在编译中出现一些问题,可以降低优化级别试一试。Emphasis 是选择编译优先方式,第一项是代码量优化(最终生成的代码量小);第二项是速度优先(最终生成的代码速度快);第三项是缺省。默认的是速度优先,可根据需要更改。设置完成后按确认返回主界面,工程文件建立、设置完毕。

 

 

图7 代码生成控制

 

  三、编译、连接
  在设置好工程后,即可进行编译、连接。选择菜单Project->Build target,对当前工程进行连接,如果当前文件已修改,软件会先对该文件进行编译,然后再连接以产生目标代码;如果选择Rebuild All target files 将会对当前工程中的所有文件重新进行编译然后再连接,确保最终生产的目标代码是最新的,而Translate … .项则仅对该文件进行编译,不进行连接。以上操作也可以通过工具栏按钮直接进行。图8 是有关编译、设置的工具栏按钮,从左到右分别是:编译、编译连接、全部重建、停止编译和对工程进行设置。


编译过程中的信息将出现在输出窗口中的Build 页中,如果源程序中有语法错误,会有错误报告出现,双击该行,可以定位到出错的位置,对源程序反复修改之后,最终会得到如图9 所示的结果,提示获得了名为exam1.hex 的文件,该文件即可被编程器读入并写到芯片中,同时还产生了一些其它相关的文件,可被用于Keil 的仿真与调试,这时可以进入下一步调试的工作。

图9 正确编译、连接之后的结果


关键字:Keil  工程文件  目标文件 引用地址:Keil工程文件的建立、设置与目标文件的获得

上一篇:单片机独立按键与矩阵按键
下一篇:Keil 的调试命令、在线汇编与断点设置

推荐阅读最新更新时间:2024-03-16 15:27

Keil进入仿真,窗口不显示程序运行箭头
Keil进入仿真后,程序窗口中不显示程序运行箭头。点“Run”,程序也会运行,就是不显示程序运行指示箭头。 可能是“Debug Infomation”选项没有勾选,勾上即可。
[单片机]
<font color='red'>Keil</font>进入仿真,窗口不显示程序运行箭头
51单片机驱动AD7799程序(keil c)
下面提供一个完整版本的ad7799程序,Keil C写的ADI的24位A/DAD7799使用SPI接口程序:(VRS51L3074单片机 是一颗基于8051内核集成了多种模块并可多 范围的在嵌入式设计中应用的芯片,完整的工程文件及hex下载地址:http://www.51hei.com/f/Keil_C_AD7799.rar ) ad7798,ad7799的详细中文资料请看: http://www.51hei.com/chip/4000.html #pragma CODE DEBUG SYMBOLS OBJECTEXTEND //SRC 当与汇编混合编译时需要 #include"VRS51L3074_keil.h" #in
[单片机]
单片机成长之路(51基础篇) - 018 keil51的STARTUP.A51
STARTUP.A51原始文件: 1 $NOMOD51;Ax51宏汇编器控制命令,禁止预定义的8051。使编译器不使能预定义的;8051符号,避免产生重复定义的错误。 2 ;------------------------------------------------------------------------------ 3 ; This file is part of the C51 Compiler package 4 ; Copyright (c) 1988-2005 Keil Elektronik GmbH and Keil Software, Inc. 5 ; Version 8.01 6 ;
[单片机]
STM32CubeMx(Keil5)开发之路——3发送USART数据和printf重定向
运行环境 Windows10 STM32CubeMX___Version 5.0.0 Keil5(MDK5)___Version 5.15 简介 本例程主要讲解如何通过串口发送数据和重定向printf STM32CubeMx基本配置 基础配置过程请参考 STM32CubeMx(Keil5)开发之路—1配置第一个项目 STM32CubeMx USART1配置 1——点击USART1进行设置 2——模式选择Asynchronous异步传输 3——可以看到右边自动出现了Tx和Rx 4——可以自行设置波特率,停止位,校验位等参数 代码修改 1——选择main.c文件 2——在USER CODE中添加如下代码,重定向print
[单片机]
STM32CubeMx(<font color='red'>Keil</font>5)开发之路——3发送USART数据和printf重定向
keil MDK5搭建STM32开发环境
1. 安装keil 到keil的官方网站 http://www.keil.com/download/product/ 下载MDK-ARM并安装,注意可以更改安装路径,但是不能安在需要管理员权限的文件夹,例如不能在Program Files,否则会出现一些问题。 2. 注册 未注测有代码容量限制,需要破解。网上找 KEIL_Lic 。 3. 安装器件包 打开Pack Installer 左边选择STMicroelectronics,右边选择需要的芯片系列,我的是STM32F4。 install:需要安装 update:需要升级 up to date:已安装到最新版 安装的时间比较长,需要等等。 4. 建立新工程
[单片机]
Keil 字节对齐
一.什么是字节对齐,为什么要对齐 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取。比如有些架构的CPU在访问 一个没有进行对齐的变量的时候会发生错误,那么在这种架构下编程必须保证字节对齐.其他平台可能没有这种情况,但是最常见的是如果不按照适合其平台要求对数据存放进行对齐,会在存取效率上
[单片机]
搞定Keil的cant execute C:\Keil\C51\BIN\A51.EXE
症状,在KEIL中建立了工程之后,编译就出现这样的提示can't execute 'C:\Keil\C51\BIN\A51.EXE' 在百度上找到了以下的解答 出错原因;被打开的KEIL程序的编译器安装在C盘,即c:\keil的路径下。而使用者的KEIL装在不同路径。 针对这样的原因,就有两种解决方法: 1、自己重建工程,把要打开的程序的文件拷贝过去,编译即可以通过,但这样做比较费事。 2、打开出错的程序,选择菜单:Project-Compoonents,Environment and Books 选择Folders/Extensions,并把 Use settings from TOOLS
[单片机]
Keil C51中直接使用二进制数的解决方法
在Keil C51中数不能直接以 二进制 形式赋值,虽然在8051的汇编中是可以的。二进制数虽然书写长,易出错,但是由于是一位位写的,所以程序设计者能够很明确的看到每一位的状态,看得比较直观。于是很多人怀念了8051的汇编,很想在C51中使用二进制。没猜错的话搜到本篇日志的人很可能就是来找这种解决办法的,下面两种办法都是不错的选择。   方法一:   建立一个头文件,将所有的二进制数宏定义列举出来,用的时候直接使用宏定义,头文件定义:binary(右键 “目标另存为” 下载)。   方法二:   做一个带参数宏定义,将输入的类二进制数变换为对应的16进制数,整个定义和使用实例请见下文,可以直接使用,如果想研究原
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved