一个最简单的使用双DPTR移动数据的程序,代码如下:
AUXR1 equ 0A2h
cseg at 0
start: mov dptr,#00h
inc AUXR1
mov dptr,#10h
mov r7,#128
Rb2B1: inc AUXR1
clr a
movc a,@a+dptr
inc dpl
inc AUXR1
movx @dptr,a
inc dptr
djnz r7,Rb2B1
inc AUXR1
sjmp $
;
end
就是这里的 inc AUXR1 指令根本不能切换数据指针.
如果把单片机选型为 NXP 的 PLC932 就可以正确的模拟仿真了.
而选择所以新唐单片机型号都是错误的.
就是在带上N-Link仿真器的实际调试中也是有问题:
一旦单步执行了 inc AUXR1 指令,Memor视窗中的 X:10h 数据也
会同时来回切换.在指针2下的数据全是00,切换回指针1就是正常数据了.
而连续执行情况下的结果是正确的.
这是仿真驱动软件BUG吗?
|