用SST89E516RD自制51单片机仿真器

原文网址:http://www1.eccn.com/tech06/te074653.asp

用SST89E516RD自制51单片机仿真器
文/吴汉清


单片机实验和开发中最重要的一个环节就是程序的调试,在业余条件下大部分人都采用烧写芯片直接到目标板上试验的方法,但是这样做在程序出现问题时比较麻烦,有时候也很难找到程序的问题出在那里。另外也可以采用软件仿真的方式调试程序,但是这种方式也有局限性,软件仿真有时候并不能完全代替实际使用环境。因此单片机仿真器成了程序调试中一个重要的设备。但是在业余条件下很少有人使用价格比较高的仿真器。为解决这一问题,本文介绍一种用SST公司的单片机SST89E516RD做的基于MCS-51架构的简易51单片机仿真器,它支持与MCS-51架构兼容的芯片,成本只有20多元,很适合业余爱好者制作和使用。

一、单片机SST89E516RD简介

SST89E516RD是8位集成存储器的51系列兼容单片机,和51系列单片机软件兼容、开发工具兼容、管脚也兼容。

SST89E516RD片内有两块SuperFlash EEPROM,分为64K主块(Block0)和8K次块(Block1)。Block0的地址范围是0000h~ffffh;Block1的地址范围是10000h~11fffh。做仿真器时Block1存储区烧写SoftICE仿真监控程序。

SST89E516RD具有在应用可编程(IAP)和在系统可编程(ISP)的功能,其中IAP是通过串口实现的。

仿真器就是利用了SST89E516RD的IAP功能。由于SST89E516RD具有两块独立的SuperFlash程序存储区,当监控程序在Block1存储区中运行时可以改写Block0程序存储区中的程序,这就是仿真器的基本特性。

SST89E516RD的引脚图见图1。更详细的资料见本期配刊光盘。

 

二、仿真器电路和工作原理

仿真器的电路见图2。仿真器通过计算机的一个串口与KeilμVision2集成开发环境进行通信。VTl、VT2、VD1、VD2、R1~R5等组成电平转换电路,其中发光二极管VD2作串口通信信号指示。

 

单片机SST89E516RD和晶振电路、复位电路一起组成单片机最小系统。SST89E516RD的引脚分别接在40脚的插针上,应用时40脚的插针插在目标板的单片机插座上。仿真器可能通过跳线的方式选择仿真器上的晶振或目标板上的晶振。仿真器使用目标板上的电源。 仿真器的工作过程就是在调试过程中随时对程序进行修改,来达到单步运行、跨步运行、断点运行和全速运行的目的。在通过KeilμVision2集成开发环境进行仿真时,需要调试的单片机程序目标代码通过串口被传送给监控芯片,并由监控程序烧写到监控芯片的Block0程序存储器中。在仿真调试过程中,监控程序可以随时改写被调试的程序来设置单步运行、跨步运行、断点运行。程序暂停执行后,在集成开发环境中可以观察单片机RAM、寄存器和单片机内部的各种状态。 

三、仿真器的制作

为了避免制作双面印制电路板的麻烦,仿真器可用万能电路板安装。单片机使用IC插座安装。

仿真器的监控芯片SST89E516RD中要预先烧写监控程序,SST、公司为部分SST89类单片机提供了仿真监控程序,但其中不包括SST89E516RD的监控程序,由于SST89E516RD和SST89E564RD兼容,因此可以用SST89E564RD的监控程序代替,SST89E564RD监控程序的下载地址为:www.sst.com/prod-ucts/software.utiIs/softice/index.xhtml,下载网页软件列表中的SoftICE_564.zip文件,解压缩后即可得到Softlce564.hex目标文件。用能够烧写SST89E516RD芯片的编程器将SoftIce564.hex目标文件烧入Block1程序存储区。烧写时注意两点1.加载目标文件时缓冲区开始地址要改为10000;2.加密位SB1、SB2、SB3和配置位SC0等都不要勾选。只有这样才能正常使用IAP功能。如果自己没有可用的编程器,可在购买单片机芯片时请商家代写,现在网上也有已烧写好监控程序的SST89E516RD芯片出售。

制作中40脚插针和IC插座焊接是一个难点,先焊接好40脚插针,然后在其对面即铜箔面焊接IC插座,IC插座除18、19脚要接跳线外,其余各引脚焊接在插针的对应焊点上。仿真器到串口插头的连线可使用双芯屏蔽线,其中屏蔽层作接地线。如果没有屏蔽线也可以用三根导线作连线。 制作好的仿真器照片实物见图3。

 

四、使用Keil μVision2进行仿真调试

仿真器做好以后就可以配合Keil μVision2进行仿真调试,笔者为仿真调试建了一个项目test.Uv2,在本期配刊光盘中,这是一个流水灯的程序,对应的单片机目标板电路见图4。项目中有关仿真器的选项都已设置好。如果自己建项目进行设置,则相关设置过程如下: 

 

在菜单Project中选择Optionsfor Target'Targetl',在"Optionsfor Trarget 'Targetl'"对话框的Debug 页面里,选择"Use:KeilMonitor-51 Driver"。相关设置见图5。


 

然后单击"Settings"选择要使用的计算机串行端口。Keil μ Vision2默认设置为COM1/9600。仿真器在一定范围内对串行通信波特率是自适应的,晶振频率为11.0592MHz时波特率可在4800~38400 之间选择。一般取最大值,以提高串口通信速度。相关设置见图6。最后单击"确定"按钮保存设定。仿真器或目标板也可以选择其他频率的晶振,比如晶振频率为6MHz时波特率可在2400~19200之间选择。如果使用目标板上的晶振,波特率要根据目标板上的晶振频率确定。

 

打开项目test.Uv2,完成上述设置后就可以进行仿真调试了。先单击工具栏上的Build target按钮 编译项目,编译成功后将生成目标代码。将仿真器按正确的方向插在目标板上,串口和计算机连接好后接通目标板的电源,按一下仿真器的复位键SB,再单击Start/Stop Debug session按钮 ,启动仿真调试环境,这时目标代码将被自动下载到仿真器的Block0用户程序空间。连接成功会后出现如图7所示的画面,连接过程中我们会发现发光二极管VD2在闪烁。连接不成功时请检查软件设置和硬件电路。

仿真时使用的主要调试按钮的功能如下:


上述各按钮的使用方法和软件仿真时相同。

进入仿真调试环境后,按一下全速运行按钮 ,目标板上的8个发光二极管就会轮流点亮,表示运行成功。如果我们在delay(100)前插入一个断点,按一下全速运行按钮 你会发现程序运行到断点后停止向下执行,只有第一个发光二极管点亮;再按一下全速运行按钮 ,刚轮流到第二个发光二极管点亮,以此类推。退出仿真时,请先按仿真器的复位键,然后再点一下按钮 ,就回到编辑模式,修改程序后重新编译,可以再次进入仿真调试环境。注意每次进入仿真调试环境前都要先按一下仿真器的复位按钮SB。

使用仿真器时请注意下面两点:

1.仿真器占用了仿真单片机的串行通信接口和用作波特率发生器的定时器2的资源,只有在全速运行时才释放这些资源,因此当目标板使用这些资源时就不能进行单步、跨步、断点等运行。这也是这个仿真器的一个不足之处。 2.仿真器监控芯片的SuperFlashEEPROM擦写寿命一般为每个存储单元1万次,而每一个单步执行都将擦写一次存储单元,因此应尽量少使用单步执行,多使用断点、跨步、断点和执行到光标行等节省擦写次数的功能,以延长仿真器的使用寿命。

你可能感兴趣的:(Keil,MDK,51架构)