BeHappy 发表于 2024-3-10 23:08:30

请教个问题:为什么是用'MOV + 字寄存器'指令间接读写STC32的XFR

请教个问题:

在学习mcu STC32的存储空间映射时,突然有个问题想不通了:
已知,STC32的XFR位于XDATA区域的7E:0000H ~ 7E:FFFFH范围,扩展RAM位于01:0000H ~ 01:1FFFH范围,访问扩展RAM用 ‘MOVX    +@Ri’或 'MOVX + @DPTR'等形式间接访问,而同为XDATA区域的XFR们用的是'MOV+@DRk'间接访问。


问题:
XFR为什么用的是'MOV+@DRk'形式访问,而不是'MOVX' 形式?

zxcv1973 发表于 2024-3-10 23:47:04

访问扩展RAM也可用'MOV+@DRk'间接访问,XFR也可用MOVX指令,只不过效率太低,要先设置DPXL为7EH

社区闲人 发表于 2024-3-11 09:50:42

查看80251的datasheet, MOV    @DRk , Rm的指令周期是4个时钟。STC32给出的是1个个时钟。

社区闲人 发表于 2024-3-11 10:06:23

80251的datasheet, MOV   Rm , dir8(i/o) 的读IO指令的执行周期是2+1,共3个时钟周期。
STC32的这个指令周期是1个时钟周期。经过反复验证确认,确实是1个时钟周期。

zxcv1973 发表于 2024-3-11 10:53:00

社区闲人 发表于 2024-3-11 09:50
查看80251的datasheet, MOV    @DRk , Rm的指令周期是4个时钟。STC32给出的是1个个时钟。 ...

STC的MOV@DRk , Rm指令周期看DRk指向的位置,如果是EDATA区域1个时钟,其他区域3个时钟

社区闲人 发表于 2024-3-11 11:22:25

谢谢楼上网友的提醒。

BeHappy 发表于 2024-3-11 20:16:02

zxcv1973 发表于 2024-3-10 23:47
访问扩展RAM也可用'MOV+@DRk'间接访问,XFR也可用MOVX指令,只不过效率太低,要先设置DPXL为7EH ...

学习了,思路一下子打开了
感谢指导

BeHappy 发表于 2024-3-11 20:17:17

感谢楼上各位的指导,不胜感激。
祝各位,工作顺利!

BeHappy 发表于 2024-3-12 22:41:23

zxcv1973 发表于 2024-3-10 23:47
访问扩展RAM也可用'MOV+@DRk'间接访问,XFR也可用MOVX指令,只不过效率太低,要先设置DPXL为7EH ...

今天验证了一下,是这样测试读的:
MOV                DPXL, #7EH
MOV                DPTR, #WORD0 CHIPID7
MOVX        A, @DPTRbuild 没问题,结果也读取正确{:4_250:}
想多问下,从哪里才能获取到这样的知识

zxcv1973 发表于 2024-3-13 11:34:35

BeHappy 发表于 2024-3-12 22:41
今天验证了一下,是这样测试读的:
build 没问题,结果也读取正确
想多问下,从哪里才能获取到这样的知识 ...

看何宾老师那个视频
页: [1]
查看完整版本: 请教个问题:为什么是用'MOV + 字寄存器'指令间接读写STC32的XFR