51单片机C编程中的问题

来源:百度知道 编辑:UC知道 时间:2024/05/08 10:48:33
编译时出现*** ERROR L107: ADDRESS SPACE OVERFLOW
SPACE: DATA
SEGMENT: ?DT?SERIAL_PORT
LENGTH: 000BH
是什么原因造成的,如果要应用很多外部变量,在51单片机怎么做才能使代码占用的内存空间降到最小?

你的编译模式用的不对,你的data数据段指定的太短了。用large模式试一试。

在C编译器里,变量有两个地方可以放,数据段和堆栈段,而外部变量是必须放到数据段中的。解决办法是:优化程序,将除了信号量以外的数据耦合都用参数调用方式来进行,而不要用外部变量,既增强了程序可读性,又减小了数据段空间。

要用到多少外部,就要占多少空间,这个是死的,活的是,尽量少用外部变量,将程序优化,这才是省内存的关键。
另外一些操作不频繁的外部变量放到idata区去(52及以上系列)

SERIAL_PORT看看这个函数有什么问题,这个错误不是内存用多了造成的。

这是溢出的提示,你检查一下是不是直接使用外部变量了。

定义一些变量为iata存储类型就好了