protue指导应用,虚拟设备和实际设备的结合额_第1页
protue指导应用,虚拟设备和实际设备的结合额_第2页
protue指导应用,虚拟设备和实际设备的结合额_第3页
protue指导应用,虚拟设备和实际设备的结合额_第4页
protue指导应用,虚拟设备和实际设备的结合额_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1:工程中常用到MCU类型有c51,avr,pic,arm7等系列单片机,对应着protues中的元件库在Microprocessor ics目录,对于工程开发,我们经常选择使用外部IDE开发程序,然后结合硬件调试工具进行联合调试,最终确定项目的可靠性和实用性。带来的问题就是硬件开发成本居高不下,特别是用于教学,工程实习等工作,带来的成本是难以接受的,使用protues进行模拟是个不错的方法在掌握了protues的基本应用后,我们来了解一下protues的深入应用,1:protues与外部编译软件的联合调试及部分问题解决2:虚拟与真实的结合:protues虚拟串口的调试应用与高级调试工具的应用

2、3:protues元件的修改和添加方法一:在开发中,人们经常会选用外部IDE进行软件开发,然后然后结合硬件调试工具进行联合调试,这里介绍一下protues的联合调试功能,下边是开发列表MCU类型C语言常用开发工具C51KeilAVRICC,IARPIC12MPLABPIC16MPLABPIC18MPLABZ80OshonsoftARMMDK,IAR但是当我们用这些外部IDE生成hex文件载入proutes后发现当我们运行时发现原来的debug菜单的的源代码调试选项没有了,下边我们用一个c51的工程引出我们的解决方案,我们建立Protues电路:先用protues自带的代码编译工具添加如下代码编

3、译运行: ORG 0 SJMP START ORG 30HSTART: MOV A,#0FEH MOV R1,#8LOOP: MOV P1,A ACALL DELAY RL A DJNZ R1,LOOP SJMP STARTDELAY: MOV R2,#250LOOP1: MOV R3,#250 DJNZ R3,$ DJNZ R2,LOOP1 RET END我们可以看到流水灯动了起来,下边我们在protues工程目录下用keil建立keilc工程,器件选择atmel 89c51,在中作出如下设置,在c文件中输入一下代码:#include <reg51.h>#include <

4、intrins.h>void delay(void) /误差 0us unsigned char a,b,c; for(c=167;c>0;c-) for(b=171;b>0;b-) for(a=16;a>0;a-); _nop_; /if Keil,require use intrins.h void main()unsigned char Led = 0xfe;while(1)delay();Led =_cror_(Led,1);P1 = Led;编译后用protues载入(右击MCU,选择Edit Properties,在program file中找到刚才生成的h

5、ex文件,点击确定返回),点击debug菜单,发现无法观察到c语言源码,我们这里做一些修改,让protues也进行c语言调试,去掉生成HEX文件的选项,将原来的Name of Executable:中的文件名改为keilc.omf重新编译,在protues的mcu载入选项中作出部分修改将最后边的文件类型修改为:选择刚才生成keilc.omf文件,完成载入操作此时点击debug菜单,我们发现出现了8051 CPU Source Code -u1的选项,点击我们发现c语言也能在protues中进行调试了,(注意:keil工程和protues必须在同一个目录,否则调试时无法看到源代码)右击可选择,即

6、可将c代码与汇编代码同时显示,加深各位对代码的理解,选项中也有添加断点等功能,方便大家调试,如果调试过程中需要观察每个变量,可以执行Debug>Watch Windows,出现变量观察窗口,添加相关的变量,即可在调试过程中进行观察,唯一不方便是对变量观察不方便,如本例子中变量Led,如果想对这个变量进行观察,就有添加上的不便(如果大家用过visual c+6.0之类的工具就知道,vc中的变量只需要在watch窗口中添加变量名字即可),只能通过名字添加固定的寄存器或者通过添加变量地址进行观察,这对于初学者来说非常不便,下面的解决方法中我们将进一步解决这个问题。下边我们介绍另一种解决方案:我

7、们安装protues指定的联合调试工具,安装后在keil的工程设置中进行如下设置,点击setting,确保host指向自己的protues所在的电脑(一般在同一台电脑上的不需要进行设置),然后回到protues中勾选上debug->use remote debug monitor,(如果弹出防火墙提示,请允许通过),然后在protues中再在hex程序文件点击keil中的debug选项,可以发现protues已经进入相应的调试状态,在keil中选择View->Watch &Call Stack Window,在相应的调试观察窗口中加入变量即可即时观察,笔者在应用中发现调试中

8、keil对protues中返回的变量不敏感:如进行一些键盘扫描时返回值不同步的问题,建议使用protues进行变量的观察,方法如下:进入keil的调试状态,在想观察的变量上鼠标停止片刻,可以看到当前变量的地址(只对全局变量和静态变量这些程序运行是分配了固定地址的变量有效,所以在程序设计时可以采用临时将变量设置成静态变量的方法进行调试),如Led这个变量的地址为0x08记录下地址,打开protues的watch窗口,用添加地址的方法进行添加:,添加变量的地址0x08,选择要观察的cpu(Memory)和变量类型(Data Type)和显示格式(Display Format),然后写上变量的名字,

9、(注:如果是多字节数据类型,请勾选大端存储模式(Big Endian),至于其他cpu,请根据相应的数据手册指导进行设置),即可实时观察变量,此方法也适用于上个调试方法的变量观察。,关于程序的调试就介绍到这,具体不同的cpu的调试方法类似,这里不做过多的介绍二:虚拟串口的使用通过对虚拟的串口的设置,可以将任意两个串口(无论虚拟还是真实的)连接在一起,实现虚拟器件和真实器件的沟通,增强proteus对硬件的支持,下面我们通过一个例子说明实验代码:#include <reg51.h>/初始化串行口void csh()SM0=0;SM1=1;REN=1;TI=0;RI=0;PCON=0;

10、TH1=0xF3;TL1=0XF3;TMOD=0X20;EA=1;ET1=0;ES=1;TR1=1;void main()int i,j;char c;csh();while(1)TI=0;P0=c;SBUF=c;while(!TI);TI=0;for(j=0;j<25;j+)for(i=0;i<5000;i+);c+;void intrr() interrupt 4char temp;temp=SBUF;P2=temp;RI=0;功能介绍:通过串口不断的发送数据,用数码管显示发送内容,同时不断接受电脑com2口的数据,在数码管上显示出来,中间我用了虚拟和实际串口调试工具共同测试安装虚拟串口软件,注册后打开软件页面笔者笔记本没有物理串口,所以只是建立了两个虚拟串口并连接在了一起,选择com1和com2(读者可以自己设置,将任意两个串口连接在一起),点击add pair,然后运行点击proteus中的串口,设置波特率,停止位,数据位等信息如下:然后打开电脑上的串口调试工具:设置如上只是将com口设置为com1,打开串口等待数据,现在运行protues的程序,可以观察到电脑上的串口调试工具和protues的虚拟串口调试工具都收到了数据,通过虚拟的串口的帮助,我们突破了串口调试中

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论