📄 89c52.asm
字号:
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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -