本节通过一个具体例子说明Keil软件的使用方法。
1.建立项目
选择“Project”→“New Project”命令,弹出“Create New Project”对话框,如图6.2所示。选择新建项目文件的位置,输入新建项目文件的名称,单击“保存”按钮,弹出如图6.3所示的“Select Device for Target‘Target 1’”对话框,用户可以根据所选择的单片机型号选择CPU。Keil μVision IDE支持大多数51核心的单片机,并以列表的形式给出。选择芯片后,在右边的“Description”(描述)列表框中将同时显示所选芯片的相关信息,以供用户参考。本例选择Atmel公司的AT89C51,单击“确定”按钮,完成项目的建立。
图6.2 新建项目
图6.3 选择单片机类型
2.创建文件
创建文件的具体步骤如下。
1)选择“New”命令
在项目主界面选择“File”→“New”命令,如图6.4所示。
图6.4 选择“New”命令
2)打开编辑窗口
打开如图6.5所示的Text3编辑窗口,此时可在Text3中编写汇编语言或C语言程序。
图6.5 在Text3中编写源程序
3)保存文件
选择“File”→“Save As”命令,弹出如图6.6所示的“Save As”对话框,输入文件名并保存在设定的目录中。假设目录设置为E:\,输入的文件名为SHU.ASM。须注意的是,文件名可由用户自行确定,且不区分大小写,但扩展名必须是.ASM。设置完成后单击“保存”按钮即可。
图6.6 选择目录及输入文件名
3.向项目中添加源程序
向项目中添加源程序的具体步骤如下。
(1)在工作空间中单击“Target 1”前面的“+”号,将其展开,选择“Source Group1”并右击,在弹出的快捷菜单中选择“Add Files to Group‘Source Group 1’”命令,如图6.7所示。
(2)弹出“Add Files to Group‘Source Group 1’”对话框,如图6.8所示。在“文件类型”下拉列表中选择文件类型。例如,要在项目中添加前面已经建立好的文件SHU.ASM,先在“文件类型”下拉列表中选择“Asm Sourse file(*.a*;*.src)”选项,然后输入文件名,再单击“Add”按钮,即可将文件加载到项目中,如图6.9所示。
图6.7 选择添加程序命令
图6.8 “Add Files to Group‘Source Group 1’”对话框
图6.9 源程序文件已加入项目
4.文件的编译、连接
将源程序文件添加到项目文件中,程序文件已经建立并且存盘后,就可以进行编译、连接,形成目标文件。
选择“Project”→“Built All Target”命令(或“Built Target”命令),即可进行编译。编译时,如果程序有错,则编译不成功,并在信息窗口给出相应的出错提示信息,以便用户进行修改。修改后要再次进行编译、连接,这个过程可能重复多次。如果程序没有错误,则编译、连接成功,并且在输出窗口给出提示信息:"DPJ"– 0 Error(s),0 Warning(s),如图6.10所示。
5.仿真器的选择
Keil μVision内设有调试仿真器。在工作空间中选择“Target 1”并右击,在弹出的快捷菜单中选择“Options for Target‘Target 1’”命令,如图6.11所示,弹出“Options for Target ‘Target 1’”对话框,如图6.12所示。系统默认是“Use Simulator”(软件仿真),如果需要进行硬件仿真,则选中“Use”单选按钮,在其后下拉列表中选择“Keil Monitor-51 Driver”选项。
图6.10 程序的编译、连接
图6.11 选择“Options for Target‘Target 1’”命令
图6.12 “Options for Target‘Target 1’”对话框
6.程序的调试
程序调试的一般步骤如下。
1)进入调试仿真状态(www.xing528.com)
选择“Debug”→“Start/Stop Debug Session”命令,进入调试界面。其中,Peripherals为外部器件菜单,在工具栏内有开始/停止调试图标,左侧会出现8051内部主要的寄存器,如r0~r7、a、dptr、PC等,右侧为程序调试窗口。
2)打开外部控制的特殊功能寄存器观察窗口
选择Peripherals菜单的各种命令,可以打开外部控制的特殊功能寄存器(special functional register,SFR)观察窗口,以便调试时观察内部寄存器值的变化。其中,Interrupt为中断SFR观察窗口,I/O-Ports为I/O口SFR观察窗口,Serial为串行口SFR观察窗口,Timer为定时器SFR观察窗口。
3)调试程序
调试开始前,从SFR观察窗口中可看到各寄存器的初始值。下面以Parallel Ports1为FFH,光标指向程序开始处为例,介绍程序的调试。
选择“Debug”→“Step into”命令,单步执行程序,执行时注意观察寄存器和Parallel Ports1数值的变化。
本例中不用观察存储器单元的变化,如果开发的程序需要观察存储器单元的状态,还需要调出存储器窗口。
Keil μVision IDE把51内核的存储器资源分成以下4个区域。
(1)程序存储器(ROM)区code:IDE表示为“C:××××”。
(2)内部可直接寻址RAM区data:IDE表示为“D:××”。
(3)内部间接寻址RAM区idata:IDE表示为“I:××”。
(4)外部RAM区xdata:IDE表示为“X:××××”。
这4个区域都可以在Keil μVision IDE的存储器窗口中观察和修改。该窗口中可以显示4个不同的存储器区域,单击窗口下面的编号,可以切换显示各存储器区域。
在存储器窗口的地址栏内输入要显示的存储器区域的起始地址,即可观察其内容。例如,在地址栏输入“C:0000H”,按<Enter>键后,在存储器窗口可观察到程序存储器ROM区以地址为0000H开始显示的单元。C:0×0000是每一行的行首地址,行首地址可随着存储单元个数的变化而变化。存储单元内部就是存储的内容,默认的显示形式为十六进制。
注意:0x表示十六进制。
同理,在地址栏内输入“D:00H”,按<Enter>键后,在存储器窗口看到的是内部可直接寻址RAM区以地址为00H开始显示的单元。在地址栏内输入“X:1000H”,按<Enter>键后,在存储器窗口看到的是外部RAM区以地址为1000H开始显示的单元。
4)各运行命令的区别
在调试界面的Debug菜单下,系统提供了几种不同的运行命令,如表6.5所示。各运行命令的区别如下。
(1)Go:全速运行程序。一般在硬件仿真中常用“Go”命令,软件仿真中一般不用此命令。
(2)Step Into:单步运行程序,如果遇到子程序可进入子程序调试。在调试过程中常用此命令,以便于查找并改正错误。
(3)Step Over:单步运行程序,如果遇到调用子程序指令,不会进入子程序内部单步执行,而是将整个子程序一次执行完,即将整个子程序作为一步,只在主程序中单步执行每一条指令。
(4)Stop running:停止运行程序。当全速运行程序时,如果想停止程序运行则使用此命令。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。