搞不明的小程序

来源:百度知道 编辑:UC知道 时间:2024/05/17 09:11:43
大家好,我现在写程序中的一个子程序,主要功能是让P1.0口上口的LED亮,而且是每隔0.2S亮,我觉得这个程序应该很简单,我的程序如下,但是我用烧录器将下面的程序直接烧在51单片机上,发现LED没有这样工作,只是一直亮,我真的搞不明白,请大家指教一下.还有大家看下我那个延迟程序是不是0.2S,谢谢....

LOOP:
CPL P1.0
LCALL DELAY
LJMP LOOP

DELAY:
SETB RS0
CLR RS1
MOV R3,#3
LOOP2:MOV R1,#250
D1:MOV R2,#200
D2:DJNZ R2,D1
DJNZ R1,D1
DJNZ R3,LOOP2
RET
END

0.2秒可能太短了,你的眼镜看不出来。另外你的延世程序错了
D1:MOV R2,#200
D2:DJNZ R2,D1--------- r2减1又跳到d1 给r2赋值,这是个死循环!

你的延时程序有问题
DELAY:
SETB RS0
CLR RS1
MOV R3,#3
LOOP2:MOV R1,#250
D1:MOV R2,#200
;---------------------
D2:DJNZ R2,D1 (这里的D1要改为D2,不然死循环)
;---------------------
DJNZ R1,D1
DJNZ R3,LOOP2
RET
END