data,idata,xdata的区别 疑惑。高手请进!!!!!

2020-02-05 09:08发布

bdata->data->idata 都是单片机内部RAM。访问的指令不同而已, 从汇编的角度看,用的访问方式也不同。
xdata 是单片机通过地址总线外扩的RAM,古时候都是放在单片机外部的,现在也内置了。

idata的确是通过指针访问的,地址和data的128byte是重叠的。idata和特殊寄存器的高128byte也是重复的。单片机通过访问方式来区分他们。如果用C语言写,定义为idata即可,编译器自己会帮你搞定。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
2条回答
sgweilong
2020-02-05 10:15
idata定义在哪里,如果你不人为指定(用at命令)的话,会由编译器来指定。
data和idata在低128字节就是一样。data里面还有bdata,建议看看马忠梅的关于单片机C语言的书。

keil附录的帮助文档也可以看看,类型只是说明物理地址,我还曾经用过idata外面再扩展的cdata。
比如 uchar far rec0_data[200] _at_  0x7F0100;

没有什么技巧,都是按照地址去访问。你最终要知道你定义的这个数据到底存在单片机的什么位置。

一周热门 更多>