新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > Keil Monitor-51仿真板的制作与使用

Keil Monitor-51仿真板的制作与使用

作者:时间:2012-03-20来源:网络收藏

例:INSTALL 0 7F 0

这条命令将设置波特率为9600bps,内部定时器1为波特率发生器,要求CPU时钟为 11.059MHz,内部变量空间为:X: 0X7F00..X:0x7FFF,监控程序代码起始地十为:C:0x0000(C表示程序存储单元)。该命令生成一个 MON51.HEX,将其固化在EPROM中即可

应该提醒的是,INSTALL批处理命令中主要用到两个汇编文件:INSTALL.A51和MON_BANK.A51。根据硬件配置的具体情况,可能要作一些修改。

INSTALL.A51中修改项主要有两项:

(1)中断偏移量设置:当监控程序在ROM中起始地址为0时,采用von Neumann接法的外部数据存储器起始地址为8000H,则中断偏移量必须设成8000H,而用户应用应用将存放在8000H之后。 INSTALL.A51中的INT_ADR_OFF定义如下:

INT_ADR_OFF EQU 8000H。

(2)波特率修改:Monitor-51的波特率一般设置成9600bps或自适应。若要改成其它波特率,如4800bps,则修改“InitSerial:”节中的定时器初始化值。

INSTALL.A51中还有许多其它设置,一般不作修改。

MON_BANK.A51是为代码区分组的应用程序安排的,此处不作讨论。

3 中的几个问题

按前两节提供的硬件电路图和监控程序,如果板与目标系统连接无误,就可调试。但板与目标系统连接有问题或 C51软件设置不当会遇到一些麻烦,在程序调试中的主要错误与警告有:

ERROR 22:NO CODE MEMORY AT 0x80xx,这是因为板用于存放用户程序的外部数据存储空间与目标系统地址存在冲突。应检查硬件电路予以解决。

ERROR L107:ADDRESS SPACE OVERFLOW,这是因为用户程序大于μVision2中设定的允许长度。可将用户程序允许长度设到仿真板许可的最大值;若还不能解决,可将程序分段进行调试。

WARNNING L1:NURESOLVED EXTERNAL SYMBOL,多数程序员都遇到过此警告,这是由于在生成Monitor-51监控程序时(执行INSTALL批处理命令)没有使用[BANK]选项。解决方法是将Startup.A51文件中第140、141行最前面加“;”号注释掉。Startup.A51是加入到用户工程文件中的汇编程序,使用 Monitor-51仿真板必须加入此文件。

由于Monitor-51仿真板比较简单,占用了一些系统资源,有时给用户带来了不便。程序员实际编程中常要解决以下两个问题:

(1)串行接口功能:串行通信是MCS51单片机经常要用到的功能,而MCS-51系列单片机只有一个串行通信接口,在与PC机相连的仿真状态时,串口用于与 PC机通信。若在应用程序中也用到串行口,就会发生冲突。解决方法是用户程序装载完毕后,运行用户程序,再断开仿真板与PC机的串行通信线。这样串口就可归用户程序使用了,当然这时PC机就不能在线调试了。

(2)外部存储空间:用户程序越长,占用的外部数据存储空间将越大。解决的方法是对较长的程序进行分段调试,所有的程序完成后在软件仿真状态(不用 Monitor-51仿真板)生成一个完整的HEX文件。另外,如果系统中还有其它接口器件占用外部数据存储空间,要合理安排。如有一EEPROM要存放历史数据,可以在调试过程中用#define预处理命令将存放历史数据的存储空间定义在较小的范围内,程序编完后再修改范围进行编译生成HEX文件。

笔者有多年的汇编语言编程经历,改用 C51后感觉很好,编程效率大为提高。经过一段时间摸索,自制成了Monitor-51仿真板。使用Monitor-51仿真板,给调试程序带来了极大的方便。虽然仿真板占用了一些系统资源,但经合理安排,一般的应用程序还是可以承受的。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭