×
嵌入式 > 嵌入式开发 > 详情

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

发布时间:2020-07-17 发布时间:
|
我使用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 三档选哪一档?



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
五大标准轻松搞定4K超高清电视选购