共有 3 种调试方法,分别是:
第一种方法比较简捷,不论是用汇编语言,还是用 C 语言,都要在 Keil 下,连接编译成扩展名为 HEX 的十六进制文件。之后把该 HEX 文件载入单片机,就可直接仿真运行。只要 Proteus 电路原理图正确,与之配套的程序也正确,它就能运行。其缺点是运行时看不到源程序。第二种方法是源代码级调试,分汇编语言方式和 C 语言方式。调试时都可以看到源代码,也可用全速运行、单步运行等方法执行程序。第三种方法是 Keil 与 Pro-teus 联合调试,在 Keil 中执行程序,在 Proteus 原理图中显示变化情况,两种软件各负其责,分工合作。以下逐一介绍这 3 种调试方法。
这种直接装入 HEX 文件的方法,有全速运行方法,和单步运行方法。方法是:不单击开始仿真按钮,而是单击单步仿真按钮,系统会进入单步运行状态。
在源代码级调试 C51 语言程序,需要先把 C51 语言编译生成 OMF51 格式的可执行文件。
OMF51 格式文件,英文是 “absolute object module format files”,意指绝对目标文件。人们常用的 HEX 十六进制文件没有包含足够的信息,不允许进行单步调试。而 OMF51 格式文件包含所有的指令和调试信息,允许实现全速、单步、设置断点、观察变量等调试功能。OMF51 格式是 Keil 所支持的。
① 在 Keil 中打开工程项目文件。
② 选中 “Target 1”,然后单击鼠标右键,在弹出的快捷菜单中选择 “Options for Target ‘Target 1’ ”。
③ 在新打开的对话框中选择 “Output” 选项卡,并完成如图所示的设置。
①在原理图的单片机上双击鼠标左键,在弹出的 “编辑元件” 对话框内的 “Program File” 文本框中要添加刚才生成的 OMF51 格式的文件。
②在原理图中,单击运行仿真按钮 [插图],系统会启动仿真,流水灯点亮,仿真开始后,单击暂停按钮,程序暂时停止运行,然后调出调试窗口。
③在 C 语言的源代码窗口中,右上角的 6 个图标依次是 “全速”、“单步”、“进入函数”、“跳出函数”、“执行到光标处”、“设置 / 取消断点”。
(1)安装 Keil 与 Proteus 软件.
(2)安装 Keil 与 Proteus 软件的链接文件 vdmagdi.exe。
(3)启动 Proteus,打开要仿真的工程文件,配置 Proteus 软件。单击菜单 “调试”,选中 “使用远程调试监控”。
(4)调出编辑 AT89C51 属性的对话框,将其程序文件设置为空。程序文件设置为空意味着 Proteus 原理图的控制权全交给 C51 程序了。至此,Proteus 软件的准备工作已完成。
(5)在 Keil 中打开工程项目文件。
(6)选中 “Target 1”,然后单击鼠标右键,在弹出的快捷菜单中选择 “Options for Tar-get ‘Target 1’ ”。
(7)在新打开的对话框中选择 “Debug” 选项卡,并完成设置:这里需要改动的地方是,将 “Use” 单选按钮选中,将其后的内容选择为 “Proteus VSM Simulator”。单击图中的 “Settings” 按钮,它是 IP 地址设定按钮,出现另一对话框,单击 “OK” 按钮,又回到 Debug 对话框。再将 “Load Application atSta” 和 “Go till main” 两个复选框选中,单击 “确定” 按钮退出。
(1)双击 Proteus 文件,打开仿真电路原理图,在 “调试” 菜单中选中 “使用远程调试监控”。调出编辑 AT89C51 属性的对话框,将其程序文件设置为空。
(2)在 Keil 中打开工程项目文件。将工程全部重新编译,在程序没有错误的情况下,编译完成之后进入 Keil 调试系统,同时 Proteus 中的仿真功能也已启动,等待执行指令。
(3)在 Keil 调试系统初始启动调试界面的代码窗口为汇编、C51 和机器码的混合体,这对调试程序很不方便,需要调出源代码窗口。方法是:单击 “View”→“Dis-assembly Window”,就变成 C51 代码窗口了。
注意:一定要先在 Proteus 界面的 “调试” 菜单中选中 “使用远程调试监控”,不然在 Keil 中调试时会打开其他原理图文件。
(4)如果要全速运行,在清除所有断点的前提下,按 F5 功能键,程序会全速运行。
(5)如果要观察每步的运行情况,可以按 F11 和 F10 功能键,其中 F11 是单步运行键, F10 是跳出函数键。单步运行时,执行延时程序按 F10,执行其他指令按 F11,如果不这样,会陷进延时程序一时无法出来。
(6)还有个运行方式是 “运行到光标处”,先要把光标放到正执行程序后的某一行,然后单击 “运行到光标处” 图标,程序就会执行到该光标处停下来。
(7)在 Proteus 原理图仿真画面中,也可让寄存器窗口、特殊寄存器窗口和内部存储器窗口出现,即打开 “8051 CPU Registers U1”、“8051CPU SFR Memory U1” 和 “8051 CPU Internal(IDATA)MemoryU1”3 个窗口。
(8)要停止仿真时,选择 “Debug”→“Start /Restart DebugSession”,停止调试。
(9)要重新开始仿真,仍选择 “Debug”→“Start /Restart DebugSession”,又重新进入仿真调试状态。