2022年PROTEUS_Design_Suit说明书_单片机仿真软件 .pdf
《2022年PROTEUS_Design_Suit说明书_单片机仿真软件 .pdf》由会员分享,可在线阅读,更多相关《2022年PROTEUS_Design_Suit说明书_单片机仿真软件 .pdf(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、42VSM部分名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 19 页 -43第 1 章 交互式仿真指南1.1介绍指南通过制作一个例子,展示怎样使用PROTEUS VSM 进行交互式仿真。其中的重点是动态器件的使用及ISIS 编辑器源码调试,ISIS 的一些基本操作在ISIS 帮助手册中有详细的说明。例子是一个交通灯控制系统,使用的芯片是PIC16F84。原理图如下:这个原理图可以在PROTEUS 安装文件夹下的下找到,也可以直接手工绘制。1.2绘制一个电路图1.2.1放置元件新建一个原理图设计,选择component 模式按钮,再点击对象选择窗口上的P钮进入元件库中。在 KEY
2、WORD对话框中输入关键词,比如说输入TRAFFIC,在结果窗口就会显示查找的结果,双击查询结果,对应元件就会添加到对象选择列表当中。用同样的方法添加 PIC16F84。当把原理图所有的元件的都选择添加好以后,将元件摆放到原理图编辑窗口当中,其中 TRAFFIC LIGHTS 放置两次,PIC 放置一次。(选中元件,其呈高亮状态,在预览窗口将出现元件预览。)名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 19 页 -441.2.2移动和旋转移动:将鼠标移到元件上,右键单击(元件呈高亮状态),按住鼠标左键并移动元件,松开左键,元件位置就确定下来。注意一点,这时元件还处于选取状态,再
3、点击左键,元件再次放置。旋转:右键选中元件,元件呈高亮状态,再在旋转按钮框中点击一种旋转方式,元件就会以 90 度进行旋转。1.2.3缩放和捕捉缩放:在 VIEW 菜单下含有四种缩放方式:按 F6 或单击 ZOOM IN 按钮,鼠标所在周围放大。按 F7 或单击 ZOOM OUT 按钮,鼠标所在周围缩小。按 F8 或单击 ZOOM ALL 按钮,返回整张设计图。单击 ZOOM TO AREA,可以选择一部分进行放大。按住 SHIFT 键并用鼠标左键拖曳一个框,释放SHIFT 键后就会放大到所选区域。捕捉:ISIS 中有一个强大个功能是实时捕捉。当鼠标靠近引脚时,系统会自动进行捕捉。极大的方便原
4、理图的绘制。该功能在Tool Manu 中,默认是打开的。1.2.4连线导线绘制过程:1 选中连线模式:导线模式或总线模式;2 点击起点及终点,系统自动拉出导线。3 导线复制:单击起点,系统走出和上一条导线相同的轨迹。4 对导线进行拖曳,调整导线位置。1.3编写程序(汇编)1.3.1编写源程序PROTEUS 自带多种汇编编辑编译系统,使用编辑环境输入下列PIC 汇编源代码:LISTp=16F84;PIC16F844 is the target processor#include P16F84.INC;Include headerfile名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,
5、共 19 页 -45CBLOCK 0 x10;Temporary storageStatel1,l2ENDCorg0;Start up vector.gotosetports;Go to start up code.org4;Interrupt vector.haltgotohalt;Sit in endlessloop anddo nothing.setportsclrw;Zero in to W.movwfPORTA;Ensure PORTA is zero before we enableit.movwfPORTB;Ensure PORTB is zero before we enabl
6、eit.bsfSTATUS,RP0;Select Bank 1clrw;Mask for all bits asoutputs.movwfTRISB;SetTRISB register.bcfSTATUS,RP0;ReselectBank 0.initialiseclrw;Initial state.movwfstate;Set it.loopcallgetmask;Convert stateto bitmask.movwfPORTB;Write it to port.incfstate,W;Increment statein to W.andlw0 x04;Wrap it around.mo
7、vwfstate;Put it back in to memory.callwait;Wait:-)gotoloop;And loop:-);Function to return bitmask for output port for current state.;The top nibble contains the bits for one setof lights andthe;lower nibble the bits for the other set.Bit 1 is red,2 is amber;andbit three is green.Bit four is not used
8、.getmaskmovfstate,W;Get state in to W.addwfPCL,F;Add offset in W to PCL to calc.goto.retlw0 x41;state=0 is Green andRed.retlw0 x23;state=1 is Amber andRed/Amberretlw0 x14;state=3 is RedandGreenretlw0 x32;state=4 is Red/Amber andAmber.;Function using two loops to achieve a delay.waitmovlw5movwfl1w1ca
9、llwait2decfszl1gotow1return名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 19 页 -46wait2clrfl2w2decfszl2gotow2returnEND注意:上面的程序故意设置了一些错误的代码,以便后面调试使用。1.3.2链接编译源程序编辑好源程序后,进行源程序链接编译工作,整个过程如下:1 点击 SOURCE MENU菜单下 ADD/REMUVESOURCE FILE,在代码生成工具下拉菜单选择MPASM,新建一个汇编程序,导入刚才编好的TL.ASM 汇编文件。2 单击 SOURCE 菜单下 BUILD ALL 命令,如果程序没有错误,MP
10、ASM 会生成 HEX格式的文件。3 编辑处理器属性中的PROGRAM 属性,将生成的HEX 文件添加到该对话框中。*这样我们就完成了程序的编辑编译以及和处理器模型的连接。1.3.3调试程序仿真电路点击仿真盘框中的运行按钮。电路进入仿真状态,观察电路运行效果,你会发现开始一个交通灯是绿色而一个交通灯为红色,此后交通灯再也不会改变显示状态,这说明是程序存在 BUG,需要经过调试改正。调试模式按 CTRL+F12 或点击暂停或单步使电路从仿真状态切换到调试状态。在默认设置下系统会弹出两个窗口,一个是源程序调试窗口,另一个是寄存器窗口。另外一些调试窗口可以通过 DEBUG 菜单选出显示;其中使用者可
11、以直接在WATCH WINDOW中添加自己比较关心的变量进行实时监测。程序执行到某处,在该行程序的最多边会有一个红色的箭头出现,这行程序呈处于高亮状态。名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 19 页 -47设置断点观察程序可以发现它以一个重复周期循环。因此我们首先在循环的起点设置一个断点是个好主意。用鼠标使该行(地址000E)高亮,然后按F9 就可以设置断点。然后按F12 使程序运行。你就可以从StatusBar 看到执行到数字断点的消息以及程序计数器(PC)地址。这和我们设置的第一个断点的地址是对应的。在 Debug 菜单下有一系列的调试键,但是多数时候我们用F11
12、来单步运行程序。现在单击 F11 并注意左边的红色箭头下移到下一条指令。我们所做的是运行到“clrw”指令并停下。通过观察寄存器窗口的W 寄存器并注意它的值被清零,你可以校验指令的运行。现在我们需要做的,是决定我们希望下一条指令做什么,并测试实际上做了没有。例如,下一条指令将吧“w”寄存器的内容传送到端口A,端口 A 应该被清零。运行这个指令并检查寄存器窗口可知实际就是这样执行的。继续这个线索直至到达我们设置的第二个断点,你可以注意到两个端口都被清零为输出(如TRISB 寄存器所命令的那样),状态变量正确地被设为0。由于这是个函数调用,我们可以使用Stepping Over 选项跳过函数(通过
13、单击F10 键),但是为了完整我们单步运行每条指令。在这里单击F11 就跳到 getmask 函数的第一条指令。向前单步执行我们看到传送指令成功执行,我们落在正确的位置,为查表添加0 偏移值。当我们返回主程序后,我们得到期望的屏蔽值。继续单步执行把屏蔽值写到端口,我们可以在原理图上看到正确的结果。再次单步执行,在寄存器窗口W 寄存器的值加1,显然状态也成功地加 1。单步执行,程序设计为增加到3 后绕回 0。就像在Watch Window 看到那样,这并没有按照应有的方式运行。为了在下一循环中正确地设置屏蔽值,状态在这里应该清楚地被加1。寻找 BUG仔细地分析就暴露了问题的原因是和4 相与而不是
14、3。我们希望的状态是0,1,2,3任何这些数与4 相与都是0。这就是为什么我们运行仿真时交通灯没有变化。解决方法很简单,就是把错误指令改为和3 相与而非4。这意味着状态增加到3 也就是 W 寄存器增加到4时状态返回到0。另一种简单的解决办法是当“W”寄存器到4 时把它清零。通过这个ProteusVSM 调试技术的小例子说明了基本的技巧,还有更多的功能可用。建议你参考“源代码调试”一节以获得更加详细的资料。1.3.4测量PROTEUS 中提供多种测量用的虚拟仪器,将其放置到原理图中,连接到测量点,开始仿真,虚拟仪器将会提供一个反馈的波形信号。如下列出现有的虚拟仪器种类:名师资料总结-精品资料欢迎
15、下载-名师精心整理-第 6 页,共 19 页 -48每一个虚拟仪器都附带有帮助文档,可以通过点击仪器右键菜单中的Edit Properties 命令,在弹出的对话框中点击Help 按钮,调出帮助文档进行模型细节的查阅。操作如下图:在使用 PROTEUS 虚拟仪器时应该清楚,这些仪器不会考虑信号或波形在器件之间传输引起的干扰。下面介绍一下逻辑分析仪的放置及使用过程:1.选择仪器按钮,在对象选择器中选择使用的仪器。2.在编辑窗口中点击左键,进入放置模式,移动鼠标,在合适放置点左键点击确定。3.将仪器连接到到需要的测量点上。4.点击仿真盘框上点击运行按钮,逻辑分析仪开始监控数据。对于逻辑分析器的测量
16、方法请查看相关帮助。名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 19 页 -491.4编写程序(C/C+)1.4.1在 PROTEUS VSM 中调试 C 程序使用 PROTEUS VSM 调试信息:1.创建一个文件夹,将ISIS 原理图文件及C 工程都放置其中。2.编译源程序,保证编译器输出了目标代码。3.编辑处理器属性,设定时钟频率,装载编译器生成的目标代码。4.开始仿真。5.点击 PAUSE 键启动调试窗口,使用断点、单步等手段进行调试。附加调试信息(如变量窗口)取决与目标代码带的信息。细节请查阅高级调试技巧帮助文档。时钟频率通过元件属性指定,在原理图中绘制的晶振电路没
17、有实际作用。1.4.2支持的目标文件格式以下列出了不同处理器致贺词的目标代码格式:HEX 代码不带调试信息,它只能仿真不能调试。对于 COD 代码格式,VSM 调试只能在机器码下单步调试,不能进行源码调试,也不支持变量窗口观测。建议优先考虑COFF 格式。Basic Stamp 处理器包括一个集成的解释器,使用者将源代码加载到Program file 对话框中。名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 19 页 -50第 2 章高级调试指南2.1调试窗口在仿真暂停时,通过Debug 菜单下可以调出多个调试窗口。范围包括存储器、寄存器变量显示、堆栈监控器等,另外,Watch
18、视窗可以添加用户关心的量值,在仿真过程一直可以观察。2.2诊断配置ProteusVSM 包含了扩展的诊断工具和跟踪模式。它们在查找错误和验证系统运转方面很有作用。该机制使得全部仿真行为或某一指定的仿真行为在仿真过程中被记录下来并显示在仿真指示器上。作为一个系统级的仿真器,Proteus VSM 的调试模式不仅仅可以调试微处理器还可以调试合适的外围设备(LCD 显示,I2C 寄存器,温度控制仪器等),这些跟踪模式可以通过调试对话框使能。设置调试参数当调试功能使能时设置仿真从 Debug 菜单中运行Configure Diagnostics 对话框名师资料总结-精品资料欢迎下载-名师精心整理-第
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年PROTEUS_Design_Suit说明书_单片机仿真软件 2022 PROTEUS_Design_Suit 说明书 单片机 仿真 软件
限制150内