单片机与proteus联机调试
- 格式:docx
- 大小:193.31 KB
- 文档页数:6
Proteus和Keil联调设置方法常用的有两种方法一keil c与proteus的离线联合使用1)先通过keil c51编辑,修改,编译源程序并生成HEX等单片能识别的文件,运行proteus 将HEX文件与原理图中的MCU进行绑定即可2)不论是离线还是在线方式的联合使用HEX文件是必不可少的,如果找不到HEX文件这不是软件出错,而是没有进行正确的设置进人KEIL开发环境打开一个工程文件,在选中“target1"的情况下选择project--->options for target "target1" 选择”output"选项卡在“create HEX file 前的方框里打钩,保存即可二KEIL C51与PROTEUS 7.0的联合仿真调试1)确保计、算机上安装有TCP/IP协议2)下这个软件proteus vsm a GDI Driver 就是vdmagdi.exe,装了后的变化是在KEIL文件夹下的TOOLS.INI文件中的[c51]字段的最后多了两行就是tdrv5=binvdm51.dll和book10=hlplvdmagd用于两软件的联接和帮助文档3)进入KEIL的开发环境建立一个工程文件在先中“TARGET"的情况下选择project-->options for target "target'4)在"debug"选项卡中选择左边的“use“,在下拉框中选”proteus vsm simulator",再点击"Setting"设置通信接口,在Host后面添上"127.0.0.1",如果你是用的不是同一台电脑,在这里添上另一台电脑的IP地址(另一台电脑安装Proteus).5)打开proteus lsls 在菜单栏中选择“debug-->use remote debug monitor"选中该项.6)注意,一定要把keil的工程和Proteus的文件放到同一个目录下(这里所说的Keil的工程指工程的目录,即Proteus的工程文件要和Keil工程的文件夹在同一层目录下).(注明:以上参考自/lihaoy/blog, 谢谢原文作者^_^)附:Proteus 7.2和Keil C51 V8.08 uvision 3的完整安装1.安装Proteus Version 7.2beta SETUP2.安装Proteus Update72SP2升级到SP2版本2.包括安装破解文件Labcenter_LICENCE.lxk3.安装补丁文件patch,注意里面在说要选择目录的时候要选择相应的目录4.安装汉化菜单:Proteus 7.01 SP2 ARES的汉化菜单放到……Program Files\Labcenter Electronics\Proteus 7 Professional\BIN目录下。
安装之前的准备:1、MDK4.12(Keil uVision 4)这个是KEIL最新版,至少也要用MDK4.0,之前的版本只能联调51,不能联调ARM。
2、Proteus 7.7 sp2这个是Proteus最新版,只有这一个版本两个联调仿真都成功了,之前的版本都不行,不是能联调51不能联调ARM,就是能联调ARM不能联调51。
3、vdmagdi.exe这个是一个联调的补丁,貌似只有一个版本。
上面3个软件网上都有下载,如果没有的也可以问我要。
安装方法:先安装1、2两个,再安装第3个。
设置方法:1、Proteus中的设置方法:勾选最后那个。
USE REMOTE。
2、Keil4 配置文件的设置方法:①、打开Keil的安装根目录,在根目录下有一个配置设置文件:tools.ini,用记事本的方式打开②、找到“[ARM]”,在代码的第7行就是,可以用“编辑==》查找”③、在[ARM]中找到“TDRV8=STLink\ST-LINKIII-KEIL.dll ("ST-Link Debugger")”然后在找到的这句代码后面粘贴上“TDRV9=BIN\VDMARM.DLL ("Proteus VSM Simulator")”④、把[ARM]下面第三行替换为“CPUDLL0=SARM.DLL(TDRV0,TDRV5,TDRV6,TDRV9)”也可以在括号里添加上“,TDRV9”⑤、找到[ARMADS],重复③和④中替换的地方。
说明。
这个配置的时候不要太死板,虽然③说粘贴上“TDRV9”,但如果已经有“TDRV9”了,就顺推到“TDRV10”“TDRV11”。
④、把[ARM]下面第三行替换为“CPUDLL0=SARM.DLL(TDRV0,TDRV5,TDRV6,TDRV9)”的时候,前面你粘贴的是TDRV几,就在后面补上几。
不要你粘贴的是TDRV11,这里还写TDRV9.。
这个就不多说了。
Keil和proteus联调可以更好的学习单片机和arm,我这个是针对对使用keil和proteus很熟练,但还不会使用联调来写的,有什么错误之处还望纠正指导,我也算是初学者,一点点经验,网上说的种种办法我试了一下,没有几个能用的,我这个都给好多朋友安装了,没有什么问题,只是软件有点大,上传不了,要不大家也可以用一用,可惜了
下面为截图,大家按照做就行了,我以arm的为例就行了,单片机也是差不多的第一步:keil的安装,不需要我赘述
keil的破解,点击keil licence creator,选-arm,v2,再点击generate,看图
生成
打开keil的licenc,看图
将keil licence creator产生的代码,复制到keil的new licence id code里,然后点击add lic 就可以了,现在keil就被破解了,使用不受限制,我建议keil不要汉化
第二步:安装proteus,请看下面的截图
第三步:proteus的破解我就不多说了,直接安装联调工具吧,我是用的是vdmagdi,网上有很多下载的,这里选下面的agdi drivers for uvision3,下一步
这个文件必须要安装在keil的文件目录下,看下图
,
这个选arm agdi drives,看图
接着就安装完了,剩下的就是设置参数了第四步:keil的设置,看图说话
好了keil 设置好了
第五步:proteus 的参数设置
第七步:加载文件
第八步,进行keil和proteus的联调把,尽情的享受其中无限的方便吧列说51单片机(C语言)
主编张义和、王敏男等、人民邮电出版社。
Keil与proteus完美结合教程Proteus 单片机仿真软件可与Keil或Pic的Mplab联接使用,单片机初学者的福音,有非常丰富的外围器件可供仿真使用简介:Proteus6.7是目前最好的模拟单片机外围器件的工具,真的很不错。
可以仿真51系列、AVR,PIC等常用的MCU及其外围电路(如LCD,RAM,ROM,键盘,马达,LED,AD/DA,部分SPI器件,部分IIC器件,...)其实proteus 与 multisim 比较类似,只不过它可以仿真MCU!当然,软件仿真精度有限,而且不可能所有的器件都找得到相应的仿真模型,用开发板和仿真器当然是最好选择,可是估计初学者有的可能性比较小吧?如果你在学51单片机,如果你想自己动手做做LCD,LED,AD/DA,直流马达,SPI,IIC,键盘,...的小实验的话,试一下吧,不会让你失望的!用51不管你是用汇编或是C编程当然要用keil啦,uvisoin3有不少新特性呢!使用keil c51 v7.50 + proteus 6.7 可以像使用仿真器一样调试程序,一般而言,微机实验中用万利仿真器+电工系自己做的实验板的实验都可以做得到吧!当然,硬件实践还是必不可少的!!!本方案只是在没有硬件的情况下让你能像pspice 仿真模拟/数字电路那样仿真MCU及外围电路。
另外,即使有硬件,在程序编写早期用软件仿真一下也不错的!需要Proteus6.7 SP3和keil c51 v7.50请到本站:下载。
本站提供的是完全解密版和专业版。
放心使用。
为了使大家能最快的进入keil c51 v7.50 + proteus 6.7仿真本站特别编写了本教程共享,希望对本站大力支持!以下文章 作者:■凉山州机电学校马正强1 Proteus介绍Proteus与其它单片机仿真软件不同的是,它不仅能仿真单片机CPU的工作情况,也能仿真单片机外围电路或没有单片机参与的其它电路的工作情况。
proteus与kill连调关于proteus和keil c51的联调1、在利用proteus进行单片机系统的仿真时,如果想要观察内存,寄存器、变量的值以及外围芯片的数据变化情况,可以在仿真运行时单击“帧进(单步)”或“暂停”按钮,然后再菜单栏的“调试”菜单中打开相应设备观察窗口进行观察。
如果要检测电路中某些位置的电压、电流、波形等信息,可以在电路中添加相应的虚拟仪器,如电压表、电流表、示波器等。
如果系统运行时添加的虚拟仪器没有显示,这时,同样应在“调试”菜单中将它们打开。
2、对于较为复杂的程序,如果仿真运行后没有达到预期效果,这时可根据需要对proteus和keil c51进行联合调试,联合调试之前需要先安装vdmagdi.exe (或vudgi.exe),该软件可到网上或者proteus公司的网站搜索下载。
联合调试时,可先打开proteus应用例程(不要运行例程),然后选中”调试“菜单中的”使用远程调试设备“选项,如下图所示。
这样使得keil c51能与proteus 进行通信。
4、完成上述设置后,再到leil中打开,proteus应用例程中的源程序项目文件。
选择菜单栏的“工程”---“为目标‘目标1’设置选项”命令,在弹出的对话框中选择“调试”选项卡,按照下图进行设置。
5、如果keil c51与proteus安装在同一台计算机中,右边的“seting”选项的内容保持不变即可,如下图所示,如果这两个软件没有安装在同一台计算机中,则需要跨机调试,那主机号与端口号需要根据具体情况进行修改6、完成上述设置后,在keil c51中运行程序时,proteus中的单片机系统也会跟着运行。
这是可以在keil c51中进行单步、跳过、运行到光标、运行到断点等调试,同时可以在proteus的单片机系统中跟踪观察运行结果。
但是并非所有的情况下都能很好的观察运行效果。
例如进行按键扫描时,单步跟踪就不能够被很好的跟踪,因为在proteus中敲击按键后,在到keil c51中继续检测按键时,这是按键已经被释放了,自然也就就观察不到按键的实时状态。
Proteus8与Keil4的联调首先安装vdmagdi软件,然后再进行以下设置:下载地址:/s/1i30ultb在Keil软件上单击“Project菜单/Options for Target”选项或者点击工具栏的“option for ta rget”按钮,弹出窗口,点击“Debug”按钮,出现如图所示页面。
在出现的对话框里在右栏上部的下拉菜单里选中“Proteus VSM Monitor-51 Driver”。
并且还要点击一下“Use”前面表明选中的小圆点。
再点击“Setting”按钮。
设置通信接口,在“Host”后面添上“127.0.0.1”,如果使用的不是同一台电脑,则需要在这里添上另一台电脑的IP 地址(另一台电脑也应安装Proteus)。
在“Port”后面添加“8000”。
设置好的情形如图所示,点击“OK”按钮即可。
最后将工程编译,进入调试状态,并运行。
Proteus的设置进入Proteus的ISIS,鼠标左键点击菜单“Debug”,选中“use romote debuger monitor”,如图所示。
此后,便可实现Keil 与Proteus连接调试。
最后必须右击单片机加载hex文件,开始调试。
【附加总结类文档一篇,不需要的朋友可以下载后编辑删除,谢谢】2015年文化馆个人工作总结在XXXX年X月,本人从XXXX学院毕业,来到了实现我梦想的舞台--XX区文化馆工作。
在这里我用艰辛的努力,勤劳的付出,真诚而认真地工作态度认真的做好自身的每一项文化馆相关工作,取得了较为良好的工作业绩。
随着一场场活动的成功举办、一台台戏剧的成功出演,在这个带有着梦想和希望的舞台上,转眼之间我已在这里渡过了XX年的青春事业,我亦与舞台共同成长,逐步由一名青涩的毕业生,历练成为了今天的XXX。
梦想在于不断坚持,未来的旅途在于不断的前进,在这个承载着梦的舞台上,我持以坚定的信心和丰富的工作能力与工作经验,一步一步超前迈进着。
Proteus和 Keil 仿真联调在单片机课程教学中的应用邵春声【摘要】以AT89C52单片机控制的流水灯电路仿真联调为例,说明了Proteus 和Keil软件在单片机课程教学改革中的应用。
利用2种软件仿真联调的方式进行单片机课堂教学,增加了教学的直观性,激发了学生学习单片机的兴趣,增强了学好单片机的信心,教学质量也有了显著提升。
%This paper discusses the application of the Proteus software and the Keil software in the single chip microcomputer (SCM) course teaching reform,taking water lamp simulation alignment with AT89C52 single chip microcomputer control circuit as an example.The SCM classroom teaching by using two software alignment in simulation not only made the teaching itself more intuitive,also inspired students′learning inter-ests,built upstudents′confidence and finally improved the teaching effect.【期刊名称】《常州工学院学报》【年(卷),期】2015(000)003【总页数】3页(P75-77)【关键词】单片机教学;Proteus;Keil;仿真联调【作者】邵春声【作者单位】常州工学院电子信息与电气工程学院,江苏常州 213002【正文语种】中文【中图分类】G642“单片机原理及应用”是一门知识性、实践性和综合性极强的课程,所需学习的概念多、图形多、案例多、内容抽象,编程语言为低级语言,枯燥且难以记忆。
keil与protues联调1、安装keil 和protues;2、把VDM51.dll文件复制到C:\Keil\C51\BIN文件夹下。
(目录名都是默认的,你可以根据你实际安装的目录进行复制。
)3、打开Keil 根目录下的TOOLS.INI 文件,在[C51] 栏目下加入TDRV9=BIN\VDM51.DLL ("Proteus VSM Monitor-51 Driver" ) ,其他根据实际情况写,不要和原来的重复。
(我的这个文件中已经有了从TDRV1到TDRV8, 所以我用的是TDRV9)[UV2]ORGANIZATION="微软中国"NAME="微软用户", "zz"EMAIL="**********"BOOK0=UV4\RELEASE_NOTES.HTM("uVision Release Notes",GEN)[C51]PATH="d:\Keil\C51\"VERSION=V9.00BOOK0=HLP\Release_Notes.htm("Release Notes",GEN)BOOK1=HLP\C51TOOLS.chm("Complete User's Guide Selection",C)TDRV0=BIN\MON51.DLL ("Keil Monitor-51 Driver")TDRV1=BIN\ISD51.DLL ("Keil ISD51 In-System Debugger") TDRV2=BIN\MON390.DLL ("MON390: Dallas Contiguous Mode")TDRV3=BIN\LPC2EMP.DLL ("LPC900 EPM Emulator/Programmer")TDRV4=BIN\UL2UPSD.DLL ("ST-uPSD ULINK Driver")TDRV5=BIN\UL2XC800.DLL ("Infineon XC800 ULINK Driver") TDRV6=BIN\MONADI.DLL ("ADI Monitor Driver")TDRV7=BIN\DAS2XC800.DLL ("Infineon DAS Client for XC800")TDRV8=BIN\UL2LPC9.DLL ("NXP LPC95x ULINK Driver")TDRV9=BIN\VDM51.DLL ("Proteus VSM Monitor-51 Driver" ) RTOS0=Dummy.DLL("Dummy")RTOS1=RTXTINY.DLL ("RTX-51 Tiny")RTOS2=RTX51.DLL ("RTX-51 Full")LIC0=LSX63-ABS20-C5CT5-GC2ZT-97MG5-15RTI4、keil的设置。
Keil 与Proteus仿真问题总结1、Keil与Proteus联调8051单片机的时候,效果相当于添加.hex文件到单片机后运行;Keil下关于off-chip code memory 、off-chip Xdata memory的设置对调试没有任何影响。
如下图:使用了T80C31,内部没有ROM,外部ROM也不设置,同样可以仿真,RAM也一样。
如果选择的是AT89S51,内部ROM只有4K,而编译的程序有6K多,设置如下图示:就可以仿真运行,不管是Keil自带的Simulator,还是与Proteus联调。
2、如果Proteus对51单片机的设置如下图示:Simulate Program Fetches属性选择了Yes,则Keil与Proteus无法联合调试;若选择了No,则不用设置Program Files,Keil与Proteus一样可以联合调试,效果就相当于为Program Files添加了.hex文件一样。
上图示CPU为80C31,内部没有ROM,“{ROM=0} ”,但照样可以添加.hex文件,而且添加的.hex文件大小为6K多。
只要Simulate Program Fetches属性选择了No,则不管电路有没有外部扩展ROM,一样可以仿真运行。
而如果Simulate Program Fetches属性选择了Yes,那么即使外部ROM连接正确,但是不管怎么设置属性EXTROM、EXTRAM、Code memory map、Data memorymap的值,都不能仿真。
如果在Proteus中,外部RAM设置到了8000-FFFF这个地址段,那么需要在程序中指定地址,否则读取不到外部RAM,仿真失败。
因此一般把外部RAM的地址分配到0000开始的地址空间。
3、关于仿真外部程序存储器的问题,主要要了解清楚8051Model的内部构架规则。
摘抄英文帮助如下:By default, all external data memory accesses are fully modelled. That is to say that each external data memory cycle involves simulating the numerous transitions of ALE and the P0 and P2 port pins. A typically cycle will involve around 50 pin state transitions is thus vastly expensive in terms of simulation time.In contrast, all program memory cycles are simulated internal to the 8051 model - that is to say that the program bytes are looked up in a memory buffer internal to the chip and no pin-state transitions are simulated. This is the case irrespective of the amount of internal ROM available on a particular 8051 part, and is done in order to achieve reasonable simulation speeds. This optimisation can be disabled by specifying:DBG_FETCH=FALSEFor applications which make extensive use of external data RAM, two further optimisations can be specified.DA TARAM PropertyThis specifies regions of the external memory map which can be treated as RAM and simulated internally to the 8051 model. A typical example would be:DA TARAM=0000-7FFF,C000-FFFFThis would specify two regions of external data memory.CODERAM PropertyWhere regions of the external memory map are wired in a Von-Neumann configuration (external data memory and code memory are the same), this can be specified as follows:CODERAM=0000-7FFFAny external memory writes to the region 0000-7FFF will then 'write through' to the internal program memory buffer of the model and be 'seen' by subsequent instruction fetches and MOVC instructions.4、关于8051Model的所有属性,摘抄如下:The 8051 model supports the following properties:Property Default DescriptionPROGRAM-Specifies one or more program files to be loaded into the model's internal code memory. The files can be either Intel hex files or OMF51 absolute object module formatfiles. Use commas to separate multiple file names. See Specifying The Program File for more information.CLOCK 1.2MHz Specifies the clock frequency of the processor. For reasons of efficiency, the clock circuitry is not simulated, and the clock rate of the processor is determined solely by this value.DBG_FETCH FALSE If TRUE, causes the model to simulate external program fetches.This mode of operation is extremely slow, but will allow you to test external program memory decode circuitry.DA TARAM-Specifies regions of the memory map that correspond to external data RAM. This allows for much faster simulation of external memory accesses. See Modelling the Memory Map for more information.CODERAM-Specifies regions of the external memory map that are shared between code and data (i.e. von-neumann decoding). See Modelling the Memory Map for more information.5、6、。
Proteus 与kilec51 联机调试入门实验昨天开始搞kilec51 与Proteus 联机的调试,首先软件得自己从网上下下了你的还会装,开始下了哥kile 2.0 的,进行联机调试,可就是不行;问题是kile 运行中不会出现startup.a51 这个东东好郁闷,换到3.0 就行了;应该是我下的那个版本不行;今天晚上终于把联机小实验调通了,以后就可以全心全意的进行单片机仿真了;以下是我的实验,至于具体Proteus 与kilec51 的具体设置,咱会在下一篇说明:(好高兴)这是在Proteus 中做的简单图用单片机AT89C51 1K 电阻LED-RED 5V 电源做成的;相信对于Proteus 这是一张简单的图,但是这个是可以仿真的,从电路上我们知道只要给P2.7 口低电平二极管就会发光;所以该试验就是通过联机用程序实现二极管的亮;这张图命名为led.dsn,保存在test 中;下面开始做kile 部分的程序了:启动keil 如下:选择上方的project 菜单选择New Project,保存在test 文件夹中,命名为ledc51。
弹出cpu 选项,选择Atmel 中的At89c51 在弹出窗口选择是;保存为led_demo.c 左边的Source Group1 文件夹图标上右击,在弹出的菜单中选择add files togroup source group1 ;c 程序加进来了,马上就要生成proteus 中需要的文件了。
我们先配置一下keil:选中目标target1,右键选中options for target target1 会出现下面窗口:我们只有选中creat hex files 这个是重点,因为.hex 的文件才是我们要忘单片机中烧写的东东,所以要生成;运行调试出现下面图形:见到没有创制hex 文件成功;下面激动人心的时候要到了:。
大
Keil 是很优秀的单片机程序设计IDE平台,Proteus 则是优秀的电路分析与PCB设计软件,
可以很直观地看到电路的运行状态。
它们经过简单设置后可以联合调试程序和电路了,
对于使用实物电路调试不方便的开发人员,特别是学生,这无疑是非常可喜的事。
现在就以一个简单的范例来直观地说明其联合调试的方法:
第一步:软件安装。
Proteus 与 Keil 的破解安装包网上到处都是,Keil uvisoin3 和 Proteus 6 以上的版本都行。
按照安装包里面的说明将软件安装程序、破解包、汉化包、Kei驱动、第三方库等依次安装上。
这个不多说。
第二步:keil设置。
启动keil,打开一个工程(test.Uv2)。
点击工具栏的"option for target"按钮,在出现的
对话框里点击"Debug",在右栏上部的下拉菜单里选中" Proteus VSM Simulator",还要点击一下Use前面的小圆点。
再点击"Setting"设置通信接口,在Host后面添加"127.0.0.1",在Port后面添上"8000"。
点击"OK"按钮即可。
最后把工程编译一下。
第三步:Proteus设置。
运行Proteus的ISIS,鼠标左键点击菜单"DEBUG",选中"use romote debuger monitor"。
打开一个工程(test.DSN)。
注意,一定要把keil的工程和Proteus的工程文件放到同一个目录下(这里所说的Keil的工程指工程的目录,即Proteus的工程文件要和Keil工程的那个文件夹在同一层目录下)。
好了,我们现在就可以试试我们的成果了!打开keil,按Ctrl+F5进入调试界面或者点击工具栏的调试按钮。
如果不能进入调试界面,可能设置有误,按照上面的步骤再重新设置一下。
进入了调试界面,按F5或者点击工具栏的调试按钮,全速运行,
再看看ISIS,有什么变化了吗?你可以调整一下你的屏幕,让两个程序同时出现显示器上。
下面是例程C语言程序,里面包含51单片机精确定时的程序
〔看到很多初学者用 for 循环定时就发毛,还有很多教程居然也使用循环来定时,
这种程序就不应该出现在教程里面〕。
Proteus里面的电路图就只有上图中你看到的那点儿。
#include<AT89X52.h>
#define LED P1
typedef unsigned int Uint16;
typedef unsigned char Uint8;
/*-------------------------------------
功能:完成定时器0初始化工作,使用
延时函数 WaitMS 之前需调用
此函数完成初始化工作
参数:无
返回值:无返回
--------------------------------------*/ volatile Uint16 timer0_times;
void Timer0Init()
{
IE |= 0x82;
TMOD |= 0x02;
TH0 = 0x06;
TL0 = 0x06;
TR0 = 0;
}
/*------------------------------------- 功能:定时器0中断处理函数
参数:无
返回值:无返回
--------------------------------------*/ void Timer0() interrupt 1 using 1
{
timer0_times ++ ;
}
/*------------------------------------- 功能:完成定时工作(12MHz)
参数:time = 延时时间,单位 = 毫秒
返回值:无返回
--------------------------------------*/ void WaitMS(Uint16 time)
{
Uint16 n_time = time * 4;
if(time == 0)return;
timer0_times = 0;
TH0 = 0x06;
TL0 = 0x06;
TR0 = 1;
while(timer0_times < n_time);
TR0 = 0;
}
/*------------------------------------- 功能:控制LED闪烁
参数:times = LED闪烁圈数
返回值:无返回
--------------------------------------*/ void LedFlicker(Uint8 times)
{
volatile Uint8 i,j,value; for(j=0; j<times; j++)
{
value = 0xFF;
for(i=0; i<8; i++)
{
value <<= 1;
LED = value;
WaitMS(100);
}
for(i=0; i<8; i++)
{
value <<= 1;
value |= 0x01;
LED = value;
WaitMS(100);
}
}
}
void main(void)
{
Timer0Init();
while(1)
{
LedFlicker(10);
}
}。