精品文档---下载后可任意编辑调试一般都是在发生错误与意外的情况下使用的。假如程序能正常执行,调试很多时候都是用不上的。所以,最高效率的程序开发还是程序员自己做好法律规范,而不是指望调试来解决问题。单片机的程序调试分为两种,一种是使用软件模拟调试,第二种是硬件调试。使用软件模拟调试,就是用计算机去模拟单片机的指令执行,并虚拟单片机片内资源,从而实现调试的目的。但是软件调试存在一些问题,不可能像真正的单片机运行环境那样执行的指令能在同一个时间完成(往往比单片机慢)。软件调试只能是一种初步的,小型工程的调试,比如一个只有几百上千行的代码的程序,软件调试能很好的完成。硬件调试其实也需要计算机软件的配合,大致过程是这样的:计算机软件把编译好的程序通过串行口、并行口或者 USB 口传输到仿真器,然后与单片机一样执行。仿真器仿真全部的单片机资源(所有的单片机接口,并且有真实的引脚输出)。仿真器会将单片机内部内存与时序等情况返回给计算机,这样 就可以在计算机里看到单片机程序真实的执行情况。不仅如此,还可以通过计算机的软件实现单步、全速、运行到光标的常规调试手段。仿真器可以接入实际的电路中。图 1:仿真器 下面将具体介绍如何使用 Keil uVision 软件来调试单片机程序。首先:打开一个已经编译通过的单片机项目。选择 Debug 下面的 Start/Stop Debug Session,这个选项可以打开调试也可以关闭调试。接下来看到的窗口就是调试窗口了:下面具体说说相关子窗口的功能:1、左侧的 ProjectWorkspaceRegs 是片内内存的相关情况值;Sys 是系统一些累加器、计数器等。Regs 很简单就不多说。具体介绍一下 Sys:精品文档---下载后可任意编辑a 累加器 ACC,往往在运算前暂存一个操作数(如被加数),而运算后又保存其结果(如代数和)。b 寄存器 B,主要用于乘法和除法操作。spsp_maxdptr 数据指针 DPTR。PC $states 执行指令的数量。sec 执行指令的时间累计(单位:秒)。psw 程序状态标志寄存器 PSW,八位寄存器,用来存放运算结果的一些特征量,如有无进位、借位等。p 奇偶标志 P。反映累加器 ACC 内容的奇偶性,假如 ACC 中的运算结果有偶数个 1(如11001100B,其中有 4 个 1),则 P 为 0,否则,P=1。f1ov 溢出标志位 OV。MCS-51 反映带符号数的运算结果是否有溢出,有溢出时,此位为 1,否则为 0。rsf0ac 辅助进位标志 AC。又称半进位标...