3.1.3  Keil μVision4工程文件的仿真及其他设置

3.1.3 Keil μVision4工程文件的仿真及其他设置

文件编译无误后,单击工具栏中的978-7-111-46831-8-Chapter03-19.jpg图标,进入脱机仿真状态,如图3-17所示。此时会出现提示操作,选择确定。单击功能工具栏978-7-111-46831-8-Chapter03-20.jpg中的图标可分别实现复位、自动运行、停止、单步执行等操作。

在主菜单“Peripherals”的下拉菜单中可以看到单片机硬件资源和软件资源设置情况及当前状态,如图3-18所示。

978-7-111-46831-8-Chapter03-21.jpg

图3-17 脱机仿真

978-7-111-46831-8-Chapter03-22.jpg

图3-18 硬件资源和软件资源设置菜单

针对本例,调出端口P1.0,然后单击单步运行,可以观察到P1.0端口的状态随着程序执行而发生改变。P1.0端口的置1如图3-19所示,P1.0端口的清零如图3-20所示。

978-7-111-46831-8-Chapter03-23.jpg

图3-19 P1.0端口置1

再次单击978-7-111-46831-8-Chapter03-24.jpg图标,即可退出仿真界面。当使用其他烧写器进行单片机程序烧写时,会用到“.hex”文件,这时只要用鼠标右键单击target1文件夹图标,在其下拉菜单中选择978-7-111-46831-8-Chapter03-25.jpg,如图3-21所示,进入工程选项设置界面,如图3-22所示。在“Output”标题栏下选中“Create HEX”选项,然后重新编译即可,程序编译后产生HEX代码,供下载器软件使用。

Keil给出了许多调试快捷图标和调试命令,为了更好地使用这些命令,下面将介绍几种常用的调试命令及方法。

1.978-7-111-46831-8-Chapter03-26.jpg断点

巧妙地设置一些断点,能够更好地帮助用户分析程序的运行机制、程序中变量的变化状况,提高工作效率。μVision4可以用几种不同的方法定义断点,即使在程序代码编译前,也可以在编辑源程序的时候设置断点。设断点前要从“View”菜单中选中“File Toolbar”选项,让主窗口的顶部出现File Toolbar工具栏。断点可以用以下的方法定义和修改:

1)用“File Toolbar”按钮。在Editor或Disassembly窗口中的代码行单击断点按钮即可在该处设置断点。

2)用快捷菜单的断点命令。在Editor或Disassembly窗口中的代码行单击鼠标右键,在打开的快捷菜单中选择“Insert”→“Remove Breakpoint”命令,同样可以在该行设置断点。

978-7-111-46831-8-Chapter03-27.jpg

图3-20 P1.0端口的清零

978-7-111-46831-8-Chapter03-28.jpg

图3-21 target1下拉菜单

978-7-111-46831-8-Chapter03-29.jpg

图3-22 工程选项设置界面

3)在Output Window—Command输入框中,可以使用Breakset、Breakkill、BreakEnable、Breaklist、Breakpoint命令来设置断点。

当然,设置断点还有一个最简单的方法就是在该行语句前双击即可。如果已经在某行设置了断点,再次在此行设置断点将取消该断点。断点设置成功后,会在该行的行首出现红颜色的断点标志。

2.978-7-111-46831-8-Chapter03-30.jpg复位CPU

用“Debug”菜单或工具栏的“Reset CPU”命令。在不改变程序的情况下,若想使程序重新开始运行,执行此命令即可,执行此命令后程序指针返回到0000H地址单元。另外,一些内部特殊功能寄存器在复位期间也将重新赋值,例如A将变为00H,DPTR为0000H,SP为07H,I/O接口变为0FFH。

3.978-7-111-46831-8-Chapter03-31.jpg单步跟踪(快捷键<F11>)

用“Debug”工具栏的“Step”或快捷命令“StepInto”按钮可以单步跟踪程序,每执行一次此命令,程序将运行一条指令(以指令为基本执行单元)。当前的指令用黄色箭头标出,每执行一步箭头都会移动,已执行过的语句呈现绿色。单步跟踪在C语言环境调试下最小的运行单位是一条C语句,如果一条C语句只对应一条汇编指令,则单步跟踪一次可以运行C语句对应一条汇编指令;如果一条C语句对应多条汇编指令,则一次单步跟踪要运行完对应的所有汇编指令。在汇编语言调试下,可以跟踪到每一个汇编指令的执行。

4.978-7-111-46831-8-Chapter03-32.jpg单步运行(快捷键<F10>)

用“Debug”工具栏的“Step Over”或快捷命令“Step Over”按钮即可实现单步运行程序,此时单步运行命令将把函数和函数调用当做一个实体来看待,因此单步运行是以语句(这一条语句不管是单一命令行还是函数调用)为基本执行单元。

5.978-7-111-46831-8-Chapter03-33.jpg执行返回(快捷键<Ctrl+F11>)

用单步跟踪命令跟踪到子函数或子程序内部时,可以使用“Debug”菜单栏中的“Step Out of Current Function”或快捷命令按钮“Step Out”,实现程序的PC指针返回到调用此子程序或函数的下一条语句。

6.978-7-111-46831-8-Chapter03-34.jpg执行到光标所在命令行(快捷键<Ctrl+F10>)

用工具栏或快捷菜单命令“Run tol Cursor Line”,使程序执行到光标所在行,但不包括此行,其实质是把当前光标所在的行当作临时断点。

7.978-7-111-46831-8-Chapter03-35.jpg全速运行(快捷键<F5>)

用“Debug”工具栏的“Go”或快捷命令“Run”可实现全速运行程序。若程序中已经设置断点,程序将执行到断点处,并等待调试指令;若程序中没有设置任何断点,当μVision4处于全速运行期间,不允许任何资源的查看,也不接受其他的命令。

978-7-111-46831-8-Chapter03-36.jpg

图3-23 P1口观察窗口

将鼠标箭头978-7-111-46831-8-Chapter03-37.jpg移到一个变量上可以看到它们的值。

8.978-7-111-46831-8-Chapter03-38.jpg启动/停止调试(快捷键<Crtl+F5>)

序使用了系统资源P1口,为了更好

由于Test1程序使用了系统资源P1口,为了更好地观察这些资源的变化,用户可以打开它们的观察窗口。单击菜单栏“Peripherals”选项,在打开的下拉菜单中选择“I/O-Ports”选项中的“Port 1”命令,即可打开并行I/O接口P1的观察窗口,如图3-23所示。