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

📄 key4x4.asm

📁 很常用的带4路音源输入.高音,低音,音量调节的IC.
💻 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,#11111101B;11111011B
JNB	KEY_IO.7,SVAE24		;K0按下就转到数字设置
;JNB   	KEY_IO.6,REMOTE_SEL
JMP	MAIN

SVAE24:	
LCALL	KEYWAIT
LCALL 	W2408_STAR
LCALL	KEYWAIT;_SOTP
JMP	PT2314_START
;RET
;REMOTE_SEL:
;LCALL	KEYWAIT
;CLR 	IR_SET_BIT
;CLR 	RE_KEY
;LCALL 	DIS_IR_SET
;ACALL	KEYWAIT_SOTP
;ACALL	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_SOTP
AJMP	YIWEI
K1:
MOV	KEYBUFF,#1
ACALL	KEYWAIT_SOTP
AJMP	YIWEI
K2:
MOV	KEYBUFF,#2
ACALL	KEYWAIT_SOTP
AJMP	YIWEI
K3:
MOV	KEYBUFF,#3
ACALL	KEYWAIT_SOTP
AJMP	YIWEI
K4:
MOV	KEYBUFF,#4
ACALL	KEYWAIT_SOTP
AJMP	YIWEI
K5:
MOV	KEYBUFF,#5
ACALL	KEYWAIT_SOTP
AJMP	YIWEI
K6:
MOV	KEYBUFF,#6
ACALL	KEYWAIT_SOTP
AJMP	YIWEI
K7:
MOV	KEYBUFF,#7
ACALL	KEYWAIT_SOTP
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,#80;255
LOOP1:
MOV	R1,#255
LOOP2:
;CPL	BUZZER
DJNZ	R1,LOOP2
DJNZ	R0,LOOP1
POP	01H
POP	00H
RET
;*******************************;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;判断按键执行
OPREAT:
MOV 	A,KEYBUFF
MOV 	DPTR,#KEY_TAB
MOV 	B,#2
MUL 	AB
JMP 	@A+DPTR
RET
;---------------------------------------------
KEY_TAB:
AJMP 	KK1	;+vol
AJMP 	KK2	;-vol
AJMP 	KK3	;+bass
AJMP 	KK4	;-bass
AJMP 	KK5	;+tr
AJMP 	KK6	;-tr
AJMP 	KK7	;+mid
AJMP 	KK8	;-mid
AJMP 	KK9	;set_up
AJMP 	KK10	;set_down
AJMP 	KK11	;set_sel
AJMP 	KK12	;up_audio
AJMP 	KK13	;down_audio
AJMP 	KK14	;up_in
AJMP 	KK15	;down_in
AJMP 	KK16
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
KK1:
LCALL 	SET_M_VOL_DOWN
RET
;-------------------------------------------
KK2:
LCALL 	SET_M_VOL_UP
RET
;----------------------------------------
KK3:
LCALL 	SET_BASS_VOL_DOWN
RET
;----------------------------------------
KK4:
LCALL 	SET_BASS_VOL_UP
RET
;---------------------------------------
KK5:
LCALL 	SET_TR_VOL_UP
RET
;---------------------------------------
KK6:
LCALL 	SET_TR_VOL_DOWN
RET
;---------------------------------------
KK7:
;LCALL 	BALANCE_L
RET
;---------------------------------------
KK8:
;LCALL 	BALANCE_R
RET
;---------------------------------------
KK9:
MOV 	IN_BUFF,#1
LCALL 	INSW
RET
;--------------------------------------
KK10:
MOV 	IN_BUFF,#2
LCALL 	INSW
RET
;-------------------------------------
KK11:
MOV 	IN_BUFF,#3
LCALL 	INSW
RET
;-------------------------------------
KK12:
MOV 	IN_BUFF,#4
LCALL 	INSW
RET
;------------------------------------
KK13:
CPL 	MUTE_BIT
LCALL 	MUTE_ON_OFF
RET
;-----------------------------------
KK14:		
;CPL 	POWER_BIT
RET
;----------------------------------
KK15:		
RET
;---------------------------------
KK16:	
RET

⌨️ 快捷键说明

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