打印

仿真器仿真时,89C52内部ram才使用了120多Byte,为什么就不够了

[复制链接]
4060|9
手机看帖
扫描二维码
随时随地手机跟帖
沙发
winloop| | 2007-9-15 09:16 | 只看该作者

再多些现象的提示

使用特权

评论回复
板凳
awey| | 2007-9-15 09:21 | 只看该作者

高低128Byte的RAM寻址方式不同

使用特权

评论回复
地板
ccjchen|  楼主 | 2007-9-15 10:28 | 只看该作者

看这是错误和警告,其中 ERROR L107为错误原因

我是用C语言编写的,间接寻址不是idata吗?
 WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
            SEGMENT: ?PR?WRITEDIG5?KEYLCD
         ERROR L107: ADDRESS SPACE OVERFLOW
            SPACE:   IDATA   
            SEGMENT: ?ID?KEYLCD
            LENGTH:  0038H
         WARNING L1: UNRESOLVED EXTERNAL SYMBOL
            SYMBOL:  SYN_DEC
            MODULE:  KEYLCD.OBJ (KEYLCD)
         ERROR L105: PUBLIC REFERS TO IGNORED SEGMENT
            SYMBOL:  KEYVAL
            SEGMENT: ?ID?KEYLCD
         ERROR L105: PUBLIC REFERS TO IGNORED SEGMENT
            SYMBOL:  M
            SEGMENT: ?ID?KEYLCD
         ERROR L105: PUBLIC REFERS TO IGNORED SEGMENT
            SYMBOL:  DIG3
            SEGMENT: ?ID?KEYLCD
         ERROR L105: PUBLIC REFERS TO IGNORED SEGMENT
            SYMBOL:  DIG2
            SEGMENT: ?ID?KEYLCD
         ERROR L105: PUBLIC REFERS TO IGNORED SEGMENT
            SYMBOL:  DIG1
            SEGMENT: ?ID?KEYLCD
         ERROR L105: PUBLIC REFERS TO IGNORED SEGMENT
            SYMBOL:  SYN
            SEGMENT: ?ID?KEYLCD
         ERROR L105: PUBLIC REFERS TO IGNORED SEGMENT
            SYMBOL:  NUM
            SEGMENT: ?ID?KEYLCD
         ERROR L105: PUBLIC REFERS TO IGNORED SEGMENT
            SYMBOL:  RDT
            SEGMENT: ?ID?KEYLCD
         ERROR L105: PUBLIC REFERS TO IGNORED SEGMENT
            SYMBOL:  VOL0
            SEGMENT: ?ID?KEYLCD
         WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL
            SYMBOL:  SYN_DEC
            MODULE:  KEYLCD.OBJ (KEYLCD)
            ADDRESS: 0FFDH
      <连接器提示> LINK/LOCATE RUN COMPLETE.  3 WARNING(S),  10 ERROR(S)
      <MedWin提示> 连接过程中发现错误或错误的连接器
      连接失败!

使用特权

评论回复
5
救火车| | 2007-9-15 11:29 | 只看该作者

把没有调用的函数都注释掉。

UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
有时写了函数,但没有调用它,也出这个提示.也是内存越界提示.

使用特权

评论回复
6
ccjchen|  楼主 | 2007-9-15 13:33 | 只看该作者

奇怪以上一些变量和数组我都用到了,为什么还会出现警告

比如:dig1,dig2,m,keyval,volo都用到了阿

使用特权

评论回复
7
ayb_ice| | 2007-9-15 13:38 | 只看该作者

把一些不常用的变量加 idata定义...

使用特权

评论回复
8
kingkits| | 2007-9-15 14:31 | 只看该作者

你的堆栈在哪里呢?

使用特权

评论回复
9
ccjchen|  楼主 | 2007-9-15 21:59 | 只看该作者

我也不太清楚堆栈在哪里,C语言不是不用管它,自动解决的

使用特权

评论回复
10
排山倒海| | 2014-9-14 22:52 | 只看该作者
本帖最后由 排山倒海 于 2014-9-14 22:54 编辑

最近帮老乡用51学习板改做一个控制板,Keil中选择AT89S52是有256 Bytes On-chip RAM的,也遇到ERROR L107和L105问题,编译提示:Program Size: data=116.1 xdata=0 code=3626,就是RAM只用不到117字节RAM,但是Keil却报错。把一些原来不指定data类型也不指定idata类型的变量改为指定为idata类型就可以正常编译了,但是还是提示Program Size: data=116.1 xdata=0 code=3636。
    我不明白为什么Keil编译信息不能区分直接寻址的data数量和间接寻址的idata数量,要求我们在代码中手动自行管理分配data和idata,编译信息又笼统的显示为data,而且还显示没有使用的xdata=0。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

175

主题

446

帖子

1

粉丝