51单片机,keilc51,如何使用data变量超过128怎么办?谢谢

使用idata定义变量可以成功构建,但是端口信号错乱无法使用,有什么办法吗?... 使用idata定义变量可以成功构建,但是端口信号错乱无法使用,有什么办法吗? 展开
 我来答
七彩镜
2015-05-10 · TA获得超过1127个赞
知道小有建树答主
回答量:273
采纳率:0%
帮助的人:207万
展开全部
将堆栈指针SP指向128之后。如果你定义了数组。将数组定义为Idata。很难想象单个变量使用,你能用尽128个data类内存单元。如果真的用尽了,那只有将访问频率低的内存单元放到idata类去。总之,不要走极端,变量也有轻重缓急之分,不能一味追求性能将所有变量都定为data类。
追问
我用idata定义那些大的数据类型后,程序是c写的,是可以构建成功的,但是程序运行错误,未输入就端口信号乱波动,板子芯片木有外置ram,单单是stc89c52的裸片。
我就是想问问idata怎么使用,或者推荐些书和资料也可以,谢谢
追答

如果是C写的程序,不用关心变量的使用问题,不管是什么内存类型的。对变量的内存类型的定义,只会影响执行速度,通常不会导致程序执行错误。所以程序运行错误应该还是你的程序有问题。

       当然因为51的内存有限,你使用idata内存应该留有余地,因为51的堆栈也在idata区里,你多少要留出堆栈空间,否则程序运行可能会崩溃。建议堆栈至少留8个字节以上。

       留心一下附件的第二章第2节。

找她的那个他
2015-05-10 · 超过41用户采纳过TA的回答
知道小有建树答主
回答量:64
采纳率:0%
帮助的人:44.7万
展开全部
减少全局变量的使用,编译后不要让data大于128,可以使用Xdata
追问
我使用的是数组变量,板子没外置ram,不能用xdata,最近两天一直在优化代码,原来是200多,硬是让我缩减到160,但还是不能用,头痛不已啊。
想请问还有有什么别的办法吗?
追答
坐等大神指点
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式