📄 play.asm
字号:
;============== 语音控制:放音 ====================
PlayCode equ 40h
org 0000h
mov sp,#60h
mov r7,#00h
acall zh_play
acall Play
mov r2,#30h
acall DelayP
sjmp $
Play: mov dptr,#8e18h
mov a,#0ffh
movx @dptr,a ;Stop Record/Play
mov r2,#1Eh ;#0FH
acall DelayP ;20ms
mov a,PlayCode
movx @dptr,a ;pe=1
mov r2,#1Eh
acall DelayP ;0.5s
anl a,#0bfh
movx @dptr,a ;pe=0
acall d500ms ;play time
acall d500ms
acall d500ms
mov a,#0ffh
movx @dptr,a ;Stop Record/Play
ret
zh_play:mov a,r7 ;r7 is segment address:0,1,2,....
subb a,#14h
jnc zh1
mov a,r7
sjmp zh2
zh1: mov a,#0
zh2: rl a
mov dptr,#Tab_Play
movc a,@a+dptr
mov PlayCode,a
ret
DelayP: push 02h
Loop1: push 02h
Loop0: push 02h
djnz r2,$
pop 02h
djnz r2,Loop0
pop 02h
djnz r2,Loop1
pop 02h
djnz r2,DelayP
ret
d500ms: mov r5,#0AH ;#5
dl1: acall d100ms
djnz r5,dl1
ret
d100ms: mov r6,#0C8H ;#64h
dl2: mov r4,#0ffh
dl3: djnz r4,dl3
djnz r6,dl2
ret
Tab_Play:db 0c0h,0c1h,0c2h,0c3h,0c4h,0c5h,0c6h,0c7h
db 0c8h,0c9h,0cah,0cbh,0cch,0cdh,0ceh,0cfh
db 0d0h,0d1h,0d2h,0d3h,0d4h,0d5h,0d6h,0d7h
db 0d8h,0d9h,0dah,0dbh,0dch,0ddh,0deh,0dfh
db 0e0h,0e1h,0e2h,0e3h,0e4h,0e5h,0e6h,0e7h
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -