单片机 keil编程中我把data数据改成xdata类型,编译无误,但程序运行不了!为什么????急!
因为data将近达到128了,我的单片机为C8051F340,内部RAM为256,我要添加新的函数,我必须把全局变量赋为xdata类型,但只要我修改任何一个data类型数...
因为data将近达到128了,我的单片机为C8051F340,内部RAM为256,我要添加新的函数, 我必须把全局变量赋为xdata类型,但只要我修改任何一个data类型数据为xdata类型,程序都运行不了,有时模拟调试时能行,烧到单片机后,就不动了
展开
6个回答
展开全部
xdata软件上是外部存储,物理上是可能在单片机内部,你写进去的时候可以的(注意:写入的地址是多少?)读出来的时候请问有根据这个地址来读吗?地址没分清楚当然读不到所存的数据了
data可以是自由分配,而xdata需要给它地址空间,举个例子:
unsinged char xdata *zhu;//定义zhu为外部ram的一个字节
zhu=0x0000; //给zhu一个地址是0x0000
(*zhu)=0xd6; //给zhu写入数据0xd6
a=(*zhu); //将zhu中数据读出到a中
data可以是自由分配,而xdata需要给它地址空间,举个例子:
unsinged char xdata *zhu;//定义zhu为外部ram的一个字节
zhu=0x0000; //给zhu一个地址是0x0000
(*zhu)=0xd6; //给zhu写入数据0xd6
a=(*zhu); //将zhu中数据读出到a中
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
XDATA型的数据是使用MOVX指令访问的,即XRAM,8051F340虽然有4K的XRAM,但是需要设置一些寄存器才能使用XRAM。你的情况是data达到128了,换成idata或pdata就能访问256字节的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
先设好页码寄存器,否则难以预测。你的现象就使这个!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你加外部存储器没嘛
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询