51单片机定义一个大数组存在idata与xdata中有什么区别?

如题所述

51单片机定义一个大数组存在idata与xdata区别为:空间不同、访问不同、获取不同。

一、空间不同

1、idata:idata占用51单片机内部RAM的固定0x00-0xff空间。

2、xdata:xdata占用51单片机外部RAM扩展的0x0000-0xffff空间。

二、访问不同

1、idata:idata用类似C中的指针方式进行访问。

2、xdata:xdata用DPTR进行访问。

三、获取不同

1、idata:51单片机编译成功后,在idata区中,可以直接获取到定义的数组。

2、xdata:51单片机编译成功后,在xdata区中,不可以直接获取到定义的数组。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-24
区别如下:1、位置不同 idata定义在高128字节中,xdata定义在外部RAM中,一些单片机内部集成了外部RAM。
2、访问速度不一样 访问idata的速度稍快。
3、最后,可能也是最重要的,二者在初始化上区分很大。
在基本所有编译器下,unsigned char idata num[3]={1,2,3};可以正确编译,在idata区中,可以看到该数组。
但是unsigned char xdata num[3]={1,2,3},在一些编译器下,xdata中,看不到该数组,程序可能不正确运行。本回答被提问者采纳
第2个回答  2011-04-29
存储的区域不同
idata 是存在 内部RAM 80H--FFH,(对汇编指令来说,不可直接寻址,只能间接寻址)。
xdata 是存在外部RAM ,有些单片机会在芯片内扩展一些RAM,这部分也要用 xdata,因为是同外部RAM共同编址的,汇编指令中都是用 MOVX来寻址。
第3个回答  2011-04-29
一个是内部RAM 一个是外部扩展RAM
第4个回答  2011-04-29
idata间接寻址
xdata外部地址
相似回答