⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 key4x4.asm

📁 用c51的遥控音前级
💻 ASM
字号:
;************************************* 
;*                                   * 
;*          键工作子程序             * 
;*                               * 
;************************************* 
KEYBUFF	EQU 3FH
KEY_IO	EQU P2


;矩阵键盘扫描,键盘接在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按下就转到数字设置
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
;-----------------------------------
;以下为输入数字的键盘扫描
;------------------------------------
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
;*******************************

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -