8路彩灯也可以呀电路图很简单照课本抄
程序如下
ORG 0000H
SJMP MAIN
ORG 0030H
MAIN:
MOV TMOD,#21H;设定T0为16位定时模式T1为8位自动重装计数模式
SETB TR0;开定时器
SETB TR1
MOV R7,#4;设置N路彩灯这里设置为4路
MOV R6,#4
MOV R5,#4
MOV A,#00H
LOOP:
MOV P1,A;从做到右逐次点亮
RL A
INC A
ACALL MAIN0;调用延时
DJNZ R7,LOOP
MAIN1:MOV A,#0FFH
MOV P1,A
RR A
SUBB A,#08H;各路彩灯在这里设置立即数不同
ACALL MAIN0
DJNZ R6,MAIN1
MAIN2:MOV A,#00H
MOV P1,A
CPL A
ACALL MAIN0
DJNZ R5,MAIN2
LJMP MAIN
MAIN0:MOV DPTR,#15536;设定T0定时50ms的初值
MOV TL0,DPL
MOV TH0,DPH
MOV TL1,#236;设定t1计数20次即20*50ms=1s
MOV TH1,#236
JNB TF0,$;?0ms未到等待
CLR TF0;?0ms到清除标志位
CPL P3.5
JNB TF1,MAIN0;20次未到继续计数
CLR TF1
RET
这个写的急没调试如果不可以下面的顺序要自己调也就是先闪烁再逐个点亮熄灭延时都是一秒……
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV P1,#0FFH
MOV A,#0FFH
MOV R4,#8
MOV R3,#9
MAIN1:
CPL A
MOV P1,A
LCALL AA
DJNZ R4,MAIN1
MAIN2:
RL A
INC A
MOV P1,A
LCALL AA
DJNZ R3,MAIN2
MOV R3,#9
MAIN3:
RR A
MOV P1,A
DEC A
LCALL AA
DJNZ R3,MAIN3
LJMP MAIN
AA:
MOV R7,#2
AA1:MOV R6,#250
AA2:MOV R5,#250
AA3:
NOP
NOP
DJNZ R5,AA3
DJNZ R6,AA2
DJNZ R7,AA1
RET
温馨提示:答案为网友推荐,仅供参考