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

Keil教程(1)

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

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

单片机开发中除必要的硬件外同样离不开软件我们写的汇编语言源程序要变为 CPU 可以执行的机器码有两种方法一种是手工汇编另一种是机器汇编目前已极少使用手工 汇编的方法了机器汇编是通过汇编软件将源程序变为机器码用于 MCS-51 单片机的汇编 软件有早期的 A51随着单片机开发技术的不断发展从普遍使用汇编语言到逐渐使用高级 语言开发单片机的开发软件也在不断发展Keil 软件是目前最流行开发 MCS-51 系列单片 机的软件这从近年来各仿真机厂商纷纷宣布全面支持 Keil 即可看出Keil 提供了包括 C 编译器宏汇编连接器库管理和一个功能强大的仿真调试器等在内的完整开发方案通 过一个集成开发环常uVision将这些部份组合在一起运行 Keil 软件需要 Pentium 或以 系 CPU16MB 或更多 RAM20M 以上空闲的硬盘空间WIN98NTWIN2000WINXP 等操作系统掌握这一软件的使用对于使用 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 个标签分别是FilesRegs和 Books这三个标签页分别显示当前项目的文件结构CPU 的寄存器及部份特殊 功能寄存器的值调试时才出现和所选 CPU 的附加得文件如果是第一次启动 Keil 那么这三个标签页全是空的

1源文件的建立

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

MOV      A#0FEH MAIN:    MOV    P1A

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建立工程文件

在项目开发中并不是仅有一个源程序就行了还要为这个项目选择 CPUKeil 支持数 百种 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 GroupSource 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  则是可以使用全部 外部的扩展 RAMCode 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)

文章评论

ձһhƬձƵ ձƵɫwww ձƵ:ɫ