Hephaestus 发表于 2022-11-29 21:26 我能有什么用意??没有仔细看到他的代码而已。你急什么啊? |
xdqfc 发表于 2022-11-29 11:29 楼主已经解决问题了,你还在说这些错误的结论用意何在? xdata用movx指令访问 idata用mov @Ri (i=0 or 1)指令访问 你仔细看看楼主的代码! |
|
查idata,不是xdata。 |
|
P2是什么? |
yzwzfyz 发表于 2022-11-16 13:45 这才是正解!!!!!! |
|
答案正如楼上各位所说。 我错误的将R0、R1的寻址和DPTR的内容联系起来了。 我原以为DPTR的高8位(DPH)只要是00H就不会影响工作寄存器片外寻址的地址指向, 我错误的认为:工作寄存器片外寻址时其指向的地址=DPH+R0. 而实际上:P2的值才是地址总线的高8位,工作寄存器片外寻址时其指向的地址=P2+R0,而工作寄存器片外寻址时是不受DPH的影响的。 感谢上面的朋友们的解答! |
|
外XRAM地址是16位,含盖0000H-FFFFH。 DPTR是16位,所以用DPTR寻址,你一定能理解。 但R0是8位,你为何没有提出疑问呢? 还是没有认真读CPU手册,51系统规定,用@R0对XRAM寻址时,高8位隐含在P2中。 去核对一下:P2R0合成的地址看看,是不是也。 或者先将P2清0,再做一次。 劝君认真读一下手册,它是你精通单片机成为高手的必由之路! |
| 这个页地址是标准51没有的,查你用的单片机具体型号的手册吧。 |
MagicKrse 发表于 2022-11-16 10:31 不深究就学不会啊…… 你 页定义了么? 只要定义了页,就能正常写入啊。如图:
|
| 如果代码没问题的话我就不去深究了,因为我只是理论学习 |
人中狼 发表于 2022-11-16 09:03 用DPTR可以完成操作,但是R0、R1不行。不知道为啥会这样子 |
| 是否有实物外部存储器,软件仿真的话不一定能有结果 |
188610329 发表于 2022-11-15 19:09 往下继续走,X:0020H还是没变 |
Hephaestus 发表于 2022-11-15 17:09 X:FF20H查不了,是一片空白。不知道是为什么,我用的Keil 4仿真的 |
| 再往下走一步。 |
| 你看下X:FF20位置,应该已经改变了。 |