单片机仿真器和仿真环境Word文档下载推荐.docx
《单片机仿真器和仿真环境Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《单片机仿真器和仿真环境Word文档下载推荐.docx(14页珍藏版)》请在冰豆网上搜索。
在数字电路中,电压信号只有两种情况,高电平和低电平,用数字来记录就是1和0。
单片机内部的CPU,寄存器,总线等等结构都是通过1和0两种信号来运作的,数据也是以1或者0来保存的。
单片机的输入输出管脚,也就是IO口,也是只输出或识别1和0两种信号,也就是高电平和低电平。
当单片机输出一个或一组电平信号到IO口后,外部的设备就可以读到这些信号,并进行相应操作,这就是单片机对外部的控制。
当外部一个或一组电平信号送到单片机的IO口时,单片机也可以读到这些信号,并进行分析操作,这就是单片机对外部设备信号的读取。
当然实际的操作中,这些信号可能十分复杂,必须严格地按照规定的时间顺序(时序)输入输出。
每种设备也都规定了自己的时序,只要都严格遵守,就可以控制任何设备,做出只要你想象得出的任何事情。
您可能会再问,我如何让单片机去控制和分析外部设备呢?
答案是程序,您可以编写相关的程序,并且把他们烧写到单片机内部的程序空间,单片机在上电时,就会一步一步按照您写的程序去执行指令,做您想做的事情。
在51标准芯片中,有32个输入输出IO,分为4组,每组8个,分别为P0口,P1口,P2口,P3口。
P1口的8条脚就用P1.0至P1.7表示,其余类似。
51就是用这32个口来完成所有外部操作的。
对于51的内部结构,如果您已经了解,那是最好;
如果不懂,也可以先放下,在完成了本教程开始的几个章节之后,您就会大有兴趣,自己去寻找资料阅读了。
当然,如果您希望成为一个优秀的单片机开发程序员,还是必须熟悉单片机的内部结构及工作原理,切不可偷懒!
在这一章,您将用程序去控制一个LED发光管的亮和灭。
你应该知道,LED发光管在通过一定电流时亮,不通电就灭。
为了不让LED通过太大的电流把它烧坏,我们还要串上限流电阻。
51的IO是弱上拉的方式,在输出高电平时,只能输出几十微安的电流到地,而在输出低电平时,VCC电源可以输入几十毫安的电流到IO。
一般LED需要10毫安左右电流点亮,我们就将LED接在电源VCC和IO口之间,中间串上电阻,当IO输出低电平时,灯就亮了,反之,灯就灭了。
我们在这个程序里要控制的是P1.0。
请参考一下我们将要使用的试验板的电路图,。
图1,试验电路图
图2:
试验板外观图
下面介绍一下仿真器和仿真环境。
在实际的单片机学习和开发中,你可以用仿真器模拟一个CPU芯片,让它按照您编写的程序工作,并且进行调试,一步步排除程序的bug,使程序正常工作。
程序工作正常后,您就可以用烧写器将您编写的程序烧入购买来的单片机芯片中,让它自己去运行了。
要使用仿真器,还得有一个编译调试的环境,这个环境是在计算机上运行的,我们就在计算机上编写和调试程序,计算机和仿真器有连接,仿真器中的各种数据和程序,都可以从计算机上观察到,并可以观察变量,写入变量的值,单步调试程序,在程序中设置断点调试,全速运行,停止程序运行,等等操作。
您应该也可以在上面的网页中找到下载破解版本的keilc51的办法。
中国法律规定,在学习和研究工作中使用有版权的软件是可以的,但是,如果您开发产品时,建议您还是去购买一个正版的软件。
下面是DX516仿真器的使用介绍:
1。
安装
将仿真器和试验板按图3组装好,串口线按照正确方向插入仿真器,另一端和电脑串口连接,请尽量使用计算机的硬串口。
仿真器底座左边的跳线,请放在EMB这边,以进入仿真状态。
如果放在RUN这边,将会进入脱机运行状态。
晶振选择跳线请放在IN这边,以使用仿真器内部晶振,内部晶振更加可靠。
如果放在OUT这边,则会使用外部的用户板晶振。
图3仿真器插在试验板上
2。
电源
因为用户板使用电流不大,可以使用usb取电,usb最大电流可以提供500mA,将usb取电板插入电脑的usb口中。
(实际应用中,如果用户板使用电流超过100mA,我们就建议使用外部电源)
3。
启动
在仿真器上电,或者按一下仿真器上面的按钮时,仿真器会发出“嘀-”,表示仿真器正常启动。
同时仿真器上面的灯闪烁一次,表示进入正常仿真状态。
4。
仿真设置
第一个设置:
C51用户请在您的代码的main()函数前面,加上一句:
charcodedx516[3]_at_0x003b;
如果以上设置你没有做,在装载过程中,仿真器会发出“嘀嘀嘀”的三声短声报警,这时的仿真结果将可能不正确。
在我们的例程中,这句话已经加入了。
这句话并不会影响程序的工作,可以一直保留。
第二个设置:
请在硬件仿真设置选项中,选择serialinterrupt,在前面打勾。
如果以上设置你没有做,在装载过程中,仿真器会发出“嘀-”的一声长声报警,这时的仿真结果将可能不正确。
其余设置:
请选择usekeilMonitor-51Driver,这样才会使用硬件仿真
请选择loadApplicationatstart,在启动时直接装载程序
请选择Gotillmain,装载后直接运行到main函数
请在硬件仿真设置选项中,选择115200bps波特率,所有cache都可以不选,或者只选cachecode。
同时请选择正确的串口号。
图4仿真设置
好了,现在可以开始做试验了,我们打开已经建立好的工程和编写好的程序试验。
顺便还会学习一下程序调试的技巧。
至于如何建立一个新工程,请参考C51的帮助文件,或者自己摸索一下。
请双击lessoncode01目录下的lesson1.uv2,打开后界面如下:
图6:
程序界面
这个界面是uV3的,和uV2是一样用的。
点一下上图第三排第2或者第3个按钮(您的编译器按钮位置不一定在那个位置,自己找找),就可以看到编译结果了。
上面显示是0errrs,0warnings,这是最佳的编译结果,如果有error,则无法进行下一步仿真,如果有warning,一定要尽量消除,确实无法消除的,也要确认不会对程序造成影响,才进行下一步的仿真。
在编译结果中,我们还可以看到有data,xdata,code等用了多少字节的报告,要注意您的单片机中是否有这么多的资源,如果不够,将来烧片运行时就可能出现问题。
比如AT89C51的程序空间是4K,xdata如果没有外扩就是0个,data是128个。
超出这些范围,程序就不能在AT89c51中运行。
不同的芯片有不同的容量,如SST89E516RD就有64K程序,内部768字节XDATA,还有256个字节的data。
我们的例程中肯定都考虑了这些了,肯定不会超出,因为DX516仿真器是和SST89E516RD有同样的容量的,将来自己开发时就要注意了。
下面我们故意把第9行的P10写成P11,点编译,因为没有预先定义P11,所以就报告错误了,如下图:
双击一下错误报告的那一行,窗口就也会跳到这一行,方便您进行修改。
好了,现在请把错误改回去,再编译一次,出现报告正确了以后,下面开始仿真了。
点一下第二行第5个一个放大镜里面一个d字母的按钮,就可以进入仿真了,仿真器要事先连接好哟。
进入仿真后要退出仿真环境也是点这个按钮。
注意,等会如果程序在正在全速运行时,仿真环境是不能直接退出的,得先点停止运行后,再点仿真按钮才可以退出。
点进入仿真按钮,程序开始装载,PC自动运行到了main()停下,并指向了main()函数的第一行。
下面是进入了仿真环境的截图:
再顺便把调试界面上的按钮介绍一下:
图5:
按钮说明
进入仿真窗口后,如果出现的不是前面的源代码窗口,而是夹有反汇编代码的窗口,直接关掉这个窗口就会
恢复到代码窗口。
下次进入也会直接进入到源代码窗口。
现在先试验单步,点单步(两个单步都可以,一般点单步跨过)。
可以看到灯亮了。
PC指针也指向了下一个
程序行。
图:
照片,灯亮
再点一下单步,PC又走下一步,灯灭了。
再点一次,PC走到挂起的程序行了,继续点仍然在这一行。
这句指令其实就是使程序不断地跳到自己这一
行,别的什么也不做。
一般称作程序挂起。
一般的实际应用中的程序是不会挂起的,一般是在main函数里做一个大循环,程序如下:
voidmain(void)//主程序
{
while
(1)
P11=0;
//亮灯
P10=1;
//灭灯
}
请将main函数程序改为上面的代码,我们下一步将试验断点的操作。
编译后结果如下:
进入仿真后
可以看到下面的提示窗口中显示:
“connectedtoMonitor-51V.DX”,后面的V.DX就是已经连接到仿真器的提示了。
V.DX是大虾仿真器特有的标识。
在第15行双击一下,可以看到程序行左边出现了一个红方块,这就是设置断点,再双击一次,断点就取消了。
如果程序在全速运行的过程中遇到断点,就会自动停下来给你分析。
注意在进入仿真后,并且程序是停止状态时,才可以设置或者取消断点。
设置了断点
现在点全速运行,可以看到程序在断点处停了下来,并且由于前一句指令刚刚执行了点灯,所以这时灯是
亮着的。
现在在第14行设置断点,并且取消上一个断点。
设置了另一个断点
现在点全速运行,可以看到程序在断点处停了下来,并且由于刚刚执行了灭灯,灯是灭着的。
好,现在试验全速运行和停止。
把断点取消,再点全速运行,可以看到灯是亮着的,但是不是很亮,这是由于程序是循环的,亮灭交替进行,亮的时间并不是全部的时间。
现在点停止,可以看到程序停止了,重复几次进行全速和停止,可以发现每次停止的地方不一定是同一位置。
这一课就先结束了,我们学习了如何点灯及一些基本的编译和调试操作,下一课将学习如何使LED闪烁,和更多的调试方法,和如何查看运行状态和设置内部寄存器的值。
课后作业:
改为第2个LED灯(P1.1)做完本章的试验。