roteus软件是英国Labcenter electronics公司出版的EDA工具软件。它不仅具有其他EDA工具软件的仿真功能,还能仿真单片机及外围器件,因此是目前最好的仿真单片机及外围器件的工具。现已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Protues软件不仅可将许多单片机实例功能形象化,还可将许多单片机实例运行过程形象化。前者可在相当程度上得到实物演示实验的效果,后者则是实物演示实验难以达到的效果。随着科技的发展,计算机仿真技术已成为许多设计部门重要的前期设计手段。它具有设计灵活、结果、过程统一的特点,可缩短设计时间,减少耗资,也可降低工程制造的风险。所以在单片机开发应用中,Proteus也能获得越来愈广泛的应用。
1 单片机系统的Proteus设计与仿真的开发过程
Proteus强大的单片机系统设计与仿真功能,使其成为单片机系统应用开发和改进的手段之一,全部过程都是在计算机上通过Proteus完成的,其过程一般也可分为Proteus电路设计、Proteus源程序设计和生成目标代码文件、Proteus仿真三步。单片机系统的Proteus设计与仿真流程图如图1所示。
图1 单片机系统的Proteus设计与仿真流程图
2 Proteus软件的源码调试功能
Proteus软件提供了源码调试功能,用户可以直接在Proteus环境下进行汇编语言的源代码跟踪调试,同时还提供了与Keil、IAR等第三方编译软件的接口,可采用C语言等高级语言编程,进行跟踪,分析指令的执行情况,还可通过调试菜单调出寄存器窗口、SFR窗口、IDATA窗口,为用户编写应用程序带来方便。
2.1 Proteus下51单片机汇编源码调试
Proteus中的VSM (Virtual System Modelling)提供了简单的文本编辑器SRCEDIT,它是记事本的修改版。Proteus用它作为源程序的编辑环境,可在该编辑器中按单片机语言系统规则编写源程序。其中的菜单、命令按钮与一般“窗口”的菜单、按钮及其功能基本一样。VSM对于不同系列的微处理器提供了相应的编译器,即目标代码生成工具,可根据单片机型号及语言要求来选取编译器,51单片机及其兼容单片机的代码生成工具选用ASM51。
利用Proteus提供的源程序编辑器编写一个文件名为小灯亮.ASM源程序,如图2所示。
图2 源程序编辑窗口
程序编写后,即可进行目标代码生成工具设置,如果首次使用某一编译器,则需设置代码产生工具,单击菜单“Source-Add/Remove Code Generation Tools”,如图3所示。其中,Code Generation Tool(代码产生工具)设置为ASEM51;Make Rules(生成规则)中,Source Extn(源程序扩展名)设置为ASM;Obj Extn(目标代码扩展名)设置为HEX;Command Line(命令行)设置为%1;Debug DataExtraction(调试数据提取)中,List File Extn设置为LST。然后单击“Source-Build All”(全编译、汇编),编译结果在弹出的编译日志对话框中,无错则生成目标代码文件。对ASEM51系列及其兼容单片机而言,目标代码文件格式为*.HEX。目标代码文件“小灯亮.HEX”。若有错,则可根据编译日志提示来调试源程序,直至无错生成目标代码文件为止。
图3 目标代码生成工具设置
但有时会出现编译通不过,如图4所示。这时可以考虑将命令行的参数设置为%1%2%3,即可完成编译。然后双击ISIS编辑区中单片机,在其中的“Program File”右侧框中输入目标代码文件(目标代码与DSN文件在同一目录下,直接输入代码文件名即可,否则要写出完整的路径。或单击本栏打开按钮,选取目标文件),至此完成了程序的加载。此时可以进行仿真调试了。
图4 编译信息窗口
2.2 Proteus下51单片机C51源码调试
Proteus中只支持汇编语言源程序的调试,如果使用高级语言编写源程序,可以选用第三方调试软件如Keil,Proteus装载器支持的51系列单片机调试文件格式主要有OMF51,这种格式可以在Keil编译器中设置,所以如果使用Proteus VSM的源码调试功能,就需要汇编器/编译器输出Proteus支持的调试格式文件,这样装载器就能从这些调试文件中调试信息以实现源码调试。这里以“按键识别”为例。首先在Keil中建立一个“按键识别”的工程,打开此工程,左击选中“Targetl”,然后右击在打开的快捷菜单中选择“Options for Target Targetl”,在新打开的对话框中选择“Output”选项卡,如图5所示。
图5 输出页设置窗口
将Name of Executable中的文件扩展名设置成.OMF格式,这里的点一定不能丢掉,勾选Create Executable:中Debug Informatio Browse Informati选项,如图5所示。
确定后对“按键识别”这个工程编译后即可得到OMF51。
双击打开ISIS编辑区中单片机,加载OMF文件如图6所示,单击OK。
图6 添加目标文件
直接单击ISIS编辑区的仿真按钮中的按钮,结果如图7所示。此时单击暂停按钮即可弹出C语言编写的源代码窗口。
图7 仿真效果图
3 Keil与Proteus的交互
首先在ISIS平台上完成单片机系统的电路设计,在Keil开发环境中用汇编语言或C语言完成程序的编写、编译,最后生成二进制或十六进制文件,双击打开ISIS编辑区中单片机,加载生成的二进制或十六进制文件,单击OK。单击ISIS区的仿真按钮,即可实现仿真。如果有错,需要分别检查电路设计和Keil中的程序编写是否正确,然后再进行加载仿真直到正确为止。也可以安装Vdmagdi软件,即可实现Proteus与Keil的联调。具体方法如下。
3.1 Keil设置
在Keil软件上单击“工程菜单→为目标‘目标1’选择设备”选项或者单击工具栏的按钮,弹出窗口如图8所示,单击“调试”选项卡,在出现的对话框中,在右栏上部的下拉菜单里选中“PROTEUS VSM MONITOR-51DRIV-ER”。并且还要单击“使用”前面的小圆点表明选中当前的设置。再单击“设置”按钮,设置通信接口,在“Host”后面添上“127.0.0.1”,如果使用的不是同一台计算机,则需要在这里添上另一台计算机的lP地址(另一台计算机也应安装Proteus)。在“Port”后面添加“8000”。单击“OK”按钮即可。最后将工程编译,进入调试状态,并运行。
图8 为目标‘目标l’设置选项对话框
3.2 Proteus的设置
进入Proteus的ISIS,鼠标左键单击菜单“Debug”,选中“Use Romote Debuger Monitor”,便可实现Keil与Proteus连机调试。
本文对Proteus与单片机的交互仿真方法进行了分析和总结,结果表明充分利用Proteus提供的仿真环境,能够完成一个具有相当集成性的单片机系统,并可方便、灵活、高效地进行源代码的跟踪调试,实现Proteus与单片机的交互仿真。