![]() |
發布時間: 2022-11-15 11:53
正文摘要:在第7行之前,R0的值已經等于20H,A的值已經等于DDH。 第7行 MOVX @R0,A 表示將A的值賦給R0的值所指向的片外RAM的存儲單元 但為什么第7行代碼在執行完以后,片外RAM的20H的值并沒有發生變化呢? |
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位置,應該已經改變了。 |