51单片机典型项目实战全能一本通(C语言版)(视频版)
上QQ阅读APP看书,第一时间看更新

2.4 程序的编译与调试

上面在文件编辑窗口建立了文件“流水灯.c”,并且将文件添加到项目中,然后还需要编译和调试文件,发现并修改源程序中的语法错误和逻辑错误,最终目标是生成能够执行的.hex文件,具体步骤如下。

1. 程序编译

单击47400-00-58-3按钮,对当前文件进行编译,在图2-12所示的输出窗口会出现提示信息。

图2-12 文件编译信息

从输出窗口中的提示信息可以看到,程序中有2个错误,认真检查程序找到错误并改正,改正后再次单击47400-00-59-1按钮进行编译,直至提示信息显示没有错误为止,如图2-13所示。

图2-13 提示信息显示没有错误

2. 程序调试

程序编译没有错误后,就可以进行调试与仿真。单击开始/停止调试47400-00-59-2按钮(或在主界面单击Debug→Start/Stop Debug Session选项),进入程序调试状态,如图2-14所示。

图2-14 程序调试界面

图2-14左边的项目窗口给出了常用的寄存器R0~R7以及A、B、SP、DPTR、PC、PSW等特殊功能寄存器的值,这些值会随着程序的执行发生相应的变化。

在图2-14所示的存储器窗口的地址栏中输入0000H后回车,可以查看单片机片内程序存储器的内容,单元地址前有“C:”,表示程序存储器。要查看单片机片内数据存储器的内容,在存储器窗口的地址栏中输入D:00H后回车,可以看到数据存储器的内容。单元地址前有“D:”,表示数据存储器。

在图2-14中出现了一行新增加的用于调试的按钮,如图2-15所示。

图2-15 调试状态下新增加的按钮

还有几个原来就有的用于调试的按钮,如图2-16所示。

图2-16 用于调试的其他几个按钮

在程序调试状态下,可运用按钮以单步、跟踪、断点、全速运行等方式调试,也可观察单片机资源的状态,如程序存储器、数据存储器、特殊功能寄存器、变量寄存器及I/O端口的状态。这些图标大多数与Debug菜单中的各项子命令一一对应,只是快捷按钮要比菜单使用起来更加方便快捷。

图2-15与图2-16中常用的快捷按钮的功能如下。

(1)各调试窗口显示的开关按钮

下面的图标控制图2-14中各个窗口的开与关。

47400-00-60-2:项目窗口的开与关。

47400-00-60-3:特殊功能寄存器显示窗口的开与关。

47400-00-60-4:输出窗口的开与关。

47400-00-60-5:存储器窗口的开与关。

47400-00-60-6:变量寄存器窗口的开与关。

(2)各调试功能的按钮

47400-00-60-7:调试状态的进入/退出。

47400-00-60-8:复位CPU。在程序不改变的情况下,若想使程序重新开始运行,单击该按钮即可。执行此命令后,程序指针返回0000H地址单元。另外,一些内部特殊功能寄存器在复位期间也将重新赋值。例如,A将变为00H,SP变为07H,DPTR变为0000H,P3~P0口变为FFH。

47400-00-60-9:全速运行。单击该按钮,可全速运行程序。当然若程序中已经设置断点,程序将执行到断点处,并等待调试指令。在全速运行期间,不允许查看任何资源,也不接受其他命令。

47400-00-60-10:单步跟踪。可以单步跟踪程序。每执行一次此命令,程序将运行一条指令。当前的指令用黄色箭头标出,每执行一步箭头都会移动,已执行过的语句呈绿色。

47400-00-60-11:单步运行。本命令实现单步运行程序,此时单步运行命令将把函数和函数调用当作一个实体来看待,因此单步运行是以语句(该语句不管是单一命令行,还是函数调用)为基本执行单元。

47400-00-60-12:执行返回。在用单步跟踪命令跟踪到子函数或子程序内部时,使用该按钮,即可将程序的PC指针返回调用此子程序或函数的下一条语句。

47400-00-60-13:运行到光标行。

47400-00-60-14:停止程序运行。

在程序调试中,上述几种运行方式都要用到,灵活运用这些手段,可大大提高查找差错的效率。

(3)断点操作的按钮

在程序调试中常常要设置断点,一旦执行到该程序行即停止,可在断点处观察有关变量值,以确定问题所在。图2-16中有关断点操作的按钮的功能如下。

47400-00-60-16:插入/清除断点。

47400-00-60-15:清除所有的断点设置。

47400-00-61-1:使能/禁止断点,用于开启或暂停光标所在行的断点。

47400-00-61-2:禁止所有断点。

此外,插入或清除断点最简单的方法,是把鼠标指针移至需要插入或清除断点的行首双击即可。

上述的4个按钮,也可Debug菜单中找到。