📄 speaker.asm
字号:
;===================
;八月桂花香 12M晶振
;===================
ORG 0000H
LJMP START
ORG 000BH ;T0入口
INC 20H
MOV TH0,#0D8H
MOV TL0,#0EFH
RETI
START: MOV SP,#50H ;堆栈指针
MOV TH0,#0FFH
MOV TL0,#0FFH
MOV TMOD,#01H
MOV IE,#82H
MUSIC0: NOP
MOV DPTR,#DAT
MOV 20H,#00H
MOV B,#00H
MUSIC1: NOP
CLR A
MOVC A,@A+DPTR
JZ END0 ;取出的表值为0时结束
CJNE A,#0FFH,MUSIC5 ;判断不等于FFH是转,不明白原因
LJMP MUSIC3
MUSIC5: NOP
MOV R6,A
INC DPTR
MOV A,B
MOVC A,@A+DPTR
MOV R7,A
SETB TR0
MUSIC2: NOP
CPL P1.2
MOV A,R6
MOV R3,A;R3将在延时子程序中用到,可能与声音有关
LCALL DEL
MOV A,R7
CJNE A,20H,MUSIC2;判断不等于20H时转,不明白原因
MOV 20H,#00H
INC DPTR
;INC B
LJMP MUSIC1
MUSIC3: NOP
CLR TR0
MOV R2,#0DH
MUSIC4: NOP
MOV R3,#0FFH
LCALL DEL
DJNZ R2,MUSIC4 ;R2减1,不为0则转
INC DPTR
LJMP MUSIC1
END0: NOP
MOV R2,#64H
MUSIC6: MOV R3,#00H
LCALL DEL
DJNZ R2,MUSIC6
LJMP MUSIC0
DEL: NOP
DEL3: MOV R4,#02H
DEL4: NOP
DJNZ R4,DEL4
NOP
DJNZ R3,DEL3
RET
NOP
DAT: DB 18H, 30H, 1CH, 10H
DB 20H, 40H, 1CH, 10H
DB 18H, 10H, 20H, 10H
DB 1CH, 10H, 18H, 40H
DB 1CH, 20H, 20H, 20H
DB 1CH, 20H, 18H, 20H
DB 20H, 80H, 0FFH, 20H
DB 30H, 1CH, 10H, 18H
DB 20H, 15H, 20H, 1CH
DB 20H, 20H, 20H, 26H
DB 40H, 20H, 20H, 2BH
DB 20H, 26H, 20H, 20H
DB 20H, 30H, 80H, 0FFH
DB 20H, 20H, 1CH, 10H
DB 18H, 10H, 20H, 20H
DB 26H, 20H, 2BH, 20H
DB 30H, 20H, 2BH, 40H
DB 20H, 20H, 1CH, 10H
DB 18H, 10H, 20H, 20H
DB 26H, 20H, 2BH, 20H
DB 30H, 20H, 2BH, 40H
DB 20H, 30H, 1CH, 10H
DB 18H, 20H, 15H, 20H
DB 1CH, 20H, 20H, 20H
DB 26H, 40H, 20H, 20H
DB 2BH, 20H, 26H, 20H
DB 20H, 20H, 30H, 80H
DB 20H, 30H, 1CH, 10H
DB 20H, 10H, 1CH, 10H
DB 20H, 20H, 26H, 20H
DB 2BH, 20H, 30H, 20H
DB 2BH, 40H, 20H, 15H
DB 1FH, 05H, 20H, 10H
DB 1CH, 10H, 20H, 20H
DB 26H, 20H, 2BH, 20H
DB 30H, 20H, 2BH, 40H
DB 20H, 30H, 1CH, 10H
DB 18H, 20H, 15H, 20H
DB 1CH, 20H, 20H, 20H
DB 26H, 40H, 20H, 20H
DB 2BH, 20H, 26H, 20H
DB 20H, 20H, 30H, 30H
DB 20H, 30H, 1CH, 10H
DB 18H, 40H, 1CH, 20H
DB 20H, 20H, 26H, 40H
DB 13H, 60H, 18H, 20H
DB 15H, 40H, 13H, 40H
DB 18H, 80H, 00H
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -