不同的定义和存储位置
程序来源于千问AI
c
// 存储在 Flash(只读)
const char code msg[] = "Hello";
// 存储在内部 RAM(data 区,快速访问)
unsigned char data buffer[10];
// 存储在外部 RAM(xdata 区)
unsigned int xdata big_array[100];
// 存储在 idata 区(可间接寻址的内部 RAM)
unsigned char idata temp;
不同的位置数据访问速度 的不同

stc8G1K08的手册对应关系

个人理解总结
掉电数据变化
在flash中,掉电后的数据依然可以保存,在RAM中的数据掉电后就会被初始化。

从程序中,不同定义的数据存储位置
| 存储位置 | 定义的一般格式 | |
|---|---|---|
| idata | 默认的临时变量 | unsigned char data buffer[10];,unsigned char idata buffer[10];,unsigned char buffer[10]; |
| code | 放在单片机flash中,一般容量较大 | const定义的常量,const char code msg[] |
| xdata | 片外大容量RAM/片内扩展RAM | unsigned int xdata big_array[] |
从下图中看出,flash 一般容量最大 ,idata/iRAM 最小但访问速度最快 ,xdata 速度最慢

程序中修改后各种内存的变化对比,
