• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

请教:错误Program Size:data=132.3 xdata=0 code=4054的解决办法

我用的是AT89S52,在写一个232-485的通信控制程序时,因数据量大(一次传送26个数)加上相关控制有二十多个变量(我已经将变量数压缩到尽可能少了),编绎出错Program Size:data=132.3 xdata=0 code=4054  ERROR L107:ADDRESS SPACE OVERFLOW.估计是SRAM不足,解决的办法:1、外接芯片,难度在于需更改硬件,增加电路复杂程度,(下)
2、选用更好的单片机,因电路用已经成形,只能选用与S52兼容,没找到合适的单片机.
3、将一次传送的数分成多次传送,又会增加同一网络中其它单片机中断次数,影响其它单片机正常工作.
特请各位大师指点指点:
1、这个错误提示是否的RAM不足?
2、外接RAM芯片选用何种型号好些?
3、与S52兼容的单片机价格相差不太多的但能解决这个问题的型号有哪些?头文件好找不?
4、还有没有其它的办法?
全部回复(6)
正序查看
倒序查看
whatcall
LV.5
2
2007-11-15 08:46
Program Size:data=132.3

data应为内部RAM的使用量,和芯片实际RAM大小比较一下可以确认是否为内部RAM不足.如果是又不想换片子,可以考虑程序其他部分的优化,减少变量的使用.一些临时变量(如果他们不冲突)可以用同一个全局变量代替.
0
回复
xing1234
LV.6
3
2007-11-15 11:12
@whatcall
ProgramSize:data=132.3data应为内部RAM的使用量,和芯片实际RAM大小比较一下可以确认是否为内部RAM不足.如果是又不想换片子,可以考虑程序其他部分的优化,减少变量的使用.一些临时变量(如果他们不冲突)可以用同一个全局变量代替.
谢谢!我很努力的减少变量了,还是不够用呀!S52的RAM是256,闪存是8K,而我的程序总量大约在4-5K,所以闪存是够用的.还在尽量优化!
0
回复
whatcall
LV.5
4
2007-11-15 18:00
@xing1234
谢谢!我很努力的减少变量了,还是不够用呀!S52的RAM是256,闪存是8K,而我的程序总量大约在4-5K,所以闪存是够用的.还在尽量优化!
132.3 不是还没到256吗?怎么编译时即报错?你的芯片特殊寄存器应该不占用RAM空间吧? 可用的RAM是256 bytes吗? 是否还有其他可能?
0
回复
xing1234
LV.6
5
2007-11-16 09:43
@whatcall
132.3不是还没到256吗?怎么编译时即报错?你的芯片特殊寄存器应该不占用RAM空间吧?可用的RAM是256bytes吗?是否还有其他可能?
我也怀疑这个问题,我把头文件//#include   //#include 都用过,就是不行,不知头文件是否有问题.
0
回复
xing1234
LV.6
6
2007-11-16 09:54
过去用AT89C51(RAM为128)时也出现过这种情况,换成S52后把头文件一改就能通过.当时为求解决问题,也没太注意,可能当时的主要原因是程序大于4K闪存不够而非RAM不够.
0
回复
xing1234
LV.6
7
2007-11-16 10:21
@xing1234
过去用AT89C51(RAM为128)时也出现过这种情况,换成S52后把头文件一改就能通过.当时为求解决问题,也没太注意,可能当时的主要原因是程序大于4K闪存不够而非RAM不够.
谢谢!过去没用过,现在找资料才知道,unsigned int  idata     adinv[12];我的高8位RAM没定义.
问题基本解决!
0
回复