Day04
K1 EQU P2.0;命名
LED EQU P0
ORG 00H
JMP MAIN
ORG 30H
MAIN:
MOV LED,#00H
MOV R0,#0
SETB K1
GO:
MOV A,#10101010H
MOV LED,A
ACALL DELAY
CPL A
MOV LED,A
ACALL DELAY
JNB K1,INCR;k1为0转移
JMP GO
INCR:
JNB K1,INCR
INC R0
ACALL PLAY
CJNE R0,#6,GO;不相等转移
SJMP MAIN
PLAY:
MOV R1,#0FFH
MOV A,R0
WY2:CJNE A,#1,WY3
CALL WY12
WY3:CJNE A,#2,WY4
CALL WY13
WY4:CJNE A,#3,WY5
CALL WY14
WY5:CJNE A,#4,WY6
CALL WY15
WY6:CJNE A,#5,WY7
CALL WY16
WY7:RET
;流水灯样式
WY12:
MOV DPTR,#TAB1
LOOP2:
INC R1
CJNE R1,#9,LKSHOW2
JMP RET2
LKSHOW2:
ACALL SHOW
LCALL DELAY
LCALL DELAY
JMP LOOP2
RET2:RET
WY13:
MOV DPTR,#TAB2
LOOP3:
INC R1
CJNE R1,#9,LKSHOW3
JMP RET3
LKSHOW3:
ACALL SHOW
LCALL DELAY
LCALL DELAY
JMP LOOP3
RET3:RET
WY14:
MOV DPTR,#TAB3
LOOP4:
INC R1
CJNE R1,#9,LKSHOW4
JMP RET4
LKSHOW4:
ACALL SHOW
LCALL DELAY
LCALL DELAY
JMP LOOP4
RET4:RET
WY15:
MOV DPTR,#TAB4
LOOP5:
INC R1
CJNE R1,#9,LKSHOW5
JMP RET5
LKSHOW5:
ACALL SHOW
LCALL DELAY
LCALL DELAY
JMP LOOP5
RET5:RET
WY16:
MOV DPTR,#TAB5
LOOP6:
INC R1
CJNE R1,#9,LKSHOW6
JMP RET6
LKSHOW6:
ACALL SHOW
LCALL DELAY
LCALL DELAY
JMP LOOP6
RET6:RET
;输出程序
SHOW:
MOV A,R1
MOVC A,@A+DPTR
MOV LED,A
RET
;延时程序
DELAY10MS:
MOV R6,#100
NEXT1:
MOV R7,#250
DJNZ R7,$
DJNZ R6,NEXT1
RET
DELAY:
MOV R5,#4
NEXT:
JNB K1,BREAK;为0跳转
LCALL DELAY10MS
DJNZ R5,NEXT
BREAK:RET
TAB1:
DB 11111111B,11111110B,11111100B,11111000B,11110000B,11100000B,11000000B,10000000B,00000000B
TAB2:
DB 11111111B,11111110B,11111100B,11111000B,11110000B,11100000B,11000000B,10000000B,00000000B
TAB3:
DB 11111111B,11111110B,11111100B,11111000B,11110000B,11100000B,11000000B,10000000B,00000000B
TAB4:
DB 11111111B,11111110B,11111100B,11111000B,11110000B,11100000B,11000000B,10000000B,00000000B
TAB5:
DB 11111111B,11111110B,11111100B,11111000B,11110000B,11100000B,11000000B,10000000B
END
总结
1,延时程序
DELAY10MS:
MOV R6,#100
NEXT1:
MOV R7,#250
DJNZ R7,$
DJNZ R6,NEXT1
RET
2.查表展示程序
WY12:
MOV DPTR,#TAB1
LOOP2:
INC R1
CJNE R1,#9,LKSHOW2
JMP RET2
LKSHOW2:
ACALL SHOW
LCALL DELAY
LCALL DELAY
JMP LOOP2
RET2:RET
;输出程序
SHOW:
MOV A,R1
MOVC A,@A+DPTR
MOV LED,A
RET
MOV DPTR,#TAB1
INC R1
ACALL SHOW
SHOW:
MOV A,R1
MOVC A,@A+DPTR
MOV LED,A
RET
按键判断
GO: SETB K1
JNB K1,INCR;k1为0转移
JMP GO
INCR:
JNB K1,INCR
INC R0
ACALL PLAY
CJNE R0,#6,GO;不相等转移
SJMP MAIN
来回流水灯
ORG 0000H
JMP MAIN
ORG 30H
MAIN:
MOV A,#0FFH
CLR C
MOV R2,#08H
LOOP1:;实验中二极管低电平点亮,loop1带进位位的循环左移
RLC A
MOV P0,A
CALL DELAY
DJNZ R2,LOOP1
MOV R2,#07H
LOOP2:;loop2循环右移动
RR A
MOV P0,A
CALL DELAY
DJNZ R2,LOOP2
JMP MAIN
DELAY: ;延时约1s
MOV R3,#10
D1: MOV R4,#200
D2: MOV R5,#248
DJNZ R5,$
DJNZ R4,D2
DJNZ R3,D1
RET
END