单片机 keil编程中我把data数据改成xdata类型,编译无误,但程序运行不了!为什么????急!

因为data将近达到128了,我的单片机为C8051F340,内部RAM为256,我要添加新的函数,我必须把全局变量赋为xdata类型,但只要我修改任何一个data类型数... 因为data将近达到128了,我的单片机为C8051F340,内部RAM为256,我要添加新的函数, 我必须把全局变量赋为xdata类型,但只要我修改任何一个data类型数据为xdata类型,程序都运行不了,有时模拟调试时能行,烧到单片机后,就不动了 展开
 我来答
jzhangchaochun
2010-10-25 · 超过33用户采纳过TA的回答
知道答主
回答量:73
采纳率:0%
帮助的人:0
展开全部
编译肯定不会报错,你改xdata只不过C编译器编译成MOVX @DPTR这样的指令,如果没有外扩存储器,可定跑不起来。而且我有一点疑问的是你把data用了接近128 Bytes,你主函数定义的变量很多还是用了iteration?

我怀疑你是不是data空间里面你是不是很多的constant,constant建议放在内部FLASH中,使用movc @dptr查表。

可以用pdata申明变量,用mov @Ri间接寻址方式访问内部全部的256bytes空间!
百度网友85cdc95e6
2010-10-26
知道答主
回答量:3
采纳率:0%
帮助的人:0
展开全部
xdata软件上是外部存储,物理上是可能在单片机内部,你写进去的时候可以的(注意:写入的地址是多少?)读出来的时候请问有根据这个地址来读吗?地址没分清楚当然读不到所存的数据了

data可以是自由分配,而xdata需要给它地址空间,举个例子:

unsinged char xdata *zhu;//定义zhu为外部ram的一个字节
zhu=0x0000; //给zhu一个地址是0x0000
(*zhu)=0xd6; //给zhu写入数据0xd6

a=(*zhu); //将zhu中数据读出到a中
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ATF144X
2010-10-25 · TA获得超过1.2万个赞
知道大有可为答主
回答量:5344
采纳率:77%
帮助的人:4671万
展开全部
XDATA型的数据是使用MOVX指令访问的,即XRAM,8051F340虽然有4K的XRAM,但是需要设置一些寄存器才能使用XRAM。你的情况是data达到128了,换成idata或pdata就能访问256字节的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Sunray
2013-08-08 · TA获得超过290个赞
知道小有建树答主
回答量:258
采纳率:0%
帮助的人:111万
展开全部
先设好页码寄存器,否则难以预测。你的现象就使这个!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
卯映菱3O
2010-11-01 · 超过15用户采纳过TA的回答
知道答主
回答量:69
采纳率:0%
帮助的人:40.3万
展开全部
你加外部存储器没嘛
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式