关于双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来操作的。
251架构已经不需要双数据指针这些了,本身的指针操作已经很强了 bkeuqoaq 发表于 2024-11-14 09:34
251架构已经不需要双数据指针这些了,本身的指针操作已经很强了
8G2K32S2 ZJYYL 发表于 2024-11-14 10:19
8G2K32S2
看错了 关键时刻关总中断EA即可。
即这段程序的前后加开/关总中断 学习 LAOXU 发表于 2024-11-14 10:42
关键时刻关总中断EA即可。
即这段程序的前后加开/关总中断
中断程序里有DPH DPL堆栈出栈,会影响这个么?关中断不太好,影响别的程序执行 ZJYYL 发表于 2024-11-15 15:13
中断程序里有DPH DPL堆栈出栈,会影响这个么?关中断不太好,影响别的程序执行 ...
不想关总中断, 那么请在所有的中断程序中, 入口外, 将 dph1,dpl1,dps 压栈, 并且设置 DPS =00H, 在退出中断时, 将 dph1,dpl1,dps 弹出堆栈恢复.
这样也行. 用keil C是不是就没办法用双DPTR这个buffer了? LAOXU 发表于 2024-11-15 19:40
不想关总中断, 那么请在所有的中断程序中, 入口外, 将 dph1,dpl1,dps 压栈, 并且设置 DPS =00H, 在退出中 ...
谢谢,看来只堆栈DPH DPL 是不够的,我试试
页:
[1]
2