//对于C51来说,内部RAM只有256Byte
//其中包括,低128Byte直接寻址的data和高128Byte间接寻址的idata(也包括SFR)
//data 定义的变量只能寻址低128Byte
//idata 定义的变量可以寻址整个iRAM
#define LEN 120
data unsigned char tt1[LEN];
idata unsigned char tt2[127];
void main()
{
unsigned char i,j;
for(i = 0; i < LEN; ++i )
{
j = i; //注释掉这一行,编译器,无法优化变量j,就会将j放到RAM区域,从而会引发溢出错误
tt1[j] = 0x55;
}
}
/***********************极限分配iRAM的例子************************/
/************************ [iRAM Space Map] ************************
__________________________________________________
| R0~R7 + tt1 + tt2 + SP(at least) |
| |
| 8B + 120B + 127B + 1B = 256 Byte |
|__________________________________________________|
************************ [iRAM Space Map] ************************/
代码来源于网络,特发此与大家分享,感谢原作者!