把sp设置高了是不是能腾出内存?

[复制链接]
3233|10
 楼主| yanxuetao 发表于 2008-10-31 14:06 | 显示全部楼层 |阅读模式
51单片机sp默认是从7FH开始的(有说07H,但是我软件仿真时是7FH),把它修改为其他的,比如:B0H,那么原来data可以从00H到7FH,设完之后data是不是可以从00H到B0?
望高手指教!
lyjian 发表于 2008-10-31 14:12 | 显示全部楼层

51单片机sp默认是从07H开始

软件仿真时是7FH是因为软件对它作了修改。
SP设置成B0H的时候data是可以从00H到B0,但你要小心不要让SP溢出了。
aceice 发表于 2008-10-31 14:14 | 显示全部楼层

可用的RAM与SP的位置无关

只是你设置到07H以外的位置,不容易冲突。
 楼主| yanxuetao 发表于 2008-10-31 14:24 | 显示全部楼层

谢谢楼上各位

我把sp设置为B0H了,堆栈到没有溢出,只是data还是00H到7FH那么多,没有多出来,我定义了个数组,需要用到B0H。是不是我还有其他地方没设置对?
s46410864 发表于 2008-10-31 14:25 | 显示全部楼层

同意LS

51单片机中RAM就是那些,把SP设在07H后面的哪里都不能增加
lyjian 发表于 2008-10-31 14:33 | 显示全部楼层

有些51的RAM是128B,有些是256B

你用的是什么型号
 楼主| yanxuetao 发表于 2008-10-31 14:50 | 显示全部楼层

回6楼 ti的msc1214y5

lyjian 发表于 2008-10-31 15:21 | 显示全部楼层

80~FF的是IDATA

 楼主| yanxuetao 发表于 2008-10-31 15:55 | 显示全部楼层

回8楼:是这样的,我从新改了数组安排

ayb_ice 发表于 2008-10-31 21:59 | 显示全部楼层

堆栈是由编译器自动设置的

weishg 发表于 2008-11-1 13:45 | 显示全部楼层

如下

所谓的SP默认是0X07,是指单片机复位后的值,如果SP是其他值,则是C编译器给它初始化的值,如果是汇编程序,不加编译器的启动代码,在没改变SP之前其值就是07H
如果单片机有256字节的RAM,那后面的高128字节定义为间接存储区,只能用间接寻址法
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

11

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部