AT89S52在KEIL中如何设置?

AT89S52的RAM为256字节,但是为什么在编程中使用的变量不能超过128字节呢(超过编译就会出错)?哪位高手知道请指点!!谢谢!!... AT89S52的RAM为256字节,但是为什么在编程中使用的变量不能超过128字节呢(超过编译就会出错)?
哪位高手知道请指点!!
谢谢!!
展开
 我来答
realdyp
2009-07-18 · 超过15用户采纳过TA的回答
知道答主
回答量:22
采纳率:0%
帮助的人:43万
展开全部
AT89S52有256字节片内数据存储器。高128字节与特殊功能寄存器重叠。
也就是说高128字节与特殊功能寄存器有相同的地址,而物理上是分开的。
当一条指令访问高于7FH的地址时,寻址方式决定 CPU 访问高128字节RAM 还是访问特殊功能寄存器空间。

正是单片机的上述硬件结构导致:
低128字节的RAM空间可以以“直接寻址”或“间接寻址”方式访问;
高128字节的RAM空间只能以“间接寻址”方式访问;
若以“直接寻址”方式访问一个位于高128字节的地址,其实访问的是单片机的特殊寄存器空间;

所以说,不是“变量不能超过128字节”,而是“可以以“直接寻址方式”访问的RAM空间不能超过128字节

在KEIL中,使用 DATA,IDATA等关键字定义变量的访问方式
DATA :直接寻址方式,亦是KEIL的默认设置
IDATA:间接寻址方式,可以访问整个256字节RAM空间

由上,可以把你程序中的一些访问不是很频繁的变量,改为以间接寻址方式访问,比如: unigned char idata temp;

供参考。
25861831
2009-07-18 · TA获得超过836个赞
知道小有建树答主
回答量:1048
采纳率:0%
帮助的人:532万
展开全部
256字节分成两个区的,分别给不同类型的变量
分为高低各128字节,不能混着用的
随便找个单片机的书都有写
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式