?? key4x4.asm
字號(hào):
;*************************************
;* *
;* 鍵工作子程序 *
;* *
;*************************************
KEYBUFF EQU 3FH
KEY_IO EQU P2
;矩陣鍵盤(pán)掃描,鍵盤(pán)接在P2口
KEY4X4:
MOV KEY_IO,#11110000B
MOV A,KEY_IO
CJNE A,#11110000B,HAVE_KEY
JMP PT2314_START
STAR_KEY:
HAVE_KEY:
MOV KEY_IO,#11111011B
JNB KEY_IO.7,SVAE24 ;K0按下就轉(zhuǎn)到數(shù)字設(shè)置
JNB KEY_IO.6,REMOTE_SEL
JMP MAIN
SVAE24:
ACALL KEYWAIT
LCALL W2408_STAR
ACALL KEYWAIT;_SOTP
JMP PT2314_START
;RET
REMOTE_SEL:
ACALL KEYWAIT
CLR IR_SET_BIT
CLR RE_KEY
LCALL DIS_IR_SET
ACALL KEYWAIT_SOTP
LCALL KEY
JMP MAIN
;-----------------------------------
;以下為輸入數(shù)字的鍵盤(pán)掃描
;------------------------------------
KEY:
NOP
LINE1:
MOV KEY_IO,#11111110B
JNB KEY_IO.7,K0
JNB KEY_IO.6,K1
JNB KEY_IO.5,K2;K_ENTER
JNB KEY_IO.4,K3;K_ESC
;--------------------------------
LINE2:
MOV KEY_IO,#11111101B
JNB KEY_IO.7,K4
JNB KEY_IO.6,K5
JNB KEY_IO.5,K6
JNB KEY_IO.4,K7
;-------------------------------
LINE3:
MOV KEY_IO,#11111011B
JNB KEY_IO.7,K8
JNB KEY_IO.6,K9
JNB KEY_IO.5,K10
JNB KEY_IO.4,K11
;-------------------------------
LINE4:
MOV KEY_IO,#11110111B
JNB KEY_IO.7,K12
JNB KEY_IO.6,K13
JNB KEY_IO.5,K14;K_ENTER
JNB KEY_IO.4,K15;K_ESC
;--------------------------------
AJMP LINE1
;-------------------------------
K0:
MOV KEYBUFF,#0
ACALL KEYWAIT
AJMP YIWEI
K1:
MOV KEYBUFF,#1
ACALL KEYWAIT
AJMP YIWEI
K2:
MOV KEYBUFF,#2
ACALL KEYWAIT
AJMP YIWEI
K3:
MOV KEYBUFF,#3
ACALL KEYWAIT
AJMP YIWEI
K4:
MOV KEYBUFF,#4
ACALL KEYWAIT
AJMP YIWEI
K5:
MOV KEYBUFF,#5
ACALL KEYWAIT
AJMP YIWEI
K6:
MOV KEYBUFF,#6
ACALL KEYWAIT
AJMP YIWEI
K7:
MOV KEYBUFF,#7
ACALL KEYWAIT
AJMP YIWEI
K8:
MOV KEYBUFF,#8
ACALL KEYWAIT_SOTP
AJMP YIWEI
K9:
MOV KEYBUFF,#9
ACALL KEYWAIT_SOTP
AJMP YIWEI
K10:
MOV KEYBUFF,#10
ACALL KEYWAIT_SOTP
AJMP YIWEI
K11:
MOV KEYBUFF,#11
ACALL KEYWAIT_SOTP
AJMP YIWEI
K12:
MOV KEYBUFF,#12
ACALL KEYWAIT_SOTP
AJMP YIWEI
K13:
MOV KEYBUFF,#13
ACALL KEYWAIT_SOTP
AJMP YIWEI
K14:
MOV KEYBUFF,#14
ACALL KEYWAIT_SOTP
AJMP YIWEI
K15:
MOV KEYBUFF,#15
ACALL KEYWAIT_SOTP
AJMP YIWEI
;---------------------------------------
;K_ENTER:
;LCALL KEYWAIT
;RET
;K_ESC:
;LCALL KEYWAIT
;LCALL DATA_ESC
;RET
;----------------------------------------
YIWEI:
JB IR_SET_BIT,KEY_WORK
CLR RE_KEY
;ACALL KEYWAIT_SOTP
LCALL IR_SEL
ACALL KEYWAIT_SOTP
CLR IR_SET_BIT
AJMP LINE1
KEY_WORK:
CLR RE_KEY
MOV A,KEYBUFF
CJNE A,#0,VOL1
AJMP VOL_CON
VOL1:
CJNE A,#1,VOL2
AJMP VOL_CON
VOL2:
CJNE A,#12,MUTE_EXT
VOL_CON:
LCALL OPREAT
AJMP LINE1
MUTE_EXT:
JNB MUTE_BIT,MUTE_D
AJMP LINE1
MUTE_D:
LCALL OPREAT
SETB RE_KEY
AJMP LINE1
;----------------
;**************************************
KEYWAIT:
ACALL KEYDELAY
ACALL KEYDELAY
;KW:
;MOV KEY_IO,#11110000B
;MOV A,KEY_IO
;CJNE A,#11110000B,KW
RET
KEYWAIT_SOTP:
ACALL KEYDELAY
;ACALL KEYDELAY
KW:
MOV KEY_IO,#11110000B
MOV A,KEY_IO
CJNE A,#11110000B,KW
RET
;**************************************
KEYDELAY:
PUSH 00H
PUSH 01H
MOV R0,#255
LOOP1:
MOV R1,#255
LOOP2:
;CPL BUZZER
DJNZ R1,LOOP2
DJNZ R0,LOOP1
POP 01H
POP 00H
RET
;*******************************
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -