?? b.asm
字號(hào):
DBUF EQU 30H
TEMP EQU 40H
ORG 00H
MOV A,#16
MAIN: ACALL DISP
ACALL KEY1
AJMP MAIN
KEY1: MOV P1,#0F0H ;讀P1口前先寫1
MOV A,P1 ;讀取鍵狀態(tài)
CJNE A,#0F0H,K11 ;判斷是否有鍵按下
K10: AJMP KEY1
K11: ACALL DELAY
MOV P1,#0F0H
MOV A,P1
CJNE A,0F0H,K12 ;消除按鍵抖動(dòng)
SJMP K10
K12: MOV B,A ;存列值
MOV P1,#0FH
MOV A,P1 ;讀行值
ANL A,B
MOV B,A ;存鍵碼
MOV R1,#10H
MOV R2,#0
MOV DPTR,#K1TAB ;鍵碼表首地址
K14: MOV A,R2
MOVC A,@A+DPTR
CJNE A,B,K16 ;比較,計(jì)算鍵值
MOV P1,#0FH
K15: MOV A,P1
CJNE A,#0FH,K15 ;等待按鍵釋放
MOV A,R2
RET
K16: INC R2
DJNZ R1,K14
AJMP K10
K1TAB: DB 81H,41H,21H,11H ;鍵碼表
DB 82H,42H,22H,12H
DB 84H,44H,24H,14H
DB 88H,48H,28H,18H
DISP: MOV DBUF,A ;鍵值存入緩存
MOV R0,#DBUF
MOV R1,#TEMP
DP10: MOV DPTR,#SEGTAB
MOV A,@R0
MOVC A,@A+DPTR ;根據(jù)鍵值查表取段碼
MOV @R1,A ;暫存段碼
MOV R0,#TEMP
DP12: MOV R2,#8 ;設(shè)置移位次數(shù)
MOV A,@R0
DP13: RLC A ;段碼移位輸出
MOV P3.0,C
CLR P3.1
SETB P3.1 ;輸出移位脈沖
DJNZ R2,DP13
RET
SEGTAB: DB 3FH,06H,5BH,4FH,66H,6DH
DB 7DH,07H,7FH,6FH,77H,7CH
DB 58H,5EH,79H,71H,00H,40H
DELAY: MOV R4,#01H
AA1: MOV R5,#088H
AA: NOP
DJNZ R5,AA
DJNZ R4,AA1
RET
END
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -