51单片机定义一个大数组存在idata与xdata中有什么区别?
5个回答
展开全部
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、位置不同 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、访问速度不一样 访问idata的速度稍快。
3、最后,可能也是最重要的,二者在初始化上区分很大。
在基本所有编译器下,unsigned char idata num[3]={1,2,3};可以正确编译,在idata区中,可以看到该数组。
但是unsigned char xdata num[3]={1,2,3},在一些编译器下,xdata中,看不到该数组,程序可能不正确运行。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
存储的区域不同
idata 是存在 内部RAM 80H--FFH,(对汇编指令来说,不可直接寻址,只能间接寻址)。
xdata 是存在外部RAM ,有些单片机会在芯片内扩展一些RAM,这部分也要用 xdata,因为是同外部RAM共同编址的,汇编指令中都是用 MOVX来寻址。
idata 是存在 内部RAM 80H--FFH,(对汇编指令来说,不可直接寻址,只能间接寻址)。
xdata 是存在外部RAM ,有些单片机会在芯片内扩展一些RAM,这部分也要用 xdata,因为是同外部RAM共同编址的,汇编指令中都是用 MOVX来寻址。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一个是内部RAM 一个是外部扩展RAM
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-04-29
展开全部
idata间接寻址
xdata外部地址
xdata外部地址
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询