本文介绍一种易于自制的51芯片仿真器,非常适合初学51单片机的朋友。这种仿真器使用兼容F-MON3.4版的仿真监控程序,可以和现在十分流行的Keil UV2集成开发环境连接,进行程序的仿真调试,实现各种变量的查看或IO状态的查看。
这个仿真器的仿真CPU使用SST公司的SST89C58或SST89C54(其他相容的芯片也可。SST89C58片内带有32K的FlashROM,制作成仿真器后,70000H~7FFFFH这4K的程序存储器地址会被仿真监控程序占用不能被使用,我们仿真程序时可以使用的地址是0000H~6FFFFH,总共28K,对于一般的应用开发已足够使用了。它能以单步、断点、全速运行等方式调试程序,可参考变量、RAM变量; 支持汇编、C语言混合调试;片内 28K 程序空间可以随时进行在线程序更新; 完全仿真 P0、P1、P2口;可以仿真标准51、52、0x51(要加装仿真头)。它不足的地方就是占用串口、T2定时器,这些资源在程序调试中将无法使用。对于没有可以烧写SST89C58芯片编程器的朋友,制作本文所介绍的仿真器可选用CA版本的SST89C58芯片(见图1),这个CA型号的芯片出厂时已内置了BSL1.1E的固件程序。BSL是英文BOOT-Strap Loader的缩写,意思为可引导装载,形象来说就像电脑用DOS启动盘启动后可以装载应用程序并运行,只不过SST89C58是用串口来输入程序资料的。为了能把编译好的单片机程序HEX或BIN文件下载到SST89C58芯片上,SST公司还提供了一种叫EasyIAP的软件,有了这个软件就可以把SST89C58变为在线下载的实验器。当把带有BSL固件程序的应用板,用串口与电脑中的EasyIAP连接后,就可以用软件对应用板上的SST89C58进行烧写、擦除、运行等操作。本文不详述EasyIAP的使用,只讲述如何利用它把SST89C58升级为带SoftICE固件程序的51仿真器。

仿真器的制作
该仿真器需要用串行口连接SST89C58芯片和PC上位机进行通信传输数据,因此我们先要制作一个带RS232/TTL转换、复位电路和晶振的应用板。电路的晶振最好选用12M或11.0592M。图2是笔者所设计的可以用于制作SST89C58/54仿真器、S51系列下载器或51系列实验用的小型应用板的电路图。该电路很简单,用两个NPN的小功率三极管和一些电阻二极管做RS232/TTL转换(可参看http://www.cdle.net/alldata/mywz/03122001_1.htm),其他元件则做复位和时钟振荡电路。4位拨码开关是用于仿真时决定选用仿真板上的晶振和串口转换电路,还是选用目标板上的晶振和串口转换电路。仿真器实物图见图3、4。
1.没有SST芯片编程器的方法
如果你没有支持SST89C58的编程器,那么就需要购买CA型号的SST89C58芯片(应保证芯片内有BSL程序)。如果没有CA型号的芯片,也没有支持SST89C58的编程器,也有办法将仿真监控程序写入SST芯片,只是相对麻烦一些,笔者下期再介绍。
1.首先把CA版的SST89C58芯片插到上面介绍的电路板中,因CA版芯片上已装入了BSL3,你可以先下载EasyIAP11E,测试一下你的电路板是否正常工作(用EasyIAP11F也可以)。EasyIAP11E程序和固件程序可以到SST网站http://www.sst.com/products/software_utils/easyiap.xhtml下载,注意的是它分有11.0592M和12M不同晶振频率的固件程序(一般购买到的CA版芯片已固化11.0592M晶振),如果能保证电路能正常工作则可跳过这一步。
把电路接到电脑串口上,打开EasyIAP11E软件。按图5菜单上的RS232弹出串口设置画面,设好你要用的串口和波特率,波特率选用默认的38400就可。确定后按菜单的“Auto DetectChip”,如图6中1所示。

当你的电路正常时就会有图6的画面,并在2所示位置显示芯片的型号、BSL版本等信息。如果你无法进行到这一步,就请检查你的电路是否有正常的复位和起振,串口电路是否正常或芯片是否损坏等问题。
2.升级BSL11E到BSL11F。下载SoftICE_58.zip把所有文件解压在同一目录下,并运行SSTEasyIAP11F.exe(下载地址见http://www.sst.com/products/software_utils/softice/index.xhtml)。
选中图7中的第2个菜单项,把11E升级到11F的命令。一路按确定。

如果你用于升级的SST89C58芯片做了加密操作,就会在升级过程中出现图8的出错提示,那只有用编程器擦除后直接烧入仿真监控程序或BSL11F程序了。出现这样的提示也可能是串口线接触不好或电路有问题。

3.下载仿真监控固件程序。
从11E升级到11F后就可以进行下面的操作了。
选择图7中的第1个菜单项,连接上11F并进行串口设置。在图11中的对话框中选择芯片型号和ROM方式。因BSL程序已烧入到片内的存储器上了,所以要选择Internal Memory,在这个模式中要求EA引脚(芯片的31脚)应接5V的高电平以选择BSL在片内ROM中执行。

选好芯片型号后还要求选择串口号、波特率和电路板上的晶振频率。因11F的BSL固体程序已支持4~33M的晶振频率,要求在图12中输入电路板上的晶振频率,按“compute”自动选择用以连接的波特率。选好后按“Detect MCU”进行连接,连接成功后会像图10那样显示芯片型号、固件版本等信息,这时就可以下载仿真监控固件程序SoftICE到芯片中了,注意的是Soft ICE58.hex应和SSTEasyIAP11F.exe在同一个目录下。点击图13的菜单项开始升级,如果芯片做了加密操作会使升级无法进行,同时升级过程中应保证串口通信的正常,该过程中不用输入密码。


出现图14的窗口画面时说明升级成功。这时就可以把仿真器连接Keil UV2进行仿真操作了。关于非CA版且没有SST编程器以及有SST编程器情况下仿真监控程序的写入方法以及仿真器的使用方法,笔者下期再介绍。

(文/温正伟)



