按键查询程序
KEY: ;判断是哪个音的按键按下
JNB P1.0,M0 ;分别是DO,RE,ME....
JNB P1.1,M1
JNB P1.2,M2
JNB P1.3,M3
JNB P1.4,M4
JNB P1.5,M5
JNB P1.6,M6
LJMP NEXT ;没有按键按下则跳转到循环查询
;按键软件防抖动程序
M0:
LCALL DELAY1 ;延时一段时间判断按键是否继续按下,是则跳转到确定偏移量程序
JNB P1.0,M00
SJMP KEY
M1:
LCALL DELAY1
JNB P1.1,M11
SJMP KEY
M2:
LCALL DELAY1
JNB P1.2,M22
SJMP KEY
M3:
LCALL DELAY1
JNB P1.3,M33
SJMP KEY
M4:
LCALL DELAY1
JNB P1.4,M44
SJMP KEY
M5:
LCALL DELAY1
JNB P1.5,M55
SJMP KEY
M6:
LCALL DELAY1
JNB P1.6,M66
SJMP KEY
;确定按键的偏移地址程序
M00:
MOV A,#00H
LJMP PLAY
M11:
MOV A,#01H
LJMP PLAY
M
KEY: ;判断是哪个音的按键按下
JNB P1.0,M0 ;分别是DO,RE,ME....
JNB P1.1,M1
JNB P1.2,M2
JNB P1.3,M3
JNB P1.4,M4
JNB P1.5,M5
JNB P1.6,M6
LJMP NEXT ;没有按键按下则跳转到循环查询
;按键软件防抖动程序
M0:
LCALL DELAY1 ;延时一段时间判断按键是否继续按下,是则跳转到确定偏移量程序
JNB P1.0,M00
SJMP KEY
M1:
LCALL DELAY1
JNB P1.1,M11
SJMP KEY
M2:
LCALL DELAY1
JNB P1.2,M22
SJMP KEY
M3:
LCALL DELAY1
JNB P1.3,M33
SJMP KEY
M4:
LCALL DELAY1
JNB P1.4,M44
SJMP KEY
M5:
LCALL DELAY1
JNB P1.5,M55
SJMP KEY
M6:
LCALL DELAY1
JNB P1.6,M66
SJMP KEY
;确定按键的偏移地址程序
M00:
MOV A,#00H
LJMP PLAY
M11:
MOV A,#01H
LJMP PLAY
M