[最新]Keil工具介绍
第一部分 实验环境及工具介绍
本次实验使用uVision2集成开发环境文章部分引自磁动力工作室站长明浩编写的《单片机C语言教程》和赵亮、侯国锐编著的《单片机C语言编程与实例》。
第一课 建立您的第一个项目
开始,程序,运行Keil uVision2几秒后,出现如图1,1的屏幕。
图1,1 启动时的屏幕
接着按下面的步骤建立您的第一个项目:
(1)新建工程。点击Project菜单,选择弹出的下拉式菜单中的New Project,如图1,2。接着弹出一个名为“Create New Project”的对话框,如图1,3,先选择一个合适的文件夹准备来存放工程文件,如“C51” 是新建的文件夹。在"文件名"中输入您的第一个程序项目名称,这里我们用"test","保存"后的文件扩展名为uv2,这是KEIL uVision2项目文件扩展名,以后我们可以直接点击此文件以打开先前做的项目。我们建议:今后每新建一个工程都要在适当的磁盘位置新建一个文件夹用来保存工程文件,以方便管理,并养成良好的习惯。
图1,2 New Project菜单
图1,3 文件窗口
(2)选择单片机。紧接着,Keil C51 提示您选择CPU 器件。8051 内核单片机最早是由鼎鼎大名的Intel 公司发明的,后来其他厂商如Philips、Atmel、Winbond 等先后推出其兼容产品,并在8051 的基础上扩展了许多增强功能。在这里我们选择Atmel公司的AT89S51。此时屏幕如图1,4所示。
,4选取芯片 图1
接下来弹出一个如图1-5 所示的对话框。该对话框提示您是否要把标准8051 的启动代码添加到工程中去。Keil C51 既支持C 语言编程也支持汇编语言编程。如果打算用汇编语言写程序,则应当选择“否(N)”;如果打算用C 语言写程序,一般也选择“否(N)”,但是,如果用到了某些增强功能需要初始化配置时,则可以选择“是(Y)”。在这里,我们选择“否(N)”,即不添加启动代码。
图1,5 选择是否要添加启动代码
至此,一个空的Keil C51 工程建立完毕。
(3)首先我们要在项目中创建新的程序文件或加入旧程序文件。点击图1,6中1的新建文件的快捷按钮,在2中出现一个名为“Text n”(其中n 表示序号)的文
档,或通过菜单File,New或快捷键Ctrl+N来实现。
图1,6 新建程序文件
点击图1,6中的3保存新建的程序,也可以用菜单File,Save或快捷键Ctrl+S进行保存。因是新文件所以保存时会弹出如图1,7的文件操作窗口,我们把第一个汇编语言编写的程序命名为test1.asm,保存在项目所在的目录中。注意:扩展名“.asm”不可省略。
图1-7 保存新建的源程序文件 (4)添加源程序文件到工程中。现在,一个空的源程序文件“test1.asm”已经建立,但是这个文件与刚才新建的工程之间并没有什么内在联系。我们需要把它添加到工程中去。单击Keil C51 软件左边项目工作窗口“Target 1”上的“,”,将其展开。然后右击“Source Group 1”文件夹,会弹出如图1-8 所示的选择菜单。单击其中的“Add Files to Group 'Source Group 1'”项,将弹出如图1-9 所示的对话框。
图1,8 把文件加入到项目文件组中
图1,9 选择文件
请在文件类型下拉列表中选择Asm source file源文件,再选择刚刚保存的文件“test1.asm”,按ADD按钮(请不要多次点击“Add”按钮),最后按“Close”按钮,程序文件已加到项目中了。这时可以点击Source Group1文件夹图标左边的
“+” 展开后查看。
(5) 现在开始输入源程序。先最大化“test1.asm”源程序窗口,然后请按实
验一程序清单输入程序代码。 ;----------------入口程序 ------------------- ORG 0000H ;程序执行开始地址
LJMP START ;跳到标号START执行
;--------------- 主 程 序 ------------------- START: MOV P1,#01111111B ; 点亮最下面的LED,即P1_7口低电平
LCALL DELAY50 ;延时50毫秒
MOV P1, #10111111B ; 点亮下面第二个LED,即P1_6口低电平
LCALL DELAY50 ;延时50毫秒
MOV P1, #11011111B ;LED依次点亮 (以下省略)
LCALL DELAY50 ;延时50毫秒
MOV P1,#11101111B
LCALL DELAY50 ;延时50毫秒
MOV P1, #11110111B
LCALL DELAY50 ;延时50毫秒
MOV P1, #11111011B
LCALL DELAY50 ;延时50毫秒
MOV P1, #11111101B
LCALL DELAY50 ;延时50毫秒
MOV P1, #11111110B
LCALL DELAY50 ;延时50毫秒
MOV P1, #11111111B ;完成第一次循环点亮,延时约0.25秒
LCALL DELAY50 ;延时50毫秒
AJMP START ;反复循环 ;-----------延时子程序,12M晶振延时约50毫秒--------------- DELAY50:MOV R4, #5
L3: MOV R2, #20
L1: MOV R3, #248
DJNZ R3 , $
DJNZ R2 , L1
DJNZ R4 , L3
RET
END
(6)单击Keil C51 工具栏的“”图标,弹出名为“Options for Target ‘Target
1’”的对话框。单击“Output”标签页,选中“Create HEX File”项,然后“确定”。参见图1-10。
图1-10 编译环境设置
(7)我们先来看图1,11,图中1、2、3都是编译按钮,不同是1是用于编译单个文件;2是编译当前项目,如果先前编译过一次之后文件没有做动编辑改动,这时再点击是不会再次重新编译的;3是重新编译,每点击一次均会再次编译链接一次,不管程序是否有改动。在3右边的是停止编译按钮,只有点击了前三个中的任一个,停止按钮才会生效。5是菜单中的它们。这个项目只有一个文件,你按123中的一个都可以编译。在4中可以看到编译的错误信息和使用的系统资源情况等,以后我们要查错就靠它了。单击工具栏的按钮“”编译当前源程序。编译结果会显示在输出窗口4内。如果是“0 Error(s), 0 Warning(s).”就表示程序没有问题了(至少是在语法上不存在问题了)。如果存在错误或警告,双击错误,在源程序的错误行前会出现,修改后,再编译,直到通过为止。
图1,11 编译程序
(8)编译后的结果会生成Intel HEX 格式的程序文件“test1.hex”,如图1-12。该文件可以被专门的芯片烧写工具(例如Top2004 编程器)载入并最终烧录到具体的芯片中。芯片安装到自己的电路板上,通电,就可以运行里面的程序了。
图1,12 编译信息窗口
至此,您可以把编译好的文件烧到了芯片上。如何烧写片子,请看第三课。
第二课 在Keil C51下调试程序
Keil C51 的调试功能非常强大,本章我们先做一个初步了解,等以后再慢慢体会。现在仍然以实验一LED 闪烁发光程序为例,来具体了解如何进行仿真操作。
2.1 进入仿真状态
如果程序编译通过,就可以仿真了。在仿真之前,有一项参数最好配置一下,仍然按“”图标进入编译环境设置,如图2-1,找到“target”下的“Xtal (MHz)”项,填入合适的晶振频率,比如12。最后点击“确定”。进入仿真状态很简单,直接点击工具栏红色的“”图标。
图2-1 编译调式环境设置
2.2 认识各个仿真窗口
1. 源程序窗口
Keil C51 调试界面的中间是源程序窗口。黄色箭头“”所指为当前即将执行的代码。以深灰色标记的程序行是可以执行的代码(当然,在调试过程中未必一定要去执行)。以浅灰色标记的程序行不可作为代码来执行,它们是注释、空行、标号或ROM 数据表。以绿色标记的程序行表示曾经执行过的代码。如图2-2。
图2-2 仿真窗口
2. 寄存器窗口
Keil C51 调试界面的左边是寄存器窗口。8051 的工作寄存器(R0,R7)和系统寄存器(a、b、sp、dptr、PC、psw)都列出来了。Value 栏显示的是寄存器的当前数值。如果在调试过程中某个寄存器的值有变化,则会用蓝色的背景标记。单击psw 寄存器左边的“,”,展开后还可以看到其每一位的情况。
3. 汇编窗口
单击工具栏的“”图标,源程序窗口会自动切换成汇编窗口。在汇编窗口里,我们可以看到每条指令的存储地址和编码等信息。再次单击“”,回
到源程序窗口。
4. 存储器窗口
单击工具栏的“”图标,将显示出存储器窗口。51 单片机的存储器分为多个不同的存储空间,如果要观察代码存储器,就在地址栏“Address:”内输入“C:地址”,例如:C:0080H;如果要观察外部数据存储器,就输入“X:地址”;如果要观察内部数据存储器,则可以输入“I:地址”。拖动存储器窗口右边的滚动条还可以观察输入地址附近的存储单元。
存储器窗口有“Memory #1,Memory #4”共4 个观察子窗,您可以用来分别观察代码存储器、内部数据存储器和外部数据存储器。
存储器的内容是可以修改的。用鼠标右击打算要修改的存储单元,选择“Modify Memory at …”项,弹出修改对话框,可以随意修改存储单元的内容。
5. 变量观察和堆栈窗口
单击工具栏的“”图标,将显示变量观察和堆栈窗口(Watch & Call Stack
Window)。在Locals 标签页,会自动显示局部变量的名称和数值。在C 语言程序的函数中,每一对花括号“{}”内定义变量都是局部变量,能够自动显示。
在“Watch”标签页内,先用鼠标点击一次“type F2 to edit”,再按功能键“F2”,输入所要观察的局部或全局变量的名称,回车后就能显示出当前数值。
在“Call Stack”标签页内,可以实时地观察到堆栈的使用情况。
2.3 程序的运行控制
Keil C51 能够实现程序单步和全速运行,具体由工具栏上的按钮来实现:
, 复位按钮“”:单击此图标,能够使程序复位,程序将从地址C:0000H
处执行。
, 全速运行“”:单击此图标,能够使程序全速运行。
, 停止运行“”:该图标原来是灰色(不可操作),在进入全速运行状态
后会变成红色。如果要停下来,则可以按此图标。 , 单步进入“”:按此图标可以实现程序的单步执行。在遇到函数调用时,
会跟踪进入函数体。
, 单步跳过“”:也是单步执行,但是遇到函数时,视作“1 条指令”
来执行,不会跟踪进入。
, 单步跳出“”:在调试程序时,如果希望从某个函数中提前返回,则
可以按此图标。
, 执行到光标“”:用鼠标单击某条可执行的代码(深灰色标记的程序行)。
然后按此图标,则程序开始全速执行,当遇到光标所在的行时,会自动停
下来。如果单击不可执行的程序行(有浅灰色标记),试图让程序执行到
该行,是不允许的,“”图标也会立即变成灰色,不让你操作。
, 设置/清除断点“”:Keil C51 支持断点设置功能。单击需要设置断点
的行,再单击此图标,我们会看到该行被一个红色的小方块标记。当程序
全速运行时遇到断点,便会自动停下来。Keil C51 允许在同一个程序里设
置多个断点。清除某个断点的方法是,将光标停在该行上,再按一次“”
图标。另外一种设置/清除断点的快捷方法是,用鼠标在目标程序行的空白
处双击,您不妨试一试。
, 清除所有断点“”:如果设置了多个断点,想一并清除,则可以按此
图标。
2.4 外围设备访问
Keil C51 的一大特色是在仿真调试时支持对外围设备的访问。
单击菜单“Peripherals”,会弹出外围设备菜单。在Peripherals 菜单里列出了标准51的外围设备(相对于CPU 内核而言):中断、I/O 端口、串行口和定时器等。
现在执行菜单“Peripherals | I/O-Ports | Port 1”,弹出P1 端口的界面。在位0,7 中,用?表示高电平,无?表示低电平。执行菜单“Peripherals | Timer | Timer
0”,弹出定时器T0的界面。参见图2-3。
弹出的外围设备菜单是可以操作的,不妨试试。
图2-3 外围设备中的P1 和T0 对话框
2.5 进入调试模式
单击开启\关闭调试模式按钮,实验一中,我们使用Peripherals菜单,选择I/O-Ports,P1,打开P1调试窗口,再按运行键,这时就可以看到P1中不断循环状态,空为“0”,打钩为“1” 。如图2-4。
是不是不难呀,这样就完成了您的第一个项目。最后我们要停止程序运行回到文件编辑模式中,就要先按停止按钮,再按开启\关闭调试模式按钮。然后我们就可以进行关闭KEIL等相关操作了。到此为止,我们已经初步学习了一些KEIL uVision2的项目文件创建、编译、运行和软件仿真的基本操作方法。其中一些功能的应用,如观察端口值、内部RAM、ROM值等有待大家不断地实践。
图2—4 调试运行程序
本文档为【[最新]Keil工具介绍】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。