版主
主题
帖子
积分34308
阅读权限200
注册时间2008-11-22
最后登录1970-1-1
在线时间 小时
|
<P>以前一直写小程序,ram怎么用也用不完。 </P>
<P> </P>
<P> </P>
<P>刚才想把翻页钟再修改下,增加显示缓存,结果出现 <FONT color=red>*** ERROR L107: ADDRESS SPACE OVERFLOW</FONT></P>
<P>看看datasheet明明有256B的ram可以用。</P>
<P>再看看某教程才发现原来还有那么多存储器类型,以前都不知道。</P>
<P> </P>
<P>显示缓存放 data 好 还是 idata好。 </P>
<P> </P>
<P>又看到说</P>
<P>但 small 模式下未指存储类型的变量默认为data型,即直接寻址,只能访问低 128 个字节,但这 128 个字节也不是全为你程序所有,寄存器 R0-R7必须映射到低RAM,要占去 8 个字节,如果使用寄存组切换,占用的更多。 <BR><BR>所以你<FONT color=red>可以使用 data 区最大为 120 字节</FONT>,超出 120 个字节则必须用 idata 显示的指定为间接寻址,另外<FONT color=red size=5>堆栈至少要占用一个字节</FONT>,所以你最多能使用 127 上字节(如果) <BR> </P>
<P> </P>
<P>是不是说S52上就不能用128B的 ram来做显示缓存了??</P>
<P> </P>
<TABLE class=t_table cellSpacing=0 cellPadding=0 width="50%">
<TBODY>
<TR>
<TD> 存储器类型</TD>
<TD> 说 明 <BR></TD></TR>
<TR>
<TD>data</TD>
<TD> 直接访问内部数据存储器(128字节),访问速度最快 <BR></TD></TR>
<TR>
<TD>bdata </TD>
<TD> 可位寻址内部数据存储器(16字节) ,允许位与字节混合访问</TD></TR>
<TR>
<TD>idata</TD>
<TD> 间接访问内部数据存储器(256字节) ,允许访问全部内部地址</TD></TR>
<TR>
<TD>pdata</TD>
<TD> 分页访问外部数据存储器(256字节) ,用MOVX @Ri指令访问</TD></TR>
<TR>
<TD>xdata</TD>
<TD> 外部数据存储器(64KB),用MOVX @DPTR指令访问</TD></TR>
<TR>
<TD>code</TD>
<TD> 程序存储器(64KB),用MOVC @A+DPTR指令访问</TD></TR></TBODY></TABLE>
<P> </P>
<P> <BR> <BR> <BR> <BR> </P> |
|