ZJYYL 发表于 2024-11-12 14:57:02

关于双DPTR的使用问题:

本帖最后由 ZJYYL 于 2024-11-14 10:20 编辑

单片机型号:8G2K32S2   
      MOVP_SW2,#80H
      MOVDPS,#0B8H         ;DP0自动递增,DP11递减 ,使能切换,使能递增,选择DPTR0
      MOVDPTR,#MD0
      MOVXA,@DPTR
      MOVX @DPTR,A

      MOVXA,@DPTR
      MOVX @DPTR,A            ;DPTR0指向的两字节数据存入MD0,MD1
      MOVDPS,#00H
      MOV P_SW2,#00H
老师们,这么用是哪里有问题?发现这个会导致扩展RAM数据出错,因为扩展RAM使用DPTR0来操作的。


bkeuqoaq 发表于 2024-11-14 09:34:58

251架构已经不需要双数据指针这些了,本身的指针操作已经很强了

ZJYYL 发表于 2024-11-14 10:19:55

bkeuqoaq 发表于 2024-11-14 09:34
251架构已经不需要双数据指针这些了,本身的指针操作已经很强了

8G2K32S2

bkeuqoaq 发表于 2024-11-14 10:36:22

ZJYYL 发表于 2024-11-14 10:19
8G2K32S2

看错了

LAOXU 发表于 2024-11-14 10:42:29

关键时刻关总中断EA即可。
即这段程序的前后加开/关总中断

hande5 发表于 2024-11-14 11:44:42

学习

ZJYYL 发表于 2024-11-15 15:13:30

LAOXU 发表于 2024-11-14 10:42
关键时刻关总中断EA即可。
即这段程序的前后加开/关总中断

中断程序里有DPH DPL堆栈出栈,会影响这个么?关中断不太好,影响别的程序执行

LAOXU 发表于 2024-11-15 19:40:12

ZJYYL 发表于 2024-11-15 15:13
中断程序里有DPH DPL堆栈出栈,会影响这个么?关中断不太好,影响别的程序执行 ...

不想关总中断, 那么请在所有的中断程序中, 入口外, 将 dph1,dpl1,dps 压栈, 并且设置 DPS =00H, 在退出中断时, 将 dph1,dpl1,dps 弹出堆栈恢复.
这样也行.

21cnsound 发表于 2024-11-15 21:44:30

用keil C是不是就没办法用双DPTR这个buffer了?

ZJYYL 发表于 2024-11-16 19:34:17

LAOXU 发表于 2024-11-15 19:40
不想关总中断, 那么请在所有的中断程序中, 入口外, 将 dph1,dpl1,dps 压栈, 并且设置 DPS =00H, 在退出中 ...

谢谢,看来只堆栈DPH DPL 是不够的,我试试
页: [1] 2
查看完整版本: 关于双DPTR的使用问题: