求教:SH67系列RAM用**

[复制链接]
3362|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 | 显示全部楼层

没有影响

只是警告,没有影响的,放心.
 楼主| yyfsxs 发表于 2008-9-29 20:42 | 显示全部楼层

原来如此

qwjx 发表于 2009-8-21 12:12 | 显示全部楼层
有警告没关系的,不影响程序的烧写和正常运行,我编译程序时经常会出现个别警告
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

35

帖子

0

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