打印

求教:SH67系列RAM用**

[复制链接]
1849|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yyfsxs|  楼主 | 2008-9-28 13:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
RAM的地址在00H-0FH可以进行直接寻址和定义,如:
AAA EQU 30H
LDI AAA,00H
但超过OFH后,便无法使用即时定位来定义,必须使用间接定址来做数据的存取
如(将立即数05h存入RAM 80H中):
LDI TMP,05H
LDI DPH,01H
LDI DPM,00H
LDI DPL,00H
LDA TMP,00H
STA INX,00H
很不方便,是否还有其它方法使用80H-16FH像00h-70h一样简便?
沙发
rqiang| | 2008-9-28 14:33 | 只看该作者

这样间接寻址就可以


先在RAM BANK0中定义一个临时寄存器,如:
ACC_TEMP_B0   EQU  047H

然后RAM BANK1中定义一个你使用的寄存器,如:
RAM_DATA_B1  EQU  080H

通过一些语句实现间接寻址:


LDI   ACC_TEMP_B0, 05H;先将05H赋给RAM BANK0中的寄存器ACC_TEMP_B0
STA  RAM_DATA_B1, 01H;然后将ACC_TEMP_B0的值赋给RAM BANK1中你用到的寄存器

使用特权

评论回复
板凳
yyfsxs|  楼主 | 2008-9-28 16:16 | 只看该作者

谢谢

试了一下,可以赋值.
可编译器出现:
warnig:Memory address is out of range,truncated to 7 bits.
这是什么原因?
有影响吗?

使用特权

评论回复
地板
warm_ice| | 2008-9-29 15:56 | 只看该作者

没有影响

只是警告,没有影响的,放心.

使用特权

评论回复
5
yyfsxs|  楼主 | 2008-9-29 20:42 | 只看该作者

原来如此

使用特权

评论回复
6
qwjx| | 2009-8-21 12:12 | 只看该作者
有警告没关系的,不影响程序的烧写和正常运行,我编译程序时经常会出现个别警告

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

35

帖子

0

粉丝