单片机控制8个发光二极管组成的流水灯的亮灭,又三种亮灭状态。
1~亮点左流动(每0.5秒亮点从左移动一次);
2~8个LED全亮全灭闪烁,亮灭时间都为0.5秒。
3~暗点右流动(7个亮,1个不亮,暗点每隔0.5秒向右移动一次)。
汇编程序如下:(把下面的改为C语言程序)
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP I0
ORG 0013H
LJMP I1
ORG 0030H
MAIN: SETB EA
SETB EX0
SETB EX1
SETB IT0
SETB IT1
MOV IP, #00000100B
LOOP: MOV A, #0FEH
MOV P1, A
LCALL DELAY
RL A
LJMP LOOP1
I0: CLR EA
PUSH P1
SETB EA
MOV R1, #06H
FLASH: MOV P1, #00H
LCALL DELAY
MOV P1, #0FFH
CALL DELAY
DJNZ R1, FLASH
CLR EA
POP P1
POP ACC
SETB EA
RETI
I1: CLR EA
PUSH ACC
PUSH P1
SETB EA
MOV R2, #08H
MOV A, #00000001B
LOOP2: MOV P1, A
LCALL DELAY
RR A
DJNZ R2, LOOP2
CLR EA
POP P1
POP ACC
SETB EA
RETI
DELAY: MOV R2, #02H
LOOP1: MOV R3, #250H
LOOP2: MOV R4, #250H
LOOP3: NOP
NOP
DJNZ R4, LOOP3
DJNZ R3, LOOP2
DJNZ R2, LOOP1
RET
END