Proteus V8 的特殊调试与诊断功能的开发
摘要—本文主要以 Proteus8.0 版本的功能及使用为基础,主要介绍工程的创建、编译 器的配置、基本调试等一些基本问题,并探讨 Proteus8.0 的一些新特点新功能,最后与 Proteus7.0 做出对比得出结论。
关键词—Proteus8.0 ,Proteus7.0;
1.简介 Proteus 软件是英国 Lab Center Electronics 公司出版的 EDA 工具软件(该软件中国 总代理为广州风标电子技术有限公司)。它不仅具有其它 EDA 工具软件的仿真功能,还能仿 真单片机及外围器件。它是目前比较好的仿真单片机及外围器件的工具。虽然目前国内推广 刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工 作者的青睐。 同时,Proteus 还是一个巨大的教学资源,可以用于模拟电路与数字电路的教学实验、 单片机与嵌入式系统的教学实验、微控制器系统的综合实验、创新实验与毕业设计等。 Proteus 可以与广大学生相结合,打造成一个口袋实验室。
在 Proteus 家族里,Proteus8.0 是目前较新的版本(最新的是 8.1 版),Proteus8.0 版 本的出现具有重要的意义,它也与其他版本有着很明显的不同,再此进行详细介绍 Proteus8.0 版本的使用过程。
2.使用过程
2.1 创建新工程
假定此时已安装了 Proteus8.0 版本。
选择并点开 Proteus 8 Professional,首先需要新建一个工程,由于本教程是与 PCB 绘 制教程相关联的,所以此时的工程是一个带有原理图、PCB 和源代码编译部分的工程。
点击 File,如图 ,选择 New Project,将出现新建工程向导部 分,在此可以设置文件名(Name)和保存路径(Path)
点击 Next,在下一页的顶部选项卡中,选择“从选中的模板中创建原理图”(Create a
Schematic from the selected template),在此可选择默认(DFAULT)。如果不需要绘制 原理图,可直接选择 Do not create a schematic。
继续点击 Next,选择“从选择的模板中创建 PCB 设计”(Create a PCB layout from the selected template),在此可继续选择默认(DFAULT)。如果不需要进行 PCB 设计,可直 接选择 Do not create a PCB layout。
由于本教程需要仿真,所以继续点击 Next,在仿真页面选择 Create Firmware Project, 并设置 Family(系列)-8051,Contoller(控制器)-AT89C51,Compiler(编译器)-ASEM-51, 也就是在此设计外部代码编译器。如果不需要进行仿真,则可直接选择 No Firmware Project 即可。
点击 Next,新工程便创建完毕。此时的新工程包含原理图设计部分、PCB 绘制部分和源 代码部分。
2.2 在 Proteus 中进行汇编代码的调试
Proteus8.0 版本自身支持汇编语言,故先以汇编语言为例。 由于前面已经设置过外部代码编译器,所以此时工程包含 Source Code(源代码),如 果前面没设置或者不小心删除后,也可以在此新建,方法为点击 Source ,
选择 Create Project,再次设置 Family(系列)-8051,Contoller(控制器)-AT89C51, Compiler(编译器)-ASEM-51 即可。 Proteus8.0 或以上版本自带源代码编辑、编译器,所以不再需要外部文本编辑器。 具体操作界面如图所示,在指定位置(Write your code here)进行编码。
此时,编译器、原理图、源代码都已准备好,点击 Build ,选择 Build 下的 Build Project 或者 Rebuild Project 编译固件。 如果代码错误,系统会自动提示哪行代码出现错误,比如下图:
系统在下方 IDE 的底部面板上显示错误提示,即 main.asm 的汇编程序第 41 行出现错误, 错误为“illegal statement syntax”,鼠标直接点击这句错误提示,系统将自动跳转到出 错的代码处,这对于查错改错十分方便
如果编译成功,系统不显示错误。其编译的输出也显示在下方 IDE 的底部面板上,最终 编译成功后,能得到一个编译成功的信号。
系统自动生成名为 Debug.hex 的文件,并自动拷入到前面的原理图中,点击按钮 即 可仿真运行。这也是 Proteus8.0 版本与以往版本的不同之处,该版本不再需要用 Keil 编程后 生成.Hex 文件再手动拷入到原理图中,一切都是自动完成的,节约了很多时间。
同时,Proteus 8.0 或以上版本支持 C51 语言的编译和调试,这需要电脑本身已经安装 Keil 或者 IAR 等可以编译 C51 语言的软件。Proteus 自带汇编语言的编译器,如果想编译 C51,则需要找到电脑中安装的编译环境,也可以到网上 Download,具体如图:
 点击 Config ,在下拉菜单中选择 Compilers Configuration,自动 弹出如下界面:
这个对话列出了所有支持的编译器,并指示是否被安装和配置。按下对话框底部的检查 全部按钮(Check all),Proteus 将扫描你的计算机,检查安装好的编译器。如果找到 Proteus 支持的编译器,Proteus 将自动进行配置并在 Proteus 中调用这些编译器编译源代码。
其余的编译器,Proteus 自动给出下载(Download)或者下载链接(Goto Website),读 者可根据自身要求选择下载。值得注意的是,其中有些编译器的下载是需要收费的。 编译成功后,如果想观察代码的单步运行,则需要进行如下操作:
首先要确定 Proteus 没有运行仿真,处于停止状态。通过“仿真控制面板”暂停按钮启 动仿真或暂停。
启动仿真后,源程序页面自动变为下图格式:
现在说明如何设置断点,对于上图,要在 0111 处设置断点,只需在需要设置断点的代码 处双击鼠标左键即可,断点指示器(一个小红点)将出现在代码的左侧;如果误设了断点, 只需在这行再次双击(或从代码窗口中点击鼠标右键选择取消)即可取消,效果如下图:
如果现在点击运行程序,程序执行到断点代码处将自动停止。 到达断点后,可以通过源代码窗口右上角或 VSM Studio 调试菜单中的常用命令单步执行 代码。另外可以使用快捷键 F10 和 F11 分别进行单步跳过调试和单步进入函数内部调试。 如图:
此时,还可以观看该代码处的寄存器参数等,具体设置为:点击 Debug,在下拉菜单中 选择所需要观测的参数。可以观看 8051 CPU Registers、8051 CPUSFR Memory、8051 CPU Source code 等等。
其中寄存器的状态如下(8051 CPU Registers):
2.3 在 Proteus 中进行 C 代码的调试
如果用 C51 编程,则代码的调试与汇编语言代码的调试十分相似,具体如下: 首先,由于本人电脑没有安装有关 C51 编译的软件,故用 Proteus8.0 版本本身自带的一 个例子为例。打开 Proteus8.0 之后,点击 File,选择 New Project,这时弹出如下对话框 如下图,选择 From Development Board(从开发板),并选择 PIC16 系列下的 F1 Release 开发板,点击 Finish,调用完毕。
此时的原理图如下图:
源程序如下:
当 Proteus 没有进行仿真,处于停止状态时,才可以进行调试,这一点与汇编语言的调试 完全一样。
该案例包含很多源文件,所以需要在下拉菜单里选择具体的文件来进行调试,如下图:
此时选择 main.c 作为例子,点击后出现下面的 C 程序:
现在设置断点,方法同上,只需在需要放置断点的代码处双击鼠标左键即可,此时会出 现一个红点(断点指示器),如果断点设置错误,则再次双击鼠标左键,断点即可取消,假 设在 0980 处设置断点,如下图所示:
此时进行仿真,结果运行到断点处便会停止。 如果需要查看程序执行的细节,具体到每一条指令的执行过程,则可以在反汇编代码中 进行代码的汇编级单步调试。右键单击所设断点的代码,选择 Dissassembly(反汇编)或者 按 Ctrl+D,如下:
反汇编后会显示从当前断点到下一条指令之间所有的操作,对于上面的 0980 处设置的断 点,将显示 0980 到 09A2 之间的所有单步程序:
值得注意的是,反汇编的应用是汇编语言和 C51 语言编程的一大区别。
2.4 Proteus8.0 与 Keil 联接调试
Keil 是德国 Keil 公司(ARM 公司收购)现已被开发的 8051 单片机软件开发平台,经过 不断升级,现已经成为一个重要的单片机开发平台。Keil 界面不复杂,操作也不困难,很 多优秀程序都是在 Keil 的平台上编写出来的。Keil 是一个重要的单片机语言开发软件平台, 用户群极为庞大。 (1)Keil 的μVision3 可进行纯粹的软件仿真(仿真软件程序,不接硬件电路);也可 以利用硬件仿真器,搭接上单片机硬件系统,在仿真器中载入项目程序后进行实时仿真;还 可以使用μVision3 的内嵌模块 Keil Monitor-51,在不需要额外的硬件仿真器的条件下, 搭接单片机硬件系统对项目程序进行实时仿真。 (2)μVision3 调试器具备所有常规源代码级调试,符号调试特性以及历史跟踪,代 码覆盖,复杂断点等功能。Keil μVision3 可以编辑、编译汇编语言、C51 语言,连接定位 目标文件和库文件,创建.hex 文件,调试目标程序等。 下面介绍使用 Keil μVision3 来开发项目、调试程序并生成*..hex 文件来用于 Proteus
中单片机程序的开发和仿真。
前面介绍了 Proteus 下完成原理图设计文件后,再在 keil μVision3 下编写 C51 程序, 经过调试、编译最终生成.hex 文件后,在 Proteus 下把.hex 文件载入虚拟单片机中,然后 进行系统联调。如果要修改程序,需再回到 keilμVision3 下修改,再经过调试、编译,新 生成.hex 文件,重复上述过程,直至系统正常运行为止。但是对于较为复杂的程序,如果 没有达到预期效果,这时可能需要 Proteus 与 KeilμVision3 进行联合调试。 联合调试之前需要安装 vudgi.exe 文件,文件可到 Proteus 的官方网站下载。vudgi.exe
文件安装后,需对 Proteus 与μVision3 中进行相应设置。
2.4.1 对 Proteus8.0 的设置
首先打开 Proteus 需要联调的程序文件,但不要运行,然后选中“调试”菜单中的“使 用远程调试监控”选项,如下图所示。使得 KeilμVision3 能与Proteus 进行通信。
2.4.2 对 KeilμVision3 的设置 完成上述设置后,在 KeilμVision3 中打开工程文件,然后单击菜单【Project】→ “Options for Target”选项(或单击工具栏上“Options forTarget”快捷按钮),打开 如图所示的工程,即 KeilμVision3 中的设置选项对话框
在 Debug 选项卡中选定右边的“Use”及其中的选项“Proteus VSM Simulator”,如果 Proteus 与 Keil C 安装在同一台计算机中,右边“Setting”中的Host 与 Port 可保持默认 值 127.0.0.1 与 8000 不变,如图所示。在跨计算机调试时则需要进行相应的修改。
完成上述设置后,在 Keil μVision3 中全速运行程序时,Proteus 中的单片机系统也
会自动运行,出现的联调界面如图 4-4 所示。左半部分为 Keil μVision3 的调试界面,右 半部分是 Proteus ISIS 的界面。如果希望观察运行过程中某些变量的值或者设备状态,需 要在 Keil μVision3 中恰当使用各种 Step In/ Step Over/ Step Out/ Run To Cursor Line 及 Breakpoint 进行跟踪,来观察右面的虚拟硬件系统运行的情况。总之,需要把 Keil μVision3 中的各种调试手段,如单步、跳出、运行到当前行、设置断点等恰当地配合来进 行单片机系统运行的软硬件联调。 需要说明的是,联调方式不支持需要调试的程序工程的中文名字,因此应将中文名字改 为英文名字,例如,需将 “流水灯.Uv2”工程文件的名字改为英文字符的名字“LSD.Uv2”。 需要注意的是,这种联调方式在有些场合并不适用。例如键盘矩阵扫描时,就不能用单 步跟踪,因为程序运行到某一步骤时,如果单击按键后,再到 KeilC 中继续单步跟踪,这 时按键早已释放了。又如程序中某些函数模拟了访问某个芯片的程序,如果在内部单步跟踪, 这样也会失去芯片时序的仿真模拟,跟踪也是达不到效果的。 2.5 硬件断点的设置 到目前为止,Proteus8.0 的基本使用已经叙述完毕,前面所介绍的是基于软件条件的仿 真中断,另外也可以使用硬件断点,以便当硬件条件发生时检查代码。
切换到原理图部分,在左边的部分选择电压探针图标 ,选择 VOLTAGE。接下来在编辑 窗口单击,开始进行探针的放置,即移动鼠标到想要放置探针的位置,左键单击即可,如图:
现在右键单击探针,从弹出的菜单中选择编辑属性(Edit Properties),如下图:
实时断点类型选择数字的(Digital),如果想在低电平进行触发,输入 0 作为触发值, 即在 Trigger Value(触发值)处输入 0;同时还可以设置装备时间(Arm at Time),来跳过断 点等
2.7 .诊断模式的设定
在 Proteus 中仿真诊断信息是一个十分有用又容易被人忽略的工具,它提供一个窗口, 允许用户查看指定外设上仿真活动的文字性报告。下面介绍一下它的使用。
切换到原理图界面,选择 Debug 菜单 ,打开后找到 Configure
Diagnostics(配置诊断信息),左键单击,弹出如下对话框:
展开 ISIS,选择需要诊断的部分,并点击 Full Trace(所有信息),即将诊断信息输出 等级设置为所有信息。
点击 OK 后启动仿真,我们会在 VSM Studio 底部看见诊断信息
3. 结论
Proteus 是世界上著名的 EDA 工具(仿真软件),从原理图布图、代码调试到单片机与外 围电路协同仿真,一键切换到 PCB 设计,真正实现了从概念到产品的完整设计。是目前世界 上唯一将电路仿真软件、PCB 设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模 型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086 和 MSP430 等,2010 年又增加了 Cortex 和 DSP 系列处理器,并持续增加其他系列处理器模型。在编译方面,它 也支持 IAR、Keil 和 MATLAB 等多种编译器。 用 Proteus 软件进行单片机系统仿真设计,是虚拟仿真技术和计算机多媒体技术相结合 的综合运用,有利于培养学生的电路设计能力及仿真软件的操作能力;在单片机课程设计和 全国大学生电子设计竞赛中,我们使用 Proteus 开发环境对学生进行培训,在不需要硬件 投入的条件下,学生普遍反映,对单片机的学习比单纯学习书本知识更容易接受,更容易提 高。实践证明,在使用 Proteus 进行系统仿真开发成功之后再进行实际制作,能极大提高 单片机系统设计效率。因此,Proteus 有较高的推广利用价值。
在 Proteus 的家族里,Proteus8.0 是目前比较新的版本(最新的是 Proteus8.1 版本), 它与以前其他版本相比,界面变化很大,功能更强,总体结构变化较大,PCB 设计和 VSM 设 计功能都有所加强,对于其兼容性,Proteus8.0 所生成的文件在 Proteus7 系列里不能运行, 而 Proteus7 生成的文件可以在Proteus8.0 里运行,说明 Proteus 的更新是向下兼容的。 与 Proteus7.0 相比,8.0 版本可以调节字体大小,但是也取消了外部文本编辑器。 Proteus8.0 对于汇编语言的应用要求较高,同时也在一定程度上支持C51 语言的使用。值 得注意的是,Proteus8.0 版本更加偏向于汇编语言的应用,对汇编语言给予里很大便利。
完整的pdf格式文档51黑下载地址:
详细的Proteus8.0教程.pdf
(1.49 MB, 下载次数: 146)
|