帮忙解释如下单片机程序,想实现单灯闪烁,但是只能做到一个灯亮,怎么修改?在线等

org0000hl1:cplp0.0movr7,#0ffhl2:movr6,#0ffhl3:nopdjnzr6,l3djnzr7,l2sjmpl1end...
2026年09月21日 17:12
有3个网友回答
网友(1):

org 0000h

l1:cpl p0.0;输出取反,不断翻转 产生闪烁

mov r7,#0ffh;延时计数器R7取255次
l2:mov r6,#0ffh;延时计数器R6取255次
l3:nop;
djnz r6,l3;R6减一次,不为0就转 L3继续
djnz r7,l2;R7减一次,不为0就转 L2继续(总延时≈255X255X(2+1)机器周期)12MHZ晶振时约0.2秒

sjmp l1;重复执行上述程序
end

用12MHZ晶振,上述程序是亮0.2 秒灭0.2秒,每秒闪2-3次,应该可以看到的.如果只长亮就要看硬件方面了.

网友(2):

只看这段程序,功能应该就是实现灯的闪烁,如果看不到闪的效果只是一直亮,很有可能是因为延时时间太短,闪烁频率太高,你的眼睛不能分辨!一般来说人的眼睛能分辨10hz左右的频率,如果有条件的话有示波器测一下灯的电压波形是不是一个方波形式,如果是那就说明是延时太短。
没有条件可以改程序试试看!如:
org 0000h
l1:cpl p0.0
mov r7,#0ffh
l2:mov r6,#0ffh
l3:nop
nop
nop
nop
nop
nop
nop
nop
;这一段多加几个nop试一下,最简单的了,如果有效果可以考虑其他延时程序!
djnz r6,l3
djnz r7,l2
sjmp l1
end

本人好长时间没用汇编了,希望对你有帮助!

网友(3):

可能是延时时间太短了.多加几个NOP试试
org 0000h
l1:cpl p0.0
mov r7,#0ffh
l2:mov r6,#0ffh
l3:nop
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
djnz r6,l3
djnz r7,l2
sjmp l1
end