1.51单片机空程序编译的时候data=9.0,这个我感觉有点懵,不是太懂。
2.对于256字节SRAM真正能用来定义变量的空间有多大,编译时data大于128以后程序经常会出问题。
那9个字节可能是堆栈或者startup用掉了吧
data大于128时,你最好手动分配一些变量到idata里去
本身有些默认启动代码会占用ram。
你说的RAM过高的问题,是因为keil工程设置有个内存模式,默认是small模式,即只用内部ram,所以即使你有xram,编译器也不用。需要把内存模式改为large,或者内存直接定义为xdata类型。另外,最好设置一下xram的范围,避免超出了你还不知道