📄 keyvoice.asm
字号:
;///////////////////////////////////////////
;本程序源代码由单片机培训网提供.
;单片机培训网,让更多人学习单片机更容易.
;第一网址----www.mcuedu.com
;第二网址----http://51_train.nease.net
;创办人------刘永忠
;热线电话----(0755)27529998
;email-------aa815@163.com
;本程序实现按键音功能
;///////////////////////////////////////////
org 0000h
ajmp main
org 000bh
ajmp timer0
org 0030h
main:
mov 30h,#100
mov tmod,#01h
mov ie,#82h
mov th0,#high(64536)
mov tl0,#low(64536)
mov dptr,#tab
lcall key
movc a,@a+dptr
mov p0,a
CLR P2.0
ljmp main
timer0: ;1ms timer
mov th0,#high(64536)
mov tl0,#low(64536)
cpl p2.4
djnz 30h,t_e
mov 30h,#100
clr tr0
t_e: reti
KEY: LCALL KS
JNZ K1
LCALL DELAY2
AJMP KEY
K1: LCALL DELAY2
LCALL DELAY2
LCALL KS
JNZ K2
AJMP KEY
K2: setb tr0
MOV R2,#0EFH
MOV R4,#00H
K3: MOV P1,R2
L6: JB P1.0,L1
MOV A,#00H
AJMP LK
L1: JB P1.1,L2
MOV A,#04H
AJMP LK
L2: JB P1.2,L3
MOV A,#08H
AJMP LK
L3: JB P1.3,NEXT
MOV A,#0cH
LK: ADD A,R4
PUSH ACC
K4: LCALL DELAY2
LCALL KS
JNZ K4
POP ACC
RET
NEXT:
INC R4
MOV A,R2
JNB ACC.7,KEY
RL A
MOV R2,A
AJMP K3
KS: MOV P1,#0FH
MOV A,P1
XRL A,#0FH
RET
DELAY2:
MOV R5,#08H
L7: MOV R6,#0FAH
L8: DJNZ R6,L8
DJNZ R5,L7
RET
tab: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1h,86h,8eh
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -