keil中对不同变量的数据进行存储
上图中是很长看到的一种存储数据变量code,类似这种存储方式还有data,xdata,idata,bdata,这些方式制定了数据的存储位置,方便程序中数据能够更快的处理(对于小数据量当然就没有这方面的考虑)。
传统c51单片机存储位置和变量定义图示
参考1,参考2
data: 内部RAM低128字节,响应速度最快,采用直接寻址方式
idata: 内部RAM全256字节,采用间接寻址方式,速度相对较慢
bdata:片内RAM,位寻址方式
xdata:外部扩展RAM,采用**DPTR(data pointer数据指针访问,以16个二进制位为一个基础位,也就是两个字节为一个访问位)**访问
pdata:外部扩展RAM低256字节,分页寻址(一页256byte)
code:程序存储区,一般是内容较多且不需要修改的数据。
以ch552g芯片为例说明数据存储位置
从内存大小和数据传输速度分析
存储类型 | 存储时间 | 优点 | 缺点 |
---|---|---|---|
idata | 掉电丢失 | 内部RAM,快速的数据传输,就像电脑中的内存条 | 一般容量不大 |
data | 同上 | 是idata的低字节,高字节是直接访问的特殊功能寄存器 | |
xdata | 外部扩展ram,掉电丢失 | 以数据指针方式访问,16位为一个单位 | |
code | flash,掉电不丢失 | 存储空间大,常用于存储不变的数据和程序 | 访问速度慢 |