标题: STC89C52RC单片机内存大小问题 [打印本页]

作者: MirrAKe    时间: 2021-4-27 15:41
标题: STC89C52RC单片机内存大小问题
就是图中画圈的地方,这不就说明52rc单片机的ram空间有256吗?为什么keil编译时我的data大于128就不能编译了?这不就说明ram中有128的空间浪费了吗?而且我使用的也是stc的芯片包,也使用了对应的芯片

Desktop Screenshot 2021.04.27 - 15.40.07.99.png (108.54 KB, 下载次数: 80)

Desktop Screenshot 2021.04.27 - 15.40.07.99.png

Desktop Screenshot 2021.04.27 - 15.35.38.81.png (195.85 KB, 下载次数: 75)

Desktop Screenshot 2021.04.27 - 15.35.38.81.png

作者: zsw3721    时间: 2021-4-27 22:06
手册上说的很清楚了,直接寻址的是低128字节的内部RAM。想要用另外的128字节,在定义变量时在变量名称前加上idata。如unsigned char idata a[10];
作者: MirrAKe    时间: 2021-4-27 22:26
zsw3721 发表于 2021-4-27 22:06
手册上说的很清楚了,直接寻址的是低128字节的内部RAM。想要用另外的128字节,在定义变量时在变量名称前加 ...

谢谢!我还有一个问题就是这个idata和xdata是不是一样的啊?

作者: angmall    时间: 2021-4-27 22:30
MirrAKe 发表于 2021-4-27 22:26
谢谢!我还有一个问题就是这个idata和xdata是不是一样的啊?

这个idata和xdata是不一样的
STC12 有xdata
作者: wfqxgw    时间: 2021-4-27 22:31
xdata是属于片外的RAM了.速度很慢.一般先用data和idata
作者: MirrAKe    时间: 2021-4-28 17:54
angmall 发表于 2021-4-27 22:30
这个idata和xdata是不一样的
STC12 有xdata

谢谢解答!我还有点问提:就是我这个52rc编译的时候也能用xdata啊?写进去也能正常运行,还有就是为啥keil编译的时候不显示idata用了多少,我看好像是和data算在一起了
作者: MirrAKe    时间: 2021-4-28 17:54
wfqxgw 发表于 2021-4-27 22:31
xdata是属于片外的RAM了.速度很慢.一般先用data和idata

谢谢!
作者: as21cxz    时间: 2021-4-28 18:26
直接寻址的是低128字节的内部RAM。另外高的128字节是间接寻址,
(注意):直接寻址的低128字节比较快,高的128字节是间接寻址,它寻址的速度比直接寻址要慢。
作者: noadmin    时间: 2025-9-7 15:42
在keil5中data为197就报了,我想知道这个值的上限是多少?
*** ERROR L107: ADDRESS SPACE OVERFLOW
    SPACE:   DATA   
    SEGMENT: _DATA_GROUP_
    LENGTH:  006FH
Program Size: data=197.0 xdata=0 code=4316

作者: weisc6955    时间: 2025-9-7 19:02
noadmin 发表于 2025-9-7 15:42
在keil5中data为197就报了,我想知道这个值的上限是多少?
*** ERROR L107: ADDRESS SPACE OVERFLOW
     ...

低RAM 地址是 00-7f。 高位RAM地址是 80-FF。高位RAM地址是复用的,不能直接访问。
作者: xiaobendan001    时间: 2025-9-8 07:32
noadmin 发表于 2025-9-7 15:42
在keil5中data为197就报了,我想知道这个值的上限是多少?
*** ERROR L107: ADDRESS SPACE OVERFLOW
     ...

CODE才4316,DATA就用这么多了。
DATA只有128,还要空出来一些用作堆栈。
片内的高128要使用idata关键字标识一下。否则编译器不会自动使用的。
能用局部变量的就用局部的吧。
实在不行换带有XDATA的芯片吧
作者: noadmin    时间: 2025-9-14 17:39
xiaobendan001 发表于 2025-9-8 07:32
CODE才4316,DATA就用这么多了。
DATA只有128,还要空出来一些用作堆栈。
片内的高128要使用idata关键 ...

是不是用得全局变量比较多导致的?




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1