⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 _subroutine.a51

📁 使用PROTEUS仿真的推箱子游戏,全汇编格式,通过按钮操作,1602显示
💻 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 + -