?? key board.asm
字號(hào):
DIN EQU P3.0
CLK EQU P3.1
DBUF EQU 30H
TEMP EQU 40H
ORG 00H
MOV 30H,#16 ;數(shù)碼管顯示初始化
MAIN: ACALL DISP ;顯示
ACALL KEY ;計(jì)算鍵值
AJMP MAIN
KEY: ;計(jì)算鍵碼子程序
MOV P1,#0FFH ;讀數(shù)前先寫1
MOV A,P1
CJNE A,#0FFH,K00 ;判斷是否有鍵按下
AJMP KEY
K00: ACALL DELAY
MOV A,P1
CJNE A,#0FFH,K01 ;消除按鍵抖動(dòng)
AJMP KEY
K01: MOV R3,#8
MOV R2,#0
MOV B,A
MOV DPTR,#K0TAB ;查表比較,計(jì)算鍵值
K02: MOV A,R2
MOVC A,@A+DPTR
CJNE A,B,K04
K03: MOV A,P1
CJNE A,#0FFH,K03 ;等待按鍵抬起
ACALL DELAY
MOV A,R2
RET
K04: INC R2
DJNZ R3,K02
MOV A,#0FFH
AJMP KEY
K0TAB: DB 0FEH,0FDH,0FBH,0F7H
DB 0EFH,0DFH,0BFH,07FH
DISP: ;數(shù)碼顯示子程序
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 DIN,C
CLR CLK ;輸出移位脈沖
SETB CLK
DJNZ R2,DP13
RET
SEGTAB: DB 3FH,06H,5BH,4FH,66H
DB 6DH,7DH,07H,7FH,6FH
DELAY: MOV R4,#02H
AA1: MOV R5,#0F8H
AA: DJNZ R5,AA
DJNZ R4,AA1
RET
END
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -