?? klock.a51
字號:
KEYS EQU P1
ROW1 EQU P1.4
ROW2 EQU P1.3
ROW3 EQU P1.2
ROW4 EQU P1.1
COL1 EQU P1.7
COL2 EQU P1.6
COL3 EQU P1.5
L1 EQU P3.1 ;3.7
L2 EQU P3.0
ALRM EQU P3.4
dseg
ORG 20H
KEY: DS 1
N1: DS 1
N2: DS 1
N3: DS 1
N4: DS 1
COUNT: DS 1
CSEG
ORG 0000H
CLR L1
CLR L2
CLR ALRM
MOV R3,#01H
MOV COUNT,#00H
KEYBOARD:
MOV KEY,#00H
SETB COL1
SETB COL2
SETB COL3
K11: CLR ROW1
CLR ROW2
CLR ROW3
CLR ROW4
MOV A,KEYS
ANL A,#11100000B
CJNE A,#11100000B,K11 ;check till all keys released
K2: ACALL DEALAY ;call 20 msec delay
MOV A,KEYS ;see if any key is pressed
ANL A,#11100000B ;mask unused bits
CJNE A,#11100000B,OVER ;key pressed, await closure
SJMP K2
OVER: ACALL DEALAY
MOV A,KEYS
ANL A,#11100000B
CJNE A,#11100000B,OVER1
SJMP K2
OVER1: MOV A,KEYS
ORL A,#11111110B
MOV KEYS,A
CLR ROW1
MOV A,KEYS
ANL A,#11100000B
CJNE A,#11100000B,ROW_1
MOV A,KEYS
ORL A,#11111110B
MOV KEYS,A
CLR ROW2
MOV A,KEYS
ANL A,#11100000B
CJNE A,#11100000B,ROW_2
MOV A,KEYS
ORL A,#11111110B
MOV KEYS,A
CLR ROW3
MOV A,KEYS
ANL A,#11100000B
CJNE A,#11100000B,ROW_3
MOV A,KEYS
ORL A,#11111110B
MOV KEYS,A
CLR ROW4
MOV A,KEYS
ANL A,#11100000B
CJNE A,#11100000B,ROW_4
LJMP K2
ROW_1: RLC A
JC MAT1
MOV KEY,#01H
AJMP K1
MAT1: RLC A
JC MAT2
MOV KEY,#02H
AJMP K1
MAT2: RLC A
JC K1
MOV KEY,#03H
AJMP K1
ROW_2: RLC A
JC MAT3
MOV KEY,#04H
AJMP K1
MAT3: RLC A
JC MAT4
MOV KEY,#05H
AJMP K1
MAT4: RLC A
JC K1
MOV KEY,#06H
AJMP K1
ROW_3: RLC A
JC MAT5
MOV KEY,#07H
AJMP K1
MAT5: RLC A
JC MAT6
MOV KEY,#08H
AJMP K1
MAT6: RLC A
JC K1
MOV KEY,#09H
AJMP K1
ROW_4: RLC A
JC MAT7
MOV KEY,#0AH
MOV COUNT,#00H
MOV R3,#01H
AJMP KEYBOARD
MAT7: RLC A
JC MAT8
MOV KEY,#0BH ;for 0
AJMP K1
MAT8: RLC A
JC K1
MOV KEY,#0CH
K1:
CJNE R3,#01H,G1
INC R3
MOV N1,KEY
AJMP KEYBOARD
G1: CJNE R3,#02H,G2
INC R3
MOV N2,KEY
AJMP KEYBOARD
G2: CJNE R3,#03H,G3
INC R3
MOV N3,KEY
AJMP KEYBOARD
G3: CJNE R3,#04H,G4
MOV R3,#01H
MOV N4,KEY
G4:
MOV A,N1
SWAP A
ORL A,N2
MOV N2,A ;HIGHER DIGITSS IN N2
MOV A,N3
SWAP A
ORL A,N4
MOV N4,A ;LOWER DISITS IN N4
MOV A,N2
CJNE A,#12H, BV1
MOV A,N4
CJNE A,#79H,BV1
CPL L1
CLR ALRM
MOV COUNT,#00H
AJMP KEYBOARD
BV1: MOV A,N2
CJNE A,#12H, BV2
MOV A,N4
CJNE A,#71H,BV2
CPL L2
CLR ALRM
MOV COUNT,#00H
AJMP KEYBOARD
BV2: INC COUNT
MOV A,COUNT
CJNE A,#03H,HH1
SETB ALRM
MOV COUNT,#00H
HH1: AJMP KEYBOARD
;((((((((((((((((((((((((((((((((
DEALAY:
MOV R1,#50
REPP2: NOP
DJNZ R1,REPP2
RET
;((((((((((((((((((((((((((((((((
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -