ORG 0030H ;程序由地址30开始
JMP DDW
DDW: MOV SP,60H ;置位堆栈指针至RAM地址60H
LOOP: ;循环
CPL P1.7 ;位反向
MOV R5,#15 ;加载延时参数
CALL DELAY ;调用延时子程序
JMP LOOP ;再循环执行一次
DELAY:MOV R6,50 ;延时子程序
S1: MOV R7,100
DJNZ R7,$
DJNZ R6,S1
DJNZ R5,DELAY
RET
END
用仿真软件仿真时,为什么R0寄存器地址变化,PC变化,SP不变,MOV R6,50 MOV R7,100 是否改为立即数#50,#100,若不改,原程序延时多长,请赐教为谢!
89c51单灯闪烁实验程序
全部回复(5)
正序查看
倒序查看
现在还没有回复呢,说说你的想法
@daniellew
非常感谢,有问题再请教张工,若程序为:ORG0030H MOVR2,#10H 用仿真软件仿真时,寄存器R0的数据变化不定,而寄存器R2的数据不变化仍为00H.当ORG0030H改为ORG0010H或ORG0000H时,则R2的数据为10H,寄存器R0的数据为0H,为什么,我不明白.仿真软件为KEIL51.谢!
ORG 0030H
JMP DDW
DDW:MOV SP ,#60H
MOV R5 ,#10H
以上这段小程序,PC指针反复+1/-1,好象程序在反复循环,寄存器R5无数据,但寄存器R0不但变化.但若改为以下:
ORG 0000H
JMP DDW
DDW:MOV SP ,#60H
MOV R5 ,#10H
用仿真软件仿真时,寄存器R5数据为10H,一切正常.
请大家指教!为谢!
JMP DDW
DDW:MOV SP ,#60H
MOV R5 ,#10H
以上这段小程序,PC指针反复+1/-1,好象程序在反复循环,寄存器R5无数据,但寄存器R0不但变化.但若改为以下:
ORG 0000H
JMP DDW
DDW:MOV SP ,#60H
MOV R5 ,#10H
用仿真软件仿真时,寄存器R5数据为10H,一切正常.
请大家指教!为谢!
0
回复
提示