KEIL编译出错和memorymodel选择

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了KEIL编译出错和memorymodel选择相关的知识,希望对你有一定的参考价值。

在输出设置里面target--->memorymodel选择如图所示

Build target 'Target 1'
compiling main.c...
linking...
*** ERROR L107: ADDRESS SPACE OVERFLOW
SPACE: DATA
SEGMENT: ?DT?MAIN
LENGTH: 0024H
*** ERROR L105: PUBLIC REFERS TO IGNORED SEGMENT
SYMBOL: RECEIVEDFLAG
SEGMENT: ?DT?MAIN
*** ERROR L105: PUBLIC REFERS TO IGNORED SEGMENT
SYMBOL: DISPBUF
SEGMENT: ?DT?MAIN
*** ERROR L105: PUBLIC REFERS TO IGNORED SEGMENT
SYMBOL: CHULI
SEGMENT: ?DT?MAIN
*** ERROR L105: PUBLIC REFERS TO IGNORED SEGMENT
SYMBOL: UCRECEIVEDINDEX
SEGMENT: ?DT?MAIN
Program Size: data=106.1 xdata=0 code=4870
Target not created

CPU是STC89C52,编译出错怎么解决。

还有我应该写好程序后应该怎么样处理memorymodel这个选项卡
因为我在small模式下面编译成功了以后,我在里面加了一些程序,
空间不够了提示,我就把它改为了PDATA,然后编译通过,但是
程序就出错了,一直在主函数的while(flag)里面循环,即使我没有
给flag设置成1,他照样能进去,而且还循环了。卡在在里面了

我不明白我应该怎么样解决这个问题,请教

改成XDATA 外部存储区

ERROR L107: ADDRESS SPACE OVERFLOW
是地址空间溢出
PDATA也没多少 因为特殊功能半区里很多是不能占用的

没必要的不要设置成静态变量追问

改成XDATA是能编译通过,不过我听别人说一般这个都是默认的么,改这个对CPU有没有要求啊,

追答

外部存储区 AT的片子得加存储片子
STC的直接做到芯片里了 看你买的什么芯片

参考技术A
KEIL 没破解有2K限制,你程序超过2048了,看是不是这个原因.追问

你是指code=4870吧?这个没有问题

以上是关于KEIL编译出错和memorymodel选择的主要内容,如果未能解决你的问题,请参考以下文章

如何使用Keil编译汇编程序或C语言程序

keil c51编译器怎么有的文件出错时,双击错误提示没有定位到错误行,有的文件就可以,怎么回事

keil 中的一些设置

keil编译51和arm的问题,本人菜鸟。同个keil能编译51程序又能编译arm程序吗?如果能用哪个版本,多谢啦

keil5不查版编译会报错吗?

用 keil编译的时候有两个警告怎么回事