📄 victory.bak
字号:
RET
;****************************************************
;****************************************************
DELAY_MINE2:
LCALL SET_CODE_MINE
MOV R5,#03H
DELAY_LOOP_MINE_F:
MOV R6,#08FH
DELAY_LOOP_MINE2:
LCALL OUT
DJNZ R6,DELAY_LOOP_MINE2
DJNZ R5,DELAY_LOOP_MINE_F
RET
;****************************************************
SET_CODE_MINE:
MOV A,3BH
MOV B,#0AH
DIV AB
MOV 44H,A
MOV 45H,B
MOV A,3CH
MOV B,#0AH
DIV AB
MOV 46H,A
MOV 47H,B
LCALL SET_CODE
RET
;****************************************************
FIVE_SECOND:
CLR TR1
CLR P2.6
SETB P3.1
SETB P3.0
LCALL DELAY_MINE1
CLR P3.0
CLR P3.1
CLR P2.6
SETB P3.5
SETB P3.4
CLR TR1
STOP_AT_C:
MOV R1,#38H
LCALL SETCODEALL
JB 20H.1,C_WAKE_LE
LCALL OUT
LJMP STOP_AT_C
C_WAKE_LE:
SETB TR1
RET
;****************************************************
;****************************************************
BOLK:
SETB TR1
MOV 5AH,#20
MOV R5,#05H
FIRST_TURN_RIGHT1:
MOV R6,#0FFH
FIRST_TURN_RIGHT2:
LCALL DELAY
DJNZ R6,FIRST_TURN_RIGHT2
DJNZ R5,FIRST_TURN_RIGHT1
SEEK_LAMP:
LCALL TURN_TO_LAMP
MOV C,P0.1
JNC HOME
JB 20H.6,SEEK_LAMP
MOV C,P0.6
JC SEEK_LAMP
AV: LCALL AVOID_WHITE_BOLK
MOV C,P0.6
JNC AV
SETB 20H.6
LJMP SEEK_LAMP
RET
;******************************************************
TURN_TO_LAMP:
MOV C,P0.3
JNC LOOK_RIGHT
LCALL TURN_LEFT_MIDDLE
RET
LOOK_RIGHT:
MOV C,P0.5
MOV R6,#4FH
FORWARDLIGHT:
LCALL DELAY
DJNZ R6,FORWARDLIGHT
JNC TURN_TO_LAMP_END
LCALL TURN_RIGHT_MIDDLE
RET
TURN_TO_LAMP_END:
RET
;******************************************************
;******************************************************
AVOID_WHITE_BOLK:
SETB P2.7
SETB P2.6
MOV 5AH,#30
MOV R6,#3FH
AVOID_LOOP:
LCALL DELAY
DJNZ R6,AVOID_LOOP
MOV C,P0.6
JNC AVOID_WHITE_BOLK
MOV 5AH,#23
CLR P2.6
RET
;******************************************************
TURN_RIGHT_MIDDLE:
MOV 5AH,#30
TURN_RIGHT_MIDDLE_START:
CLR P2.7
SETB P2.6
MOV C,P0.3
JNC TURN_RIGHT_MIDDLE_START
CLR P2.6
MOV 5AH,#23
RET
;******************************************************
TURN_LEFT_MIDDLE:
MOV 5AH,#30
TURN_LEFT_MIDDLE_START:
SETB P2.7
SETB P2.6
MOV C,P0.5
JNC TURN_RIGHT_MIDDLE_START
CLR P2.6
MOV 5AH,#23H
RET
;******************************************************
DELAY:
MOV R7,#0FFH
DELAY_LOOP:
DJNZ R7,DELAY_LOOP
RET
;******************************************************
;****************************************************
HOME:
MOV IE,#0H
MOV IE,#0H
CLR P2.6
CLR P3.0
HOME_WAIT:
CLR P2.6
CLR P3.0
SETB P3.4
LCALL KEY_QUERY ; 查询键盘
LCALL TIP_SET_CODE ; 设置显示值
MOV R1,#44H
LCALL SET_CODE
LCALL OUT ; LED 输出
LJMP HOME_WAIT
RET
;******************************************************
KEY_QUERY:
LCALL KEY
JNC KEY_QUERY_END
LCALL KEY
JNC KEY_QUERY_END
LCALL DEAL_KEY
KEY_WA:
LCALL KEY
JC KEY_WA
KEY_QUERY_END:
RET
RET
;******************************************************
TIP_SET_CODE:
MOV A,59H
JZ SET_TIME
MOV R0,#46H
MOV B,#02H
MUL AB
ADD A,R0
MOV R0,A
SET_NUM:
MOV A,@R0
MOV B,#0AH
DIV AB
MOV 44H,A
MOV 45H,B
INC R0
MOV B,#0AH
MOV A,@R0
DIV AB
MOV 46H,A
MOV 47H,B
RET
SET_TIME:
MOV R0,#42H
LJMP SET_NUM
RET
;*****************************************************
OUT:
MOV R0,#30H
MOV R2,#6H
MOV R4,#0H
LOOP:
MOV A,@R0
LCALL OUTPUT
INC R0
INC R4
DJNZ R2,LOOP
RET
;*******************************************************
OUTPUT: ;在A中是要显示的数据,R4中是要显示的位
MOV R3,#8H
CLR P1.3
OUT_LOOP:
RLC A
MOV P1.2,C
CLR P1.4
NOP
NOP
NOP
SETB P1.4
NOP
NOP
NOP
DJNZ R3,OUT_LOOP
OUT_LOOP_END:
MOV P1,R4
SETB P1.3
LCALL DELAY
CLR P1.3
RET
;******************************************************
SET_CODE:
MOV R0,#44H
MOV R1,#30H
MOV R2,#4H
SET_CODE_LOOP:
MOV A,@R0
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV @R1,A
INC R0
INC R1
DJNZ R2,SET_CODE_LOOP
;以下是显示是第几个雷
MOV A,3AH
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV 35H,A
;以下是使一个LED为暗
MOV 34H,#0H
RET
;******************************************************
TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H
;*****************************************************
KEY:
MOV 58H,#0FEH;
MOV R1,#4H
KEY_LOOP:
MOV P1,58H
MOV A,P1
CJNE A,58H,KEY_NEXT1
MOV A,58H ;NO KEY FIND
RL A
MOV 58H,A
DJNZ R1,KEY_LOOP
CLR C
LJMP KEY_END
KEY_NEXT1:
SETB C
KEY_END:
RET
DEAL_KEY:
MOV A,58H
MOV P1,#0F0H
CJNE A,#0FEH,TWO
ONE_1: SETB P1.1
NOP
MOV C,P1.1
JC ONE_2
MOV 59H,#0EH
LJMP DEAL_END
ONE_2: SETB P1.2
MOV C,P1.2
JC ONE_3
MOV 59H,#07H
LJMP DEAL_END
ONE_3: MOV 59H,#0FH
LJMP DEAL_END
TWO: CJNE A,#0FDH,THREE
TWO_1: SETB P1.0
MOV C,P1.0
JC TWO_2
MOV 59H,#2H
LJMP DEAL_END
TWO_2: SETB P1.2
MOV C,P1.2
JC TWO_3
MOV 59H,#6H
LJMP DEAL_END
TWO_3: MOV 59H,#9H
LJMP DEAL_END
THREE: CJNE A,#0FBH,FOUR
THREE_1: SETB P1.0
MOV C,P1.0
JC THREE_2
MOV 59H,#1H
LJMP DEAL_END
THREE_2: SETB P1.1
MOV C,P1.1
JC THREE_3
MOV 59H,#4H
LJMP DEAL_END
THREE_3: MOV 59H,#8H
LJMP DEAL_END
FOUR:
FOUR_1: SETB P1.0
MOV C,P1.0
JC FOUR_2
MOV 59H,#0H
LJMP DEAL_END
FOUR_2: SETB P1.1
MOV C,P1.1
JC FOUR_3
MOV 59H,#3H
LJMP DEAL_END
FOUR_3: MOV 59H,#5H
LJMP DEAL_END
DEAL_END:
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -