微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 利用keil c51生成hex如何设置ROM

利用keil c51生成hex如何设置ROM

时间:11-10 来源:互联网 点击:
我使用at89s52(256RAM,8K的ROM),程序编译后显示program Size: data=56.0 xdata=0 code=3529。我的电路中无外部ROM,为了使生成的hex代码只存储在该片at89s52,我怎么设置呢?选small肯定不行,因为我的代码大于2K;若选compact,代码能放在64K的程序空间,而我s52只有8K的ROM,代码不会放在我的8K之外吧,那样肯定会出错的。若我选择“Use on-chip ROM(0x0-0xFFF)”,有什么影响? 求高手帮忙了。。。。

附帖:为了说明问题,提供一下Small、Compact及Large的说明(尽管知道有此三种设置,但还是不会运用,不知在什么情况下做何设置),在keil C51编译环境中,能提供:设置ROM空间的使用,有3个选择项,Small、Compact及Large。1.Small:只用低于2K的程序空间,适用于AT89C2051这些芯片,2051只有2K的代码空间,所以跳转地址只有2KB,编译的时候会使用ACALL  AJMP这些短跳转指令,而不会使用LCALL  LJMP指令。如果代码地址跳转超过2K,那么会出错。2.Compact:单个函数的代码量不能超过2K,整个程序可以使用64K程序空间。3.Large:可用全部64K空间,表示程序或子函数代码都可以大到64KB,使用code bank还可以更大。通常都选用该方式。选择Large方式速度不会比Small慢很多,所以一般没有必要选择Compact和Small方式。Use on-chip ROM(0x0-0xFFF)选择项,表示使用片上的ROM (选中该项并不会影响最终生成的目标代码量),该选项取决于单片机应用系统,如果单片机的EA接高电平,则选中这个选项,表示使用内部ROM,如果单片机的EA接低电平,表示使用外部ROM,则不选中该选项。

问题补充:

我使用at89s52(256RAM,8K的ROM),程序编译后显示program Size: data=56.0 xdata=0 code=3529。我的电路中无外部ROM,为了使生成的hex代码只存储在该片at89s52,我怎么设置呢?选small肯定不行,因为我的代码大于2K;若选compact,代码能放在64K的程序空间,而我s52只有8K的ROM,代码不会放在我的8K之外吧,那样肯定会出错的。若我选择“Use on-chip ROM(0x0-0xFFF)”后,那Small、Compact及Large 三档选哪一档?


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

网站地图

Top