(玩电子) 电子技术学习与研究
当前位置£º单片机教程网 >> 基础教程 >> 浏览文章

Keil教程(1)

作者:佚名   来源:本站原创   点击数:x  更新时间£º2007年09月12日   ¡¾字体£º ¡¿

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 引脚É系Ä发光二极管Ò来Î循环点亮¡£

一¡¢Keil 工程的建立

首先启动 Keil  软件的集成开发环¾常¬这里假设读者已正确安装了该软件£¬可Ò源Ó桌面 上直接双击 uVision 的图标以启动该软件¡£

UVison 启动后£¬程序窗口的左边有一个工程管理窗口£¬¸么°口有 3 个标签£¬分别是Files¡¢Regs¡¢和 Books£¬这三个标签页分别显示当前项目的文件结构¡¢CPU 的寄存器及部份特殊 功能寄存器的值£¨调试时才出现£©和所选 CPU 的附加Ë得÷文件£¬如果是第一次启动 Keil£¬ 那么这三个标签页全是空的¡£

1¡¢源文件的建立

?
使用菜单¡°File->New ¡±或者点击工具栏的新建文件按 钮£¬即可在项目窗口的Ó也à打开一个新的文本编缉窗口£¬ 在¸么°口中输入以下汇编语言源程序£¬例 1£º

MOV      A£¬#0FEH MAIN:    MOV    P1£¬A

RL          A LCALL     DELAY AJMP     MAIN

DELAY:   MOV     R7,#255

D1:         MOV      R6,#255

DJNZ                 R6,$                                                                                                                                    1    简单的键盘¡¢显示板



 

END


DJNZ      R7,D1

RET


 

保存该文件£¬注意必须加上扩展名£¨汇编语言源程序一般用 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£¬然后再点击

¡°确定¡±按钮£¬回到主界面£¬此时£¬在 工程窗口的文件页中£¬出现了¡°Target

1¡保¬前面Ó小°+¡±号£¬点击¡°+¡±号展开£¬

可以看到下一层的¡° 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 文件£¬将文件加入项目£¬注


图 2  选择目标 CPU

图 3  加入文件

意£¬在文件加入项目后£¬该对话框并不消

失£¬等待继续加入其它文件£¬但初学时常 会误认为操作没有成功而再次双击同一文 件£¬这时会出现如图 4 所示的对话框£¬提 示你所选文件Ò言Ú列表中£¬此时应点击¡°确 定¡保¬返回前一对话框£¬然后点击¡°Close¡± 即可返回主界面£¬返回后£¬点击¡°Source Group 1¡±前的加号£¬会发现 exam1.asm 文 件Ò言Ú其中¡£双击文件名£¬¼创ò开该源程 序¡£

二¡¢工程的详细设置


图 4  重复加入文件的错误

工程建立好以后£¬还要对工程进行进一步的设置£¬Ò月ú足要求¡£

首先点击左边 Project 窗口的 Target 1£¬然后使用菜单¡°Project->Option for target ¡®target1¡¯¡± 即出现对工程设置的对话框£¬这个对话框可谓非常复杂£¬共有 8 个页面£¬要全部搞清可不容 易£¬好在绝大部份设置项取默认值就行了¡£

?
设置对话框中的 Target 页面£¬如

图 5 所示£¬Xtal 后面的数值是晶振频 Â手µ£¬默认值是所选目标 CPU 的最高 可用频Â手µ£¬对于我们所选的   AT89C51 而言是 24M£¬该数值与最终

产生的目标代码无关£¬仅用于软件模

拟调试时显示程序执行时间¡£正确设 置该数值可使显示时间与实际所用时间一致£¬一般将其设置成与你的硬件

图 5  对目标进行设置

所用晶振频率相同£¬如果没必要了解程序执行的时间£¬也可以不设£¬这里设置为 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£©£¬默认情况下该项未被选中£¬如果要写片做硬件实验£¬就必须选中该项£¬这一点是 初学者易疏忽的£¬在此特别提醒注意¡£选中 Debug  information 将会产生调试信息£¬这些信 息用于调试£¬如果需要对程序进行调试£¬应当选中该项¡£Browse  information 是产生浏览信 息£¬该信息可以用菜单 view->Browse 来查看£¬这里取默认值¡£按钮¡° Select Folder for objects ¡±


 

是用来选择最终的目标文件所在的

文件夹£¬默认是与工程文件在同一 个文件夹中¡£Name of Executable 用 于指定最终生成的目标文件的名 字£¬默认与工程的名字相同£¬这两 项一般不需要更改¡£

工程设置对话框中的其它各页 面与 C51 编译选项¡¢A51 的汇编选 项¡¢BL51 连接器的连接选项等用法 有关£¬这里均取默认值£¬不作任何


图 6  对输出进行控制

修改¡£以下仅对一些有关页面中常用的选项作一个简单介绍¡£

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  页中£¬如果源程序中有语


图 8  有关编译¡¢连接¡¢项目设置的工具条

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

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

¡¾发表评论¡¿¡¾告诉好友¡¿¡¾收藏此文¡¿¡¾关闭窗口¡¿
上一篇:Keil教程(2)

文章评论

³ÉÈËÊÓƵ