第一次用proteus做单片机的模拟实验,由于proteus上默认只有设置汇编,所以结合keil μVision3编译代码,这样就可以用C语言编写(因为汇编不容易跨平台,而且我对它也不是非常数量,但是在这里要说的是,在必要的时候,在C中嵌入汇编会有很好的效用,所以汇编还是要有一定的功力的),用keil μVision3 做编译器,然后,编译后的十六进制代码用于proteus中模拟的单片机中,这样就可以做联合调试了。
我用的是Keil uVision3和proteus7.5 SP3,看了网上的教程之后,我下载了VDM51.dll文件http://ishare.iask.sina.com.cn/f/7363231.html?retcode=0//(网上说,也可以在proteus的安装目录中,ex装在C盘情况下:C:\\Program Files\\Labcenter Electronics\\Proteus 6 Professional\\MODELS\\找到),但是我没有。然后,在从网上下载个小文件vdmagdi.exe,这个文件好像一定要安装在Keil uVision3的目录下,我是在Keil uVision3目录下,又新建了一个文件夹(vdmagdi),这样就可以更好的区分开文件了。
第二步,网上还说:打开KEIL根目录下的 TOOLS.INI 文件,在[C51] 栏目下加入 TDRV3=BIN\\VDM51.DLL (\"Proteus VSM simulator\" ) ,其中“TDRV3” 中的 “3”要根据实际情况写,不能和原来的重复,否则会出现问题。比如你已经有了TDRV1-TDRV4,那么你就可以改成TDRV5,如果本省就有这个设置【TDRV3=BIN\\VDM51.DLL (\"Proteus VSM simulator\" )】 那就不用改了。但是,我发现安装我第一步的安装方法,似乎第二步不需要做了,因为已经有了这条记录了。不过,每个人的情况都有可能不同,所以在这里还是备注下。
第三步,打开Proteus 7.2,在菜单栏点击【Debug】在下拉菜单中选【User Remote Debug Monitor】,在该项前打勾; 打开KEIL,点击【菜单】【Project】【Option for Target xx】,在【debug】标签下选择右边的【use】单选,并在下拉框中选【Proteus VSM Simulator】仿真设备。
第四步,这一步,这可能是我自己的问题,我以为这样已经可以调试了,但是我再ISIS中点击运行仿真的时候,却出现了一下错误
显然,ISIS没有与keil μVision3进行连接,因为如果连接成功一定会在消息栏中说明程序文件载入成功等信息的。于是,我发现在菜单栏中,源代码选项中,选择设定代码生成工具中,有个问题——就是ISIS中有默认的编译规则,它是在本机上用proteus自带的汇编编译器编译的。这样的话就不能正常的取得keil μVision3编译的文件了,所以在在弹出的对话框中,如下图
一定要将禁止自动编译规则,选中,这样就不会进行自动编译了。
最后,那就是一定要把你的KEIL工程的所有文件和Proteus工程的所有文件放在一个文件夹里面,这样,你就可以开始他们的联调工作了,打开KEIL和Proteus
项目,点击Debug—start/stop debug session就开始进入联调,点击单步运行,这时可以看到原本没有动过的Protues现在开始根据你运行到的程序位置而显示不同的现象,说明联调已经成功了。
其实,也可以直接将编译好的十六进制文件,载入到ISIS中的单片机中,双击单片机原件,在弹出的对话框中,有个叫做Program FIle的文件域,让它选中你所需要的十六进制文件。
最后的最后,就克服困难继续前进!
因篇幅问题不能全部显示,请点此查看更多更全内容