首页 理论教育 Keil软件实用教程

Keil软件实用教程

时间:2023-11-16 理论教育 版权反馈
【摘要】:Keil软件的获取与安装Keil软件是德国Keil公司开发的51系列单片机编程软件,在该软件中,用户可用汇编语言或C语言编写程序,然后对程序进行编译、仿真和调试。在Keil软件项目管理器的“源代码组1”文件夹中可以看到新加载的“test1.asm”文件。

Keil软件实用教程

单片机软件的开发过程是先编写程序,再进行编译、仿真和调试程序,然后用编程器将程序写入单片机。这几个过程可以分别用几个软件来完成,也可以在一个软件中完成。现在很多单片机开发人员都采用Keil软件来编写、编译、仿真和调试程序。

1.编写程序

在编写程序前,先要安装Keil软件,然后在该软件中建立项目和源程序文件,再在源程序文件中编写程序。

(1)Keil软件的获取与安装

Keil软件是德国Keil公司开发的51系列单片机编程软件,在该软件中,用户可用汇编语言或C语言编写程序,然后对程序进行编译、仿真和调试。

如果读者需要该软件,可到Keil公司网站http://www.Keil.com下载Eval(评估)版本。下载该软件后获得的是一个压缩包,解压后运行SETUP文件夹中的Setup.exe文件,即开始安装软件。小提示

本软件评估版对编写的程序要求不能大于2KB,其他与商业版相同,对于初学者来说,评估版本基本够用。

(2)新建项目和源程序文件

Keil C51软件安装完成后,双击桌面上的“Keil μVision3”图标,或单击桌面左下角的“开始”按钮,在弹出的菜单中执行“程序→Keil μVision3”命令,就可以启动KeilμVision3,进入“μVision3”软件窗口。

1)新建项目:在进行单片机程序开发时,为了便于管理,需要先在“Keil μvision3”中建立一个项目,然后在该项目中编写、仿真和调试程序。新建项目的操作过程如下:

①执行菜单命令“工程→新建”,如图1-7所示,马上弹出“产生新工程”对话框。在“保存在”中选择Keil常用的文件夹,如图1-8所示,作者一般在e盘新建名为“keil”的文件夹,项目保存在此文件夹中。

978-7-111-43252-4-Chapter01-13.jpg

图1-7 执行新建项目命令

978-7-111-43252-4-Chapter01-14.jpg

图1-8 “产生新工程”对话框

②在“产生新工程”对话框中选择文件保存的位置,再输入项目文件名“test1”,文件的默认扩展名(类型)为“.uv2”,然后单击“保存”按钮,马上弹出图1-9所示的对话框,要求选择为哪种型号的单片机编写程序。

978-7-111-43252-4-Chapter01-15.jpg

图1-9 选择单片机型号对话框

③在图1-9所示对话框左侧的选择区内,选择单片机型号为ATMEL公司的AT89S51,然后单击“确定”按钮,会弹出图1-10所示的对话框,该对话框询问是否要把标准8051的启动代码添加到项目中。

978-7-111-43252-4-Chapter01-16.jpg

图1-10 询问是否将标准8051的启动代码添加到项目中

Keil软件既支持C语言编程也支持汇编语言编程,如果欲用汇编语言编写程序,则应当选择“否”,如果想用C语言编写程序,一般也选择“否”,但是如果用到了某些增强功能需要初始化配置时,则可以选择“是”。这里选择“否”(即不添加启动代码),新建项目结束,在图1-11所示μVision3软件窗口左边的项目管理器中新增了一个“目标1”文件夹,该文件夹中还有一个“源代码组1”文件夹。

978-7-111-43252-4-Chapter01-17.jpg

图1-11 新建项目完毕,在μVision3软件窗口中新增“目标1”文件夹

2)新建源程序文件:要编写程序,还需要新建一个源程序文件,在该文件中编写程序。新建源程序文件的操作过程如下:

①新建源程序文件。单击工具栏中的978-7-111-43252-4-Chapter01-18.jpg工具图标,也可执行菜单命令“文件→新建”,即新建了一个默认名为“Text 1”的空白文件,同时该文件在软件窗口中打开。

②保存源程序文件。单击工具栏上的978-7-111-43252-4-Chapter01-19.jpg工具图标,也可执行菜单命令“文件→另存为”,弹出图1-12所示“另存为”对话框。在对话框中打开之前建立的项目文件所在的文件夹,再将文件命名为“test1.asm”(扩展名“.asm”表示为汇编程序,不能省略),单击“保存”按钮即将该文件保存下来。

③建立源程序文件与项目关联。新建的源程序文件与新建的项目没有什么关联,需要将它加入到项目中。打开项目管理器的“源代码组1”文件夹,在该文件夹上右击,弹出图1-13所示的快捷菜单,选择其中的“添加文件到组‘源代码组1’”项,会出现图1-14所示的加载文件对话框。

在该对话框中选文件类型为“asm源文件”,找到新建的“test1.asm”文件,再单击“Add”按钮,test1.asm文件即被加入到项目中,此时对话框并不会消失,可以继续加载其他文件,单击“Close”按钮关闭对话框。在Keil软件项目管理器的“源代码组1”文件夹中可以看到新加载的“test1.asm”文件。

(3)编写程序

在Keil软件的源程序文件中用汇编语言编写程序(也可以用C语言编写),源程序文件中的汇编语言程序如图1-15所示,有关程序的编写方法在后面的章节将专门介绍。

2.编译或汇编程序

用汇编语言写好程序后,程序还不能直接写入单片机,因为单片机只接受二进制数,所

978-7-111-43252-4-Chapter01-20.jpg

图1-12 “另存为”对话框

978-7-111-43252-4-Chapter01-21.jpg

图1-13 在快捷菜单中选择加载文件命令

978-7-111-43252-4-Chapter01-22.jpg

图1-14 在对话框中选择要加载的文件

978-7-111-43252-4-Chapter01-23.jpg

图1-15 在源程序文件的文本框内编写程序

以要将汇编语言程序转换成二进制或十六进制代码(又称机器代码)。将汇编语言程序或其他程序(如C语言程序)转换成二进制或十六进制代码的过程称为汇编或编译。

汇编要用到汇编器,汇编器可以将汇编语言程序转换成二进制或十六进制代码;编译要用到编译器,编译器可以将高级语言程序(如C语言程序)转换成二进制或十六进制代码。不同类型的单片机需要使用不同的汇编器或编译器,MCS-51系列单片机对汇编语言程序汇编时采用A51汇编器,而对C语言程序编译时采用C51编译器。(www.xing528.com)

Keil软件本身带有汇编器或编译器,在对程序进行汇编或编译时,会自动地调用相应的汇编器或编译器。下面以汇编test1.asm程序为例来说明汇编或编译的过程。

(1)汇编或编译前的设置

在汇编或编译程序前需要对项目进行一些设置。设置时,执行菜单命令“工程→为目标‘目标1’设置选项”,弹出图1-16所示的对话框。该对话框中有11个选项卡,每个选项卡中都有一些设置内容,其中“项目”和“输出”选项卡较为常用,默认打开“项目”选项卡,将时钟(MHz)内容改为12。

978-7-111-43252-4-Chapter01-24.jpg

图1-16 “项目”选项卡中的内容

单击“输出”选项卡打开它,该选项卡的内容如图1-17所示。这里只选“产生HEX文件”项,选择该项后,在汇编或编译时会生成扩展名为“.hex”的十六进制文件。

(2)进行汇编或编译

目标选项卡设置完成后,单击“确定”按钮,返回到Keil软件界面,然后单击978-7-111-43252-4-Chapter01-25.jpg工具图标,软件就开始对test1.asm文件中的程序进行汇编,汇编完成后,在软件窗口下方的输出窗口中可看到有关的汇编信息,如程序大小、是否有错误等。如果出现“0 Error(s),0Warning(s)”,表示程序没有问题(至少在语法上不存在问题);如果存在错误或警告,要认真检查程序,修改后再编译,直到通过为止。

978-7-111-43252-4-Chapter01-26.jpg

图1-17 “输出”选项卡中的内容

在编译完成后,打开项目文件所在的文件夹,会发现生成了一个“test1.hex”文件。该文件是由汇编器将汇编语言程序汇编成的十六进制代码(用记事本程序打开它,可以看见该文件的具体内容),通过编程器可以将test1.hex文件中的内容写入到单片机中。

3.仿真、调试程序

编写的程序能顺利编译成功,只能说明程序语法上没有问题,但不能保证该程序写入单片机后一定能达到预定的效果。为了让程序写入单片机后能达到预定的效果,可以对程序进行仿真和调试。当然,如果认为编写的程序没有问题,也可以不进行仿真、调试,而直接用编程器将程序写入单片机。

仿真有软件仿真和硬件仿真两种。软件仿真是指在软件中(如Keil μVision3)运行编写的程序,通过观察程序运行的情况来分析、判断程序是否正常。硬件仿真是指将实验板、仿真机和PC连接起来,在软件中将程序写入仿真器,让程序在仿真器中运行,同时观察在实验板上是否实现了预定的效果。

在仿真的过程中,如果发现程序出现了问题,就要找出问题的所在,并改正过来,然后再编译仿真,有问题再改正,如此反复,直到程序完全达到要求,这个过程称为仿真、调试程序。因为这两个步骤是交叉进行的,所以一般将它们放在一起说明。

由于仿真、调试程序涉及的知识很广,如果阅读时理解有困难,可稍微浏览一下本部分内容再去学习后面的知识,待掌握后面一些章节的知识后再重学这部分内容。本节主要介绍了Keil软件仿真,硬件仿真及烧写部分可以在实际应用中逐渐接触。

程序是由一条条指令组成的,前面的“MOV P3,#0FFH”就是一条指令。单片机在执行程序指令时,一般会改变数据存储器中的值。软件仿真就是让软件模拟单片机来一条条执行程序指令,再在软件中观察相应寄存器中值的变化,以此来分析判断程序能否达到预定的效果。

在Keil μVision3软件中除了可以编写、编译程序外,还能仿真、调试程序,仿真、调试程序时可按下面的步骤进行。

(1)软件设置

软件仿真是指用软件模拟单片机逐条执行程序指令。为了让软件仿真更接近真实的单片机,要求在仿真前对软件进行一定的设置。软件仿真设置的操作过程如下:

1)如前文所示,设置晶振频率,选中“产生HEX文件”项。

2)单击“调试”选项卡,切换到图1-18所示对话框,选中“使用软件仿真器”项,再单击“确定”按钮,退出设置对话框。

978-7-111-43252-4-Chapter01-27.jpg

图1-18 在“调试”选项卡中选中“使用软件仿真器”项

(2)编译或汇编程序

在软件设置好后,还要将程序文件(.asm格式)编译或汇编成十六进制.hex格式的文件,因为仿真器只认识这种机器语言文件。在窗口中单击978-7-111-43252-4-Chapter01-28.jpg工具图标,系统开始对test1.asm文件进行汇编,汇编完成后,如果在窗口下方的区域显示“0 Error(s),0 Warn-ing(s)”,表明程序汇编时没有出现错误。汇编生成的test1.hex文件会自动地放置在项目文件中,在软件窗口无法看到,在仿真、调试时,软件会自动地执行该文件。

(3)仿真、调试程序

在程序编译或汇编完成后,就可以开始仿真、调试。通常先在软件中启动仿真、调试,然后根据需要进行各种仿真、调试操作。

1)启动仿真、调试。执行菜单命令“调试→启动/停止调试”,软件马上进入图1-19所示的仿真等待状态。从图中可以看出,软件窗口左侧的项目管理器自动由文件管理器切换成寄存器状态显示器,在窗口中间还悬浮着P0端口寄存器状态显示器(如果该显示器没有出现,可以执行菜单命令“外围设备→I/O Ports→Port 0”,将它调出来)。

978-7-111-43252-4-Chapter01-29.jpg

图1-19 软件处于仿真等待状态

2)进行仿真、调试。单击工具栏上的978-7-111-43252-4-Chapter01-30.jpg工具图标,软件开始执行程序进行仿真。

在用软件对程序进行仿真运行时,如果观察到图1-19左侧有关寄存器的状态不正常,或者I/O接口状态不正常,或者视图选项存储器窗口中数据不正常时,可执行菜单命令“调试→启动/停止调试”,让软件停止仿真,更改程序,更改(调试)完成后,再将调试后的程序重新汇编,然后再进行仿真,如此反复,直到程序运行符合要求为止。

如针对某段或某行程序单独验证,可双击该行程序,设置断点,程序运行时,会自动到该断点处停止。

3)一些仿真工具的说明。前文用到了与仿真有关的几个工具,为了更好地进行仿真操作,这里再对其他一些仿真工具进行说明。常用的仿真工具图标功能说明如图1-20所示。小提示

观察程序存储器窗口时需经过下列过程:

调试→视图→存储器窗口→打开任意一个→memory窗口→在address中输入:

c:0x00(ROM存储器CODE区)d:0x00(内部RAM的DATA区)

i:0x00(内部RAM的IDATA区)x:0x00(外部RAM的XDATA区)

其中00表示所在区的开始地址,可换成你想直接查看的地址,如输入0xe0即可查看累加器A的内容。

图1-20 各仿真工具功能说明

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈