1. <em id="3qmea"><ol id="3qmea"></ol></em>
    2. <em id="3qmea"></em>
      中国领先的单片机及嵌入式资讯¡¢教程¡¢开发工具提供者!
      当前位置£º单片机教程网 >> 基础教程 >> 浏览文章

      Keil教程(1)

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

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

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

      我们将通过一些实例来学习 Keil 软件的使用£¬在这一部份我们将学习如?#38382;?#20837;源程序£¬ 建立工程¡¢对工程进行详细的设置£¬以及如何将源程序变为目标代码¡£图 1 所示电路图使用

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

      一¡¢Keil 工程的建立

      首先启动 Keil  软件的集成开发环?#24120;?#36825;里假设读者已正确安装了该软件£¬可?#28304;?#26700;面 上直接双击 uVision 的图标以启动该软件¡£

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

      1¡¢源文件的建立

      ?
      使用菜单¡°File->New ¡±或者点击工具栏的新建文件按 钮£¬即可在项目窗口的?#20063;?#25171;开一个新的文本编缉窗口£¬ 在?#20040;?#21475;中输入以下汇编语言源程序£¬例 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¡£

      需要?#24471;?#30340;是£¬源文件就是一般的文本文件£¬不一定使用 Keil 软件编写£¬可以使用?#25105;?文本编缉器编写£¬而且£¬Keil 的编缉器对汉字的支持不好£¬建议使用 UltraEdit  之类的编缉 软件进行源程序的输入¡£

      2¡¢建立工程文件

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

      ?
      点击¡°Project->New  Project¡­ ¡±菜单£¬出现一个对话框£¬要求给将要建立的工程起一个 名字£¬你可以在编缉框中输入一个名字

      £¨设为 exam1£©£¬不需要扩展名¡£点击¡°保 存¡±按钮£¬出现第二个对话框£¬如图 2

      所示£¬这个对话框要求选择目标 CPU£¨即 你所用芯片的型号£©£¬Keil  支持的 CPU 很多£¬我们选择 Atmel 公司的 89C51 芯 片¡£点击 ATMEL 前面的¡°+¡±号£¬展开

      该层£¬点击其中的 89C51£¬然后再点击

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

      1?#20445;?#21069;面?#23567;?¡±号£¬点击¡°+¡±号展开£¬

      可以看到下一层的¡° Source Group1?#20445;?#36825; 时的工程还是一个空的工程£¬里面什么

      文件也没有£¬需要手动把刚才编写好的


       

      源程序加入£¬点击¡°Source Group1¡±使 其反白显示£¬然后£¬点击鼠标右键£¬出现一个下 拉菜单£¬如图 3 所示¡£选中其中的¡°Add file to Group¡±Source Group1?#20445;?#20986;现一个对话框£¬要求 寻找源文件£¬注意£¬该对话框下面的¡°文件类型¡± 默认为 C source file(*.c)£¬也就是以 C 为扩展名 的文件£¬而我们的文件是以 asm  为扩展名的£¬ 所以在列表框中找不到 exam1.asm£¬要将文件类 型改掉£¬点击对话框中¡°文件类型¡±后的下拉列 表£¬?#19994;?#24182;选中¡°Asm Source File(*.a51,*.asm)£¬ 这样£¬在列表框中就可以?#19994;?exam1.asm  文件 了¡£

      双击 exam1.asm 文件£¬将文件加入项目£¬注


      图 2  选择目标 CPU

      图 3  加入文件

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

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

      二¡¢工程的详细设置


      图 4  重复加入文件的错误

      工程建立好以后£¬还要对工程进行进一步的设置£¬?#26376;?#36275;要求¡£

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

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

      图 5 所示£¬Xtal 后面的数值是晶振频 ?#25163;“ú?#40664;认值是所选目标 CPU 的最高 可用频?#25163;“ú?#23545;于我们所选的   AT89C51 而言是 24M£¬该数值与最终

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

      拟调试时显示程序执行时间¡£正?#39134;?置该数值可使显示时间与?#23548;?#25152;用时间一致£¬一般将其设置成与你的硬件

      图 5  对目标进行设置

      所用晶振频率相同£¬如果没必要了解程序执行的时间£¬也可以不设£¬这里设置为 12¡£

      Memory  Model 用于设置 RAM 使?#20204;?#20917;£¬有三个选择项£¬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£©£¬默认情况下该项未被选中£¬如果要写片做硬件实验£¬就必须选中该项£¬这一点是 初学者?#36164;?#24573;的£¬在此特别提醒注意¡£选中 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 在对源程序进行编译时£¬可 以?#28304;?#30721;多至 9 级优化£¬默认使用

      第 8 级£¬一般不必修?#27169;?#22914;果在编

      译中出现一些问题£¬可以降低优化 级别试一试¡£Emphasis  是选择编 译优先方式£¬第一项是代码量优化

      £¨最终生成的代码量小£©£»第二项 是速度优先£¨最终生成的代码速度快£©£»第三项是缺省¡£默认的是速 度优先£¬可根据需要更改¡£


      图 7 代码生成控制

      设置完成后按确认返回主界面£¬工程文件建立¡¢设置完毕¡£

      三¡¢编译¡¢连接

      ?
      在设置好工程后£¬即可进行编译¡¢连接¡£选择菜单 Project->Build target£¬对当前工程进 行连接£¬如果当前文件已修?#27169;?#36719;件会先对该文件进行编译£¬然后再连接以产生目标代码£» 如果选择 Rebuild  All  target  files 将会

      对当前工程中的所有文件重新进行编


       

      译然后再连接£¬确保最终生产的目标 代码是最新的£¬而 Translate ¡­ .项则仅 对该文件进行编译£¬不进行连接¡£

      以上操作也可以通过工具栏按钮直 接进?#23567;?#22270; 8 是有关编译¡¢设置的工具

      栏按钮£¬从左到右分别是£º编译¡¢编译

      连接¡¢全部重建¡¢停止编译和对工程进 行设置¡£

      编译过程中的信息将出现在输出窗 口中的 Build  页中£¬如果源程序中有语


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

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

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

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

      文章评论

      Çຣ11Ñ¡5appÏÂÔØ

        
        
        1. <em id="3qmea"><ol id="3qmea"></ol></em>
        2. <em id="3qmea"></em>

            
            
            1. <em id="3qmea"><ol id="3qmea"></ol></em>
            2. <em id="3qmea"></em>