无规律可循,只能用查表方式,程序如下,该送入R3的数据可以变速度 ,需要改变灯亮的方式只需改TABLE数据,本程序是按你的需要写的,经实物验证成功的。
ORG 0
START: MOV DPTR,#TABLE
LOOP: CLR A
MOVC A,@A+DPTR
CJNE A,#0BH,LOOP1
JMP START
LOOP1: MOV P1,A
MOV R3,#50
LCALL DELAY
INC DPTR
JMP LOOP
DELAY: MOV R4,#255
D1: MOV R5,#245
DJNZ R5,$
DJNZ R4,D1
DJNZ R3,DELAY
RET
TABLE: DB 0E7H,0C3H,81H,00H ;1 2 3 4
DB 0FFH,7FH,3FH,1FH;5 6 7 8
DB 0FH,07H,03H,01H ;9 10 11 12
DB 00H,0FFH,55H,0AAH ;13 14 15 16
DB 55H,0AAH,0FFH , 00H ;17 18 19 20
DB 0FFH,00H,0FFH ;21 22 23
DB 0BH ; 标志位
END
ORG 0000H
MAIN: MOV B,23
MOV DPTR,#TABLE
LOOP: MOVC A,@DPTR
MOV P2,A
INC DPTR
DJNZ B,LOOP
SJMP MAIN
DELAY:MOV R2,#100
LOOP3:MOV R1,#250
LOOP4:NOP
NOP
DJNZ R1,LOOP4
DJNZ R2,LOOP3
RET
TABLE:DB 0EFH,0C3H,81H,.... ,0AAH,0FFH,00H,0FFH,00H,0FFH
END
1056797292 qq加我,我给你详细解答,专注单片机二十年