呵呵, 这时 Keil 编译器的特殊问题.
鉴于 C51 系列的特点, Keil C51 将局部变量分配在 ram 中, 而不是堆栈中. 以提高任务的处理速度.
另外为了优化 RAM 的使用. Keil C51 的局部变量进行动态分配, 按照其 覆盖分析, 来分配局部变量的 RAM 地址.
现在你注释掉了部分代码, 而没有注释掉函数的实现. Keil 就不知道 这两个函数和主函数的调用关系. 他们的局部变量只能不分配到可覆盖区域. 于是使用的 RAM 反而变大了.
不知道我说明白了没有, 如果还不清楚的话, 可以去看一下 Keil 关于动态分配的介绍资料.
|