51单片机在申请变量时总是有data,idata,xdata等限定词,可以不用吗?有什么好处吗?为什么别的单片机没有

如题所述

data: 固定指前面0x00-0x7f的128个RAM,可以用acc直接读写的,速度最快,生成的代码也最小。
idata: 固定指前面0x00-0xff的256个RAM,其中前128和dATa的128完全相同,只是因为访问的方式不同。idata:是用类似C中的指针方式 访问的。汇编中的语句为:mox ACC,@Rx.(不重要的补充:c中idATa做指针式的访问效果很好)
xdata: 外部扩展RAM,一般指外部0x0000-0xffff空间,用DPTR访问。
pdata: 外部扩展RAM的低256个字节,地址出现在A0-A7的上时读写,用movx ACC,@Rx读写。这个比较特殊,而且C51好象有对此BUG, 建议少用。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-11-16
使用这些限定词,编程人,就可以自主定义,各个变量的存储空间。

如果对单片机的硬件不熟,也可以不用写这些,而由编译软件自动安排变量的位置。
现在,编译软件的智能性已经不错了,基本上,不用再进行人为的限定。
第2个回答  2013-11-16
个鼓风机功夫才

51单片机在申请变量时总是有data,idata,xdata等限定词,可以不用吗?有...
data: 固定指前面0x00-0x7f的128个RAM,可以用acc直接读写的,速度最快,生成的代码也最小。idata: 固定指前面0x00-0xff的256个RAM,其中前128和dATa的128完全相同,只是因为访问的方式不同。idata:是用类似C中的指针方式 访问的。汇编中的语句为:mox ACC,@Rx.(不重要的补充:c中idATa做指针式的...

51单片机定义一个大数组存在idata与xdata中有什么区别?
1、idata:51单片机编译成功后,在idata区中,可以直接获取到定义的数组。2、xdata:51单片机编译成功后,在xdata区中,不可以直接获取到定义的数组。

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

C51中的data和idata有什么区别,谢谢了
1、作用机理不一样:data:直接寻址的片内RAM区低128B(00H~7FH)。idata::单片机间接访问的片内RAM区,允许访问全部片内RAM。2、使用的方向不一样:data:计算机中程序、文稿、数字、图像、声音等信息。idata:idata是51系列单片机能识别的存储器类型之一,固定指前面0x00-0xff的256个字节的片内RA...

关于单片机 xdata data ram sram code的关系
对于51\/52单片机,data是内部低128字节的ram,可以省略data符号 idata是内部高128字节的ram, 51没有,52才有,对于stc单片机,片上超过256字节的那部分ram,相当于外部ram,,使用时加xdata 修饰 code是相当于flash,最大是否可以到8k,可以试一下 ...

单片机里的code xdate date 分别代表什么东东
如果变量不指定存储位置,默认就是data型,这部分存储器寻址速度最快 idata 指定数据存储在内部低256字节数据存储器里,但51只有128字节内部RAM,52才有256字节 pdata 指定数据存储在外部低256字节数据存储器里,这时候寻址用8位寄存器R0和R1,而不用16位的DPTR,寻址速度比xdata快 ...

Keil中data和idata,pdata,xdata以及code的区别
data:访问可直接寻址的片内存储器(标准51的低128字节),从而实现对变量最高速的访问。idata:访问间接寻址的片内存储器(标准51的256字节)。bdata:访问位寻址的片内存储器(标准51中从20H开始的16字节),支持位+字节的混合访问模式。xdata:访问外部数据存储器(默认仅限于标准51能够寻址的64kB空间...

MCS-51单片机中内部RAM可划分为几个区域?各区域的特点是什么?
DATA区:又叫直接寻址区,位于单片机内部RAM的前128个字节,可以直接寻址,例如MOV A,30H,一般在写C程序的时候,把一些经常用到的变量放在这个区里面,这样可以节省机器周期。IDATA区:间接寻址区,单片机内部RAM的前256个字节,用间接寻址进行访问。例如:MOV R0,#30H MOV A,@R0 这里要说明...

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

idata51单片机存储区
位于地址00H至FFH。最后,xdata区则是通过DPTR间接访问的片外RAM,它具有更大的容量,可以访问整个64KB的片外RAM,范围从0000H到FFFFH。这对于需要更大存储空间的应用程序来说是非常重要的。总的来说,这些存储区域在51单片机中各司其职,为程序提供了不同的存储和访问方式,以满足不同程序的需求。

相似回答