📄 带按键音效的按键扫描实验例程.asm
字号:
;带按键音效的按键扫描实验例程
;* 按K1~K4时,检测到的按键码显示在对应数码管上 *
;***************************************************************
ORG 0000H
AJMP START ;转到初始化程序
ORG 0033H
START:
K1 BIT P1.4 ;定义按键K1
K2 BIT P1.5 ;定义按键K2
K3 BIT P1.6 ;定义按键K3
K4 BIT P1.7 ;定义按键K4
MOV SP,#50H ;SP初始化
MOV P1,#0FFH ;端口初始化
MAIN: JB K1,SK2 ;检测按键K1
ACALL YS20ms ;调用20ms延时消抖动
JB K1,SK2 ;如果K1为高电平,则是抖动
MOV P0,#0FFH ;关闭数码管
ACALL SOUND ;发出一声按键提示音
K1DD: JNB K1,K1DD ;等待K1按键释放
MOV P0,#0F9H ;显示按键号码“1”
MOV P2,#0BEH ;第1位数码管允许显示
AJMP MAIN
SK2: JB K2,SK3 ;检测按键K2
ACALL YS20ms ;调用20ms延时消抖动
JB K2,SK3 ;如果K2为高电平,则是抖动
MOV P0,#0FFH ;关闭数码管
ACALL SOUND ;发出一声按键提示音
K2DD: JNB K2,K2DD ;等待K2按键释放
MOV P0,#0A4H ;显示按键号码“2”
MOV P2,#0BDH ;第2位数码管允许显示
AJMP MAIN
SK3: JB K3,SK4 ;检测按键K3
ACALL YS20ms ;调用20ms延时消抖动
JB K3,SK4 ;如果K3为高电平,则是抖动
MOV P0,#0FFH ;关闭数码管
ACALL SOUND ;发出一声按键提示音
K3DD: JNB K3,K3DD ;等待K3按键释放
MOV P0,#0B0H ;显示按键号码“3”
MOV P2,#0BBH ;第3位数码管允许显示
AJMP MAIN
SK4: JB K4,MAIN ;检测按键K4
ACALL YS20ms ;调用20ms延时消抖动
JB K4,MAIN ;如果K4为高电平,则是抖动
MOV P0,#0FFH ;关闭数码管
ACALL SOUND ;发出一声按键提示音
K4DD: JNB K4,K4DD ;等待K4按键释放
MOV P0,#99H ;显示按键号码“4”
MOV P2,#0B7H ;第4位数码管允许显示
AJMP MAIN
YS20ms: ;20ms延时子程序
MOV R7,#128
DL1: MOV R6,#0FFH
DL0: DJNZ R6,DL0
DJNZ R7,DL1
RET
SOUND: ;音效子程序
MOV R7,#228
SDL1: CPL P3.7
MOV R6,#0FFH
SDL0: DJNZ R6,SDL0
DJNZ R7,SDL1
SETB P3.7
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -