微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > Keil Monitor-51仿真板的制作与使用

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

时间:03-20 来源:互联网 点击:

MCS -51单片机在我国应用最为广泛、经久不衰。以往单片机应用程序主要用汇编语言编写。由于汇编语言程序的可读性和可移植性都较差,采用汇编语言编写单片机应用程序不但周期长,而且调试和排错也比较困难。为了提高编制单片机应用程序的效率,改善程序的可读性可移植性,采用高级语言无疑是一种最好的选择。C语言是一种通用的计算机程序设计语言,既具有一般高级语言的特点,又能直接对计算机的硬件进行操作,表达和运算能力也较强,许多以往只能采用汇编语言来解决的问题现在都可以改用C语言解决。德国Keil Software公司多年来致力于单片机C语言编译器的研究。该公司开发的Keil C51是一种专为8051单片机设计的高效率C语言编译器,符合ANSI标准,生成的程序代码运行速度极高,所需要的存储空间极小,完全可以与汇编语言相比美。

近年来,Keil C51不断升级,目前最高版本为V6.20。高版本的Keil C51编译器,尤其是Keil μVision2(基于Windows的C51集成编译环境)以其性能优越、使用方便,受到了众多单片机爱好者的欢迎。Keil C51以软件包的形式向用户提供主要包括C51交叉编译器、A51宏汇编器、BL连接定位器等一系列工具和μVision2、软件仿真器dScope51等开发平台。C51具有丰富的函数库,包含100多种功能函数,为用户编程提供了极大的方便。C51程序可实现与汇编语言的接口,两者相互之间的调用十分方便。

但目前支持高版本Keil C51编程的仿真器不多,且价格较高。为此Keil C51提供了Monitor-51仿真板的制作方法,但无完整的硬件电路图,软件设置也比较繁琐。http://www.c51bbs.com。也有关于自制Monitor-51仿真板的专门讨论,有很多爱好者在制作仿真板时遇到一些问题,当然也有成功者。笔者也是Keil C51的用户,并成功自制了Monitor-51仿真板,有一些心得。本文提供了Monitor-51仿真板的硬件电路,并对其进行了分析,详细说明了监控程序的生成方法,对使用中常出现的问题给出了解决方法。

1 硬件电路

Monitor-51仿真板的硬件资源要求如下:

·5K字节的程序存储空间,用于存放监控程序;

·256字节的外部数据存储单元(系统需要)和可选的5K字节的跟踪缓冲区;

·足够大的外部数据存储空间用于装载完整的用户应用程序;

·串行口及一个用作波特率发生器的内部定时器;

·6字节的堆栈空间,用于用户程序的测试;

·如果用户程序大于64K字节,P1口的部分引脚要用于程序存储空间扩展;

·其它资源均可为应用程序所用。

根据以上要求,笔者设计的Monitor-51仿真板电路原理如图1。

需要说明的是,图1中存放用户程序的32K字节外部数据存储器62256的OE(输出允许引脚),是将CPU的PSEN和RD信号相与后再与之相连,称为von Neumann接法。此时外部数据存储器在PSEN有效时,就相当于外部程序存储器,当然监控程序的存放地址空间不断与这种接法的外部数据存储空间相重复。Von Neumann接法的另一个作用是调试时可以在用户程序代码中设置断点,监控程序修改用户程序代码在所有的断点处插入ACALL指令。

2 监控程序

Monitor-51仿真板的监控程序可用Keil C51提供的INSTALLBAT批处理文件生成,此文件在路径下,须在DOS环境下执行,语法如下:

INSTALL serialtype [xdatastart [codestart [BANK] [PROMCHECK]]],[]为可选项。

命令中的各参数解释如下:

serialtype:串行通信设置,现将有关MCS-51系列单片机的serialtype设置的含义列于表1中。

表1 MCS-51系列单片机的serialtype设置含义


xdatastart:指定Monitor-51监控程序使用的外部存储单元的页号(一页为256字节)即上节所需硬件资源的第2项,取值为0-FF之间的十六进制数,缺省值为 FF。例:xdatsatart=FF,则X:0xFF00..X:0xFFFF(X表示外部数据存储单元)被Monitor-51监控程序存放内部变量,用户应用程序不能使用。

Codestart:指定监控程序代码在程序存储起始页数,即起始位置,取值为0~F0之间的十六进制数,缺省值为0。

BANK:可选项,为代码区分组的应用程序安排,应用程序不超过64K,一般不选此项。

PROMCHECK:可选项,Monitor-51监控程序在CPU复位时检查在程序存储区0地址处是EPROM还是RAM。

例:INSTALL 0 7F 0

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

应该提醒的是,INSTALL

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top