📄 _subroutine.a51
字号:
;===========================================================
; SUBROUTINES
;===========================================================
SYSTEM_INIT_PROG:
MOV SP,#stack_ram
MOV MAN_POSITION,#00H
MOV STAGE_INDEX,#00H
ACALL RESET_FLAGS
SYSTEM_INIT_RTN:
RET
;===========================================================
RESET_FLAGS:
CLR CHECK_UPGRADE
CLR ENTER_KEY_FLAG
CLR DISPLAY_FLAG
CLR STAGE_UPGRADE
CLR START_GAME_FLAG
RET
;===========================================================
SHOW_START_PICTURE:
CLR CS2
SETB CS1
MOV R0,#0
AGAIN1: MOV DPTR, #LOGIN_L
LCALL DISPLAY2
INC R0
CJNE R0,#18,AGAIN1
CLR CS1
SETB CS2
MOV R0,#0
AGAIN2: MOV DPTR, #LOGIN_R
LCALL DISPLAY2
INC R0
CJNE R0,#12,AGAIN2
RET
;===========================================================
START_GAME:
MOV C,STAGE_UPGRADE
JNC START_GAME_RTN
CLR C
CLR STAGE_UPGRADE
LCALL DISABLE_TIMER1
MOV DPTR,#STAGE1 ;
MOV A,STAGE_INDEX ;
MOV B,#40H
MUL AB
ADD A,DPL
MOV DPL,A
XCH A,B
ADDC A,DPH
MOV DPH,A
MOV R2,#40H ;
MOV R1,#lcd_ram_addr
STORE1: MOV A, #00H
MOVC A,@A+DPTR
CJNE A,#04H,STORE2 ;
MOV MAN_POSITION,R1
STORE2: MOV @R1,A
INC R1
INC DPTR
DJNZ R2,STORE1
SETB DISPLAY_FLAG
LCALL ENABLE_TIMER1
START_GAME_RTN:
RET
;===========================================================
CHECK_STAGE_UPGRADE:
MOV C,CHECK_UPGRADE
JNC CHECK_STAGE_UPGRADE_RTN
CLR CHECK_UPGRADE
CLR C
MOV R7,#data_num ;
MOV R5,#00H ;
MOV R0,#lcd_ram_addr
CHECK_NEXT:
MOV A,@R0
CJNE A,#23H,NO_MATCH
INC R5
NO_MATCH:
INC R0
DJNZ R7,CHECK_NEXT
MOV DPTR,#BOXNUM_TAB
MOV A,STAGE_INDEX ;
MOVC A,@A+DPTR ;
XRL A,R5 ;
JNZ CHECK_STAGE_UPGRADE_RTN
INC STAGE_INDEX ;
LCALL DELAY40MS ;
SETB STAGE_UPGRADE ;
CHECK_STAGE_UPGRADE_RTN:
RET
;==========================================================
;4ms
ENABLE_TIMER1:
MOV TMOD,#10H ;
MOV TH1,#0F0H
MOV TL1,#060H
SETB EA
SETB ET1
SETB TR1
RET
;==========================================================
DISABLE_TIMER1:
CLR ET1
CLR TR1
RET
;==========================================================
DELAY40MS:
MOV DELAY_CT2,#0C8H
DELAY40MS_LOOP:
MOV DELAY_CT1,#64H
DJNZ DELAY_CT1,$
DJNZ DELAY_CT2,DELAY40MS_LOOP
RET
;===========================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -