原创 自制Monitor-51仿真器

2009-4-22 17:21 7702 11 12 分类: MCU/ 嵌入式

51单片机是很适合初学单片机的人学习的,一则其结构和原理相对于其他单片机而言要简单些,二则现在国内关于51的书籍等学习资源也是很丰富的。


初学单片机的人可以在动手自己制作的过程中得到到动手能力的锻炼,而且往往动手过程要比只坐在那里写程序而言更为有趣味些。尤其是这个过程中往往多少经历些失败挫折最终获得成功。


学单片机呢,仿真器往往是最为让人着迷的了,因为它可以帮助人更好理解和学习程序知晓程序的运行程序的结构,并能从中获得更多成功的喜悦---亲眼一步一步地看到自己程序的运行,而自制仿真器也是一件很有挑战和好玩的事了。


自己也亲手做过51和AVR单片机的仿真器,这里先介绍51单片机的Moniter-51仿真器,能在Keil编译环境中对51单片机仿真。


下图为用万用板焊的Monitor-51仿真器,由于不是做板焊的,多少看起来是有点粗糙了。Monitor-51https://static.assets-stash.eet-china.com/album/old-resources/2009/4/22/a3b44d1c-3f92-4adf-b817-346e02a296e5.rar制作的资料包括电路图和调试程序等。


其实光是焊好还并不代表好使,之后的软件配置和烧写过程还颇费些力气的。


7d5a0e1e-a992-4fdc-983e-691a53c0e01e.jpg                                                              


下面就介绍在XP系统中利用Keil编译器的仿真器配置文件INSTALL.BAT来生成自己做的仿真器所需要的配置文件。这个文件在\Keil\C51\MON51中,同意文件夹下还有INSTALL.A51和MON_BANK.A51,这两个文件是Moniter-51的资源配置文件,用户需要修改相关的参数后才能使得仿真器正常运行。


首先由“开始”-->“运行”-->“CMD”进入XP系统的DOS状态,在进入提示界面光标闪烁处键入“CD  C:\Keil\C51\MON51 ”(其中C:\为Keil所在的硬盘,可以根据你自己的电脑所安装的路径修改)然后敲”回车“进入MON51所在的文件夹。


然后在下一行的光标闪烁处键入”install.bat 0 7f 0"再敲回车,中途按提示按一次任意键就OK了(其中参数0 7f 0 是可更改的,需要根据自己的仿真器的电路来设置。


第一个0所在参数是用于设置单片机串口相关的参数,为0~12的正整数;


7f所在参数用于指定Moniter-51监控程序的外部存储单元的页号,取值0x00~0xFF,如果是用内部的RAM(比如说内部有大容量的RAM的单片机,则硬件电路上不用外扩RAM[62256],在该项配置为内部的RAM就可以了。


第二个0所在参数用于设定监控程序代码在程序存储器的起始页,取值0x00~0xF0之间的十六进制数,缺省值为0x00;


另有BANK参数是可选项可不写,用于为代码区分组的应用程序的安排,可通过INSTALL.A51来修改)如下图所示:


点击看大图


点击看大图


执行完上述的操作后就会在INSTALL.BAT所在的文件夹中生成一个MON51.HEX文件,将其用烧写器烧写到仿真器的仿真控制器(一片51单片机芯片中,比如89C51或者52S系列如AT89S52后就完成仿真器部分的工作了。INSTALL.A51文件中的内容如下图所示:


点击看大图


可以修改PC机与仿真器之间的通信波特率,通常为9600bit/s。


接下来就是设置KEIL软件中仿真相应部分(对于每一个工程文件都需要重新进行以下设置,同一个工程下一次运行时也应该检查以下的设置项是否正确):


点击下图中红框处:


7e414c9e-0fd9-42ab-bdeb-9b17aabd80eb.JPG在弹出的对话框中修改以下标签:


1.”Target“中修改晶振频率为11.0592MHz


点击看大图


2.在”C51“标签中设置中断向量起始地址为0x8000点击看大图


3.在”BL51 Locate”标签的Code键入“0x8000”


点击看大图


4.在“debug”标签中选中“Use keil monitor-51 driver”:


点击看大图


5.鼠标单击“Setting”,根据自己电脑的串口选择Port:


点击看大图


6.选中“Load Appliaction at Start”,再选中“Go till main()”,注意每次点击主菜单上的“Debug”进行仿真前都要检查该项是否选中了,不然程序仿真会出错。点击看大图


7.设置“STARTUP.C51"文件中的代码初始存放地址”0“改为”08000“。(只是硬件仿真时设定为08000,而仿真后生成实际目标板的HEX文件时,即烧写代码到实际工作的单片机芯片前要重新改回”0“而且再编译一次生成的HEX文件才能烧写进去以正常工作。点击看大图


8.将硬件连接好(仿真器的串口线连到电脑的串口,仿真头插入目标板的单片机芯片插座中)然后启动电源,点击主菜单“debug”,进入仿真模式。其中的操作与软件仿真时差不多,按快捷键F10或F11可以实现单步运行,方便跟踪单步运行的结果(仿真前可以按图标按钮6c31885e-a740-41c5-9283-9050c4cfd91d.jpg设置以便于全速运行时运行到断点处停止查看运行状态和结果,而按钮812b4e07-39b0-475c-85a7-a1aeb810e29e.jpg可以取消断点。)。


点击看大图


8.下图就是仿真运行时的汇编界面:点击看大图


点击看大图


下图为C语言源代码界面:点击看大图


二者可以点图标9996d57c-82fa-484d-9c64-800297799cf7.jpg实现切换。


当然自己做的Monitor-51仿真器,结构相对简单实现的功能也有限,除了不能仿真串口通信的程序(因为51单片机只有一个串口)外,相对于像AVR等高级系列单片机的JTAG仿真而言,用起来也还是比较麻烦了些。有可能程序代码的地址分配不好会出现仿真死机或者提示代码溢出等等。需要自己重新设定STARTUP.A51文件中的配置。有时也会在运行过程中发生掉线,需要重启电源后再点连接”Try Again“,如下图示:c04ad36b-9cc6-400e-a6f7-be666b3168e1.jpg


 


这个仿真器仿真大的程序(代码很长的那种)也易死机,不过仿真些小的程序没有问题的,这对于初学单片机的人理解单片机的原理和运行过程是很有帮助的。


个人感觉如果是用于学习的仿真器,还是选用内部有大容量的RAM的单片机来做,比如说STC、SST的增强型51等等,用89S52/C51、89S/C51来做不划算用起来也不爽,不过作为爱好者可以做一个当做收藏了,说不定某天89S52/C51、89S/C51全下线,一个经典单片机时代就过去了 .......


 


 


 


 


 

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

512826028 2010-9-24 22:28

呵呵 做的真的不错。。 可是开了眼界了啊。。。
相关推荐阅读
用户571671 2011-12-14 21:33
关于“自制简单方便的51/avr单片机USB ISP下载线”的一些说明
   之前自己写的“自制简单方便的51/avr单片机USB ISP 下载线(硬件/软件部分)”得到了很多朋友的关注,大家也提出了一些问题。在这里我系统地说明一下:         1.用沁恒公...
用户571671 2010-06-14 20:28
完全解决Protel 99SE汉化版的菜单和功能丢失问题
Protel 99SE是一款极其优秀的PCB设计软件,小巧而又功能丰富,对于电脑的硬件的要求很低,那些凡能跑WINDOW98的电脑也可以运行。可惜有两个典型的不足:1.没有官方的汉化版,这对于懂英语的...
用户571671 2010-06-04 17:07
让Ubuntu10.04中的YAMAHA声卡发声
自己的电脑上已经装了Ubuntu10.04好久了,最近才发现它居然还是个“哑巴“,一直没有声音,不管是启动还是用各种播放器播放MP3歌曲均不能听到声音。都说Ubuntu对于设备的驱动已经做的很好了的,...
用户571671 2010-03-27 12:04
INTERL BUS和MOTOROLA BUS及其区别
在实际应用中用到的很多带并行总线的芯片的硬件连接、读写操作都分为INTERL BUS和MOTOROLA BUS(某些文献上又叫INTERL 模式和MOTOROLA 模式)这可以在相应的芯片手册上看到,...
用户571671 2010-02-27 13:57
LCD BackLight Control for utulinux 2440 LCD 背光控制
LCD BackLight Control for utulinux 2440 LCD 背光控制                     注解:borlittle仅供学习参考,源代码版权归原著者所有 ...
用户571671 2010-02-27 13:55
LED Example for utulinux 2440 LED测试示例
LED Example for utulinux 2440 LED测试示例注解:borlittle仅供学习参考,源代码版权归原著者所有<?xml:namespace prefix = o ns ...
EE直播间
更多
我要评论
1
11
关闭 站长推荐上一条 /3 下一条