89c52.asm

来自「用于数控摇杆控制手持式控制器」· 汇编 代码 · 共 177 行

ASM
177
字号
	ORG 	0000H
	MOV	A,#000H
	MOV	R0,#00H
	MOV	R5,#00H
	MOV	R4,#00H
START:	MOV	P1,#0FFH
	MOV	P1,#00FH
	MOV	A,P1
	ANL	A,#00FH
	CJNE	A,#00FH,PRO1
	SJMP	START
PRO1:	LCALL	DELAY10
	MOV	A,P1
	ANL	A,#00FH
	CJNE	A,#00FH,PRO2
	SJMP	START
PRO2:	MOV	R7,A	;取出行值
	MOV	P1,#0F0H
	MOV	A,P1
	ANL	A,#0F0H	;取出列值
	MOV	R6,A
	ORL	A,R7	;读取键盘值
	MOV	P1,#00FH;作为键释放判断的
;WAIT:	CJNE	R6,#0F0H,WAIT
KEY0:	CJNE	A,#0EEH,KEY1
	JB	P0.6,START
	SETB	P3.6
	CLR	P3.7
	LJMP	START
KEY1:	CJNE	A,#0DEH,KEY2
	JB	P0.6,K1J
	CJNE	R5,#00H,K1J
RETLNK:	SETB	P0.0
	CLR	P0.1
	CLR	P0.2
	SETB	P0.3
	MOV	R4,#01H
K1J:	LJMP	START
KEY2:	CJNE	A,#0BEH,KEY3
	JB	P0.6,K2J
	INC	R0
	JNB	P3.3,$
	CJNE	R0,#04,PROKEY
	MOV	R0,#00H
PROKEY:	CJNE	R0,#00,SAT1
	CLR	P0.4
	CLR	P0.5
	SJMP	K2J
SAT1:	CJNE	R0,#01,SAT2
	CLR	P0.4
	SETB	P0.5
	SJMP	K2J	
SAT2:	CJNE	R0,#02,SAT3
	SETB	P0.4
	CLR	P0.5
	SJMP	K2J
SAT3:	CJNE	R0,#03,K2J
	SETB	P0.4
	SETB	P0.5
K2J:	LJMP	START
KEY3:	CJNE	A,#07EH,KEY4
	JB	P0.6,K3J
	SETB	P0.0
	SETB	P0.1
	CLR	P0.2
	CLR	P0.3
	MOV	R5,#00H
K3J:	LJMP	START
KEY4:	CJNE	A,#0EDH,KEY5
	JB	P0.6,K4J
	SETB	P3.7	
	CLR	P3.6
K4J:	LJMP	START
KEY5:	CJNE	A,#0DDH,KEY6
	JB	P0.6,K5J
	CJNE	R5,#00H,K5J
	CLR	P0.0
	SETB	P0.1
	CLR	P0.2
	SETB	P0.3
K5J:	LJMP	START
KEY6:	CJNE	A,#0BDH,KEY7
	JB	P0.6,K6J
	CJNE	R5,#00H,K6J
	CLR	P0.0
	SETB	P0.1
	SETB	P0.2
	CLR	P0.3
	LCALL	FLASH
K6J:	LJMP	START
KEY7:	CJNE	A,#07DH,KEY8
	JB	P0.6,K6J
	CLR	P0.0
	SETB	P0.1
	CLR	P0.2
	CLR	P0.3
	MOV	R5,#00H
K7J:	LJMP	START
KEY8:	CJNE	A,#0EBH,KEY9
	SETB	P0.6
	SETB	P3.6
	SETB	P3.7
	CLR	P0.7
UNLOCK:	SETB	P0.0
	SETB	P0.1
	SETB	P0.2
	SETB	P0.3
	MOV	R5,#00H
	LJMP	START
KEY9:	CJNE	A,#0DBH,KEY10
	JB	P0.6,K9J
	CJNE	R5,#00H,K9J
	CLR	P0.0
	CLR	P0.1
	CLR	P0.2
	SETB	P0.3
K9J:	LJMP	START
KEY10:	CJNE	A,#0BBH,KEY11
	JB	P0.6,K10J
RETLCK:SETB	P0.0
	CLR	P0.1
	SETB	P0.2
	CLR	P0.3
	MOV	R5,#01H
K10J:	LJMP	START
KEY11:	CJNE	A,#07BH,KEY12
	JB	P0.6,K11J
	SETB	P0.0
	CLR	P0.1
	CLR	P0.2
	CLR	P0.3
	MOV	R5,#00H
K11J:	LJMP	START
KEY12:	CJNE	A,#0E7H,KEY13
	SETB	P0.7
	CLR	P0.6
	CJNE	R5,#00H,UNLOCK
	LJMP	START
KEY13:	CJNE	A,#0D7H,KEY14
	JB	P0.6,K13J
	CJNE	R5,#00H,K13J
	SETB	P0.0
	SETB	P0.1
	SETB	P0.2
	CLR	P0.3
K13J:	LJMP	START
KEY14:	CJNE	A,#0B7H,KEY15
	JB	P0.6,K14J
	CJNE	R5,#00H,K14J
	CLR	P0.0
	CLR	P0.1
	SETB	P0.2
	CLR	P0.3
	LCALL	FLASH
K14J:	LJMP	START
KEY15:	CJNE	A,#077H,K15J
	JB	P0.6,K15J
	CLR	P0.0
	CLR	P0.1
	CLR	P0.2
	CLR	P0.3
	MOV	R5,#00H
K15J:	LJMP	START	
DELAY10:MOV	R1,#10
LOOP:	MOV	R2,#248
	DJNZ	R2,$
	DJNZ	R1,LOOP
	RET
FLASH:	MOV	R3,#005H
SECOND:	LCALL	DELAY10
	DJNZ	R3,SECOND
	SETB	P0.0
	SETB	P0.1
	SETB	P0.2
	SETB	P0.3
	RET
	END

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?