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外部地址

51单片机定义一个大数组存在idata与xdata中有什么区别?
区别如下:1、位置不同 idata定义在高128字节中,xdata定义在外部RAM中,一些单片机内部集成了外部RAM。2、访问速度不一样 访问idata的速度稍快。3、最后,可能也是最重要的,二者在初始化上区分很大。在基本所有编译器下,unsigned char idata num[3]={1,2,3};可以正确编译,在idata区中,可...

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...

51单片机定义一个大数组存在idata与xdata中有什么区别?
存储的区域不同 idata 是存在 内部RAM 80H--FFH,(对汇编指令来说,不可直接寻址,只能间接寻址)。xdata 是存在外部RAM ,有些单片机会在芯片内扩展一些RAM,这部分也要用 xdata,因为是同外部RAM共同编址的,汇编指令中都是用 MOVX来寻址。

51系列单片机中data idata xdata pdata的区别
IDATA:固定指前面0x00-0xFF的256个RAM,其中前128和DATA的128完全相同,只是因为访问的方式不同。IDATA是用类似C中的指针方式 访问的。汇编中的语句为:MOX ACC,@Rx。XDATA:外部扩展RAM,一般指外部0x0000-0xFFFF空间,用DPTR访问。PDATA:外部扩展RAM的低256个字节,地址出现在A0-A7的上时读写,用MOVX ...

单片机C语言中: 定义 int idata i;和 idata int i 的区别
idata和xdata的地址空间范围不同,以51单片机举例,idata一般就是指单片机内部128字节的RAM中,而xdata是指数据存放在外扩的RAM芯片中,导致了地址存取范围和寻址方式完全不同。从汇编语言的角度来说,idata使用MOV指令即可,而xdata必须使用MOVX指令才能寻址。C51中变量的存储器类型有code,data,idata,xdata...

Keil中data和idata,pdata,xdata以及code的区别
idata:访问间接寻址的片内存储器(标准51的256字节)。bdata:访问位寻址的片内存储器(标准51中从20H开始的16字节),支持位+字节的混合访问模式。xdata:访问外部数据存储器(默认仅限于标准51能够寻址的64kB空间内),生成的代码主要通过MOVX @A+DPTR实现。far:扩展的RAM及ROM访问方式,最大支持...

求助关于单片机中idata和xdata的问题
idata 是声明变量放在内部RAM存储区,而且可以用到高128B xdata是声明变量放在外部RAM存储区,需要外部扩展数据存储器才行的。

51单片机C语言 几个数组定义的区别
是指在内ram区分配一个指针变量("*"号后的data关键字的作用),而且这个指针本身指向xdata区("*"前xdata关键字的作用),可能初学C51时有点不好懂也不好记。没关系,我们马上就可以看到对应“*”前后不同的关键字的使用在编译时出现什么情况。...uchar xdata tmp[10]; \/\/在外ram区开辟10个字...

keilC51里idata,bdata...这些关键字都是什么意思?
1. idATa: 指前面0x00-0xff的256个RAM,其中前128个与dATa的128个完全相同,只是因为访问方式不同。idATa采用类似于C语言中的指针方式访问。2. bDATA: 内部数据存储空间中20H到2FH区域的一个位的地址,以字节形式出现,可以互相参照。此外,还包括8051可寻址的SFR。3. startup.a51: 用于初始化C...

单片机C51 用idata 及xdata 定义变量的存放区域 及其汇编指令
idata 就是在单片机内部RAM定义变量(256byte),只能间接寻址.汇编指令就是MOV X, Rn.xdata 就是在外部RAM定义变量(64KB),通过 MOVX @DPTR访问.

相似回答