声明:本教程是根据网上例程与本人实际使用经验改编而且,转载请注明出处!
前段时间在网上找人调试了一个有关51单片机用SPTA算法控制三个步进电机加减速的程序,在调试过程中用到了Keil的仿真功能,由于本人也是之前从未接触过这个类似示波器的仿真功能,特意向帮我调试程序的大神请教了这一功能的使用,并查找相关资料,终于掌握了这一技能,在此特意跟大家一起分享一下。 菜鸟之作,高手请勿口水!
本人使用的Keil版本是 keil UV4 V9.52 ,个人感觉还是挺好用的,版本也算是比较新的了!所以我就在这个版本的基础上跟大家一起来学习一下Keil的这项功能吧!
首先,让我们打开编写好的程序,然后点击“Option”按钮,点击“DeBug”选项:
打开后的界面如下图所示,选中红色框内的选项(注意勾选:Limit Speed to Real-Time):
既然我勾选了“Limit Speed to Real-Time”,那么我们还需要在“Target”选项里设置一下仿真时的晶振频率,由于本人使用的是11.0592MHz的晶振,那么在此处填写11.0592即可,用户可以根据自己实际使用情况设置:
以上选项设置好后,我们就可以来编译程序了!编译后,会生产.hex的文件,当然,这个是下载到单片机里时才需要的文件,仿真的时候可有可无,但是编译肯定是需要!
文件编译好之后,那么我们就可以来进行仿真了!点击"Debug"工具:
出现如下界面,我们再点击“Analysis Windows”工具:
打开“Analysis Windows”工具后,会出现如下界面:
这个时候,我们需要设置一下需要查看的IO口,点击"Setup"选项,出现设置界面:
由于在本程序中,我所使用到的IO口如下所示:
那么接下来我们就来开始仿真时候需要用显示状态的IO口吧!
如下图所示,在"Current Logic Analyzer Signals"中新增上图用到的几个IO口,此处只需要设置端口号即可,不需要详细设置某一位,具体设置某一位是在下面的属性栏中设置的。
在需要设置具体某一位时,我们如上图所示的属性栏中如下设置:
“Display Type”选择“Bit”,即按位显示;
“Color”栏里选择想要显示的颜色,用于跟其他位区分,便于观察;
“AndMask”里填写具体要显示的位,如:P4&0x40,按位与操作,取某一位,此处选择的是第6位;
“Shift Right”即将P4&0x40后的值右移多少位,在最低位得到需要显示的位,此处P4&0x40的值是0x40,即二进制的:0100 0000,那么我们需要右移6位才能将P46移动到最低位显示!
其他IO口的设置方法一下,在此我就不再赘述了,大家可以自己动手尝试一下!
需要观察状态的 IO口都设置好了,那么我们就来开始运行吧!按“运行”按钮或者按“F5”键,仿真程序变开始运行,得到如下所示的效果:
是不是很直观呢?然后我们还可以像示波器一样放大或者缩小看运行的波形效果哦,具体操作是这样的:鼠标点击显示区域,然后用鼠标滚轮前后滚动,即可放大或者缩小显示单元的大小。下图所示就是放大后的三个电机同时加减速的波形图:
怎么样,这个功能是不是很好用呢?连示波器什么的都省了!如果你心动了、迫不及待了,那么还等什么?感觉动手操作起来吧!