当前位置:首页 > 单片机 > 单片机
[导读]MCS -51单片机在我国应用最为广泛、经久不衰。以往单片机应用程序主要用汇编语言编写。由于汇编语言程序的可读性和可移植性都较差,采用汇编语言编写单片机应用程序不但周期长,而且调试和排错也比较困难。为了提高编

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批处理命令中主要用到两个汇编文件:INSTALL.A51和MON_BANK.A51。根据硬件配置的具体情况,可能要作一些修改。

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

(1)中断偏移量设置:当Monitor-51监控程序在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 使用中的几个问题

按前两节提供的硬件电路图和监控程序,如果仿真板与目标系统连接无误,就可调试使用。但仿真板与目标系统连接有问题或Keil 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文件。

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

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭