📄 play.asm
字号:
ORG 2000H
START: MOV SP,#60H
MOV R7,#00H
START1: ACALL ZH
ACALL PLAY
MOV R2,#30H
lCALL DELY
SJMP $
;--------------------------------------------------
PLAY: MOV DPTR,#8000H
MOV A,#0FFH
MOVX @DPTR,A ;STOP R/P
MOV R2,#0FH
ACALL DELY ;20MS
MOV A,40H ;PLAY CODE
MOVX @DPTR,A ;PE=1
MOV R2,#0FH
ACALL DELY ;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 R/P
RET
ZH: MOV A,R7 ;R0 IS SEGMENT ADDRESS:0,1,2,....
SUBB A,#14H
JNC ZH1
MOV A,R7
SJMP ZH2
ZH1: MOV A,#00H
ZH2: RL A
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV 40H,A
RET
TAB: DB 0C0H,0C1H,0C2H,0C3H,0C4H,0C5H,0C6H,0C7H,0C8H,0C9H,0CAH,0CBH,0CCH
DB 0CDH,0CEH,0CFH
DB 0D0H,0D1H,0D2H,0D3H,0D4H,0D5H,0D6H,0D7H,0D8H,0D9H,0DAH,0DBH,0DCH
DB 0DDH,0DEH,0DFH
DB 0E0H,0E1H,0E2H,0E3H,0E4H,0E5H,0E6H,0E7H
D500MS: MOV R5,#05H
DL1: LCALL D100MS
DJNZ R5,DL1
RET
D100MS:
MOV R6,#64H
DL2: MOV R4,#0FFH
DL3: DJNZ R4,DL3
DJNZ R6,DL2
RET
DELY: PUSH 02H
LP2: PUSH 02H
LP1: PUSH 02H
LP0: DJNZ R2,LP0
POP 02H
DJNZ R2,LP1
POP 02H
DJNZ R2,LP2
POP 02H
DJNZ R2,DELY
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -