天天看点

keil与proteus联调及仿真调试

keil与proteus联调方法如下

1.把VDM51.dll(没有的请到网上下载) 复制到proteus安装目录的MODELS文件夹下,

我的是C:\Program Files\Labcenter Electronics\Proteus 7Professional\MODELS\目录下,

再复制一个到C:\keilC\C51\BIN目录下(keil的安装目录),

2.修改keil安装目录下Tools.ini文件,在[C51]字段加入

TDRV9=BIN\VDM51.DLL ("Proteus VSM Monitor-51 Driver"),并保存。

注意:不一定要用TDRV8,根据原来字段选用一个不重复的数值,如“TDRV10”也可以。

keil与proteus联调及仿真调试

Tools.ini文件截图

3.打开proteus,画出相应电路原理图。在proteus的Debug菜单中

选中“use remote debug monitor”。(英文菜单)

keil与proteus联调及仿真调试

4.进入KEIL的project菜单option for target '工程名'。在DEBUG选项中

右栏上部的下拉菜选中 Proteus VSM Monitor-51 Driver。在进入seting,

如果用同一台机IP名为127.0.0.1,如不是同一台机调试则填另一台的IP地址。

端口号一定为8000。注意:可以实现在一台机器上运行keil,另一台中运行

proteus进行远程仿真调试的。

注意:8000端口可能会和酷狗的下载端口冲突,此时修改酷狗下载端口。

keil与proteus联调及仿真调试
keil与proteus联调及仿真调试

5.在proteus中选择Debug,“Start/Restart Debugging”,如果在KEIL的OutputWindow的窗口中出现“VDM51 target initialized.”说明Proteus连接成功了;在keil中进行debug,如进行单步、断点等;同时在proteus中查看调试的结果。





Keil5基本的仿真调试操作:

首先点击魔法棒

keil与proteus联调及仿真调试

然后输入你板子上所用的晶振,然后进入debug:

keil与proteus联调及仿真调试

然后选择 Use Simulator,然后点击OK:

keil与proteus联调及仿真调试

然后点击调试按钮:

keil与proteus联调及仿真调试

然后就会出现调试页面:

keil与proteus联调及仿真调试

我这里是已经把汇编窗口给挪到右侧了,你第一次打开可能是在屏幕的上侧,你只需要用鼠标点住你需要移动的窗口,然后拖到你想让他去的位置就行了。

仿真调试页面最左边显示的是单片机内部的一些寄存器的当前值和系统信息,右边是keil将C语言转换成汇编的代码,中间就是我们编写的C程序了。

在C语言和汇编语言窗口都有一个黄色的箭头,这个箭头代表的就是程序当前运行的位置。

在调试页面上方的工具栏中,有几个按钮:

keil与proteus联调及仿真调试

第一个标有RST字样的是复位,单击之后,程序就会跑到最开始的位置运行;紧接着第二个按钮是全速运行,单击之后程序就会全速跑起来;再然后第三个按钮是停止按钮,当程序全速运行起来时候,单击停止按钮程序就会立即停止,可以观察程序运行到哪里去了。

单击复位之后,可以看到C语言程序的窗口左侧有灰色或者保持着原来的颜色,其中有灰色的地方是我们可以设置断点的地方,至于为啥有些地方不能设置断点呢,主要是因为keil具有程序优化的功能,如果我们想在任何地方都可以设置断点的话,我们需要更改工程选项里的优化等级,把等级设置为0即可,即高速keil不要对程序进行优化。其他的按钮就是关于子函数或者循环是否进入的操作了,具体自己可以试试看。

在最左侧的框内,sec显示的就是单片机运行了多长时间:

keil与proteus联调及仿真调试

通过设置断点和查看sec可以计算出软件延时的大概时间。

如果我们想查看某一个变量或者寄存器的值的话,我们可以点击view:

keil与proteus联调及仿真调试

这样在下面的窗口就会出现watch页面,在里面的name选项里面输入你想要查看的变量的名字或者寄存器的名字,随着程序的运行,我们就可以实时看到他们的值的变化:

keil与proteus联调及仿真调试

继续阅读