📄 appearmusic.asm
字号:
RS EQU P2.0;确定具体硬件的连接方式
RW EQU P2.1 ;确定具体硬件的连接方式
E EQU P2.2 ;确定具体硬件的连接方式
ORG 0000H
JMP MAIN
ORG 0003H ;外部中断0
AJMP PLAYM
ORG 000BH ;定时器t0
AJMP TIM0
ORG 0013H ;外部中断1
AJMP PLAYM
ORG 0060H
MAIN:MOV TMOD,#01H
MOV IE,#10000111B
MOV IP,#00000010B
CLR TR0
MOV P0,#00000001B ;清屏并光标复位
ACALL ENABLE;调用写入命令子程序
MOV P0,#00111000B ;设置显示模式:8位2行5x7点阵
ACALL ENABLE ;调用写入命令子程序
MOV P0,#00001111B ;显示器开、光标开、光标允许闪烁
ACALL ENABLE ;调用写入命令子程序
MOV P0,#0C0H ;写入显示起始地址(第二行第一个位置)
ACALL ENABLE ;调用写入命令子程序
AJMP $
PLAYM :MOV 30H,#00H ;30H用于音乐播放控制
NEXT:JNB P3.2,MUSIC1
JNB P3.3,MUSIC2
AJMP EXT
MUSIC1:MOV DPTR,#TABLE1 ;TABLE1表头
MOV P0,#0C0H ;写入显示起始地址(第二行第一个位置)
ACALL ENABLE ;调用写入命令子程序
MOV P0,#4AH
ACALL XABLE
MOV P0,#49H
ACALL XABLE
MOV P0,#4EH
ACALL XABLE
MOV P0,#47H
ACALL XABLE
MOV P0,#31H
ACALL XABLE
JMP CON
MUSIC2:MOV DPTR,#TABLE2
MOV P0,#0C0H ;写入显示起始地址(第二行第一个位置)
ACALL ENABLE ;调用写入命令子程序
MOV P0,#4AH
ACALL XABLE
MOV P0,#49H
ACALL XABLE
MOV P0,#4EH
ACALL XABLE
MOV P0,#47H
ACALL XABLE
MOV P0,#32H
ACALL XABLE
JMP CON
CON:MOV A,30H ;30H播放控制
MOVC A,@A+DPTR ;乐谱查表
MOV R2,A
JZ END0 ;曲谱结束控制
ANL A,#0FH ;tablex低4位
MOV R5,A ;R5低4位
MOV A,R2
SWAP A
ANL A,#0FH ;tablex高4位
JNZ SING
CLR TR0 ;静音
JMP D1
SING:MOV DPTR,#TABLE0 ;TABLE0
DEC A
MOV 22H,A ;22H存放音符号序号
RL A
MOVC A,@A+DPTR
MOV TH0,A ;定时器高八位送值
MOV 21H,A ;21H存放高八位
MOV A,22H
RL A
INC A
MOVC A,@A+DPTR
MOV TL0,A ;定时器低八位送值
MOV 20H,A ;20H存放低八位
SETB TR0
D1:ACALL DELAY ;节拍
INC 30H ; @30H+1 播放控制
JMP NEXT
END0:CLR TR0 ;曲谱结束控制
JMP PLAYM
EXT:CLR TR0
RETI
TIM0:PUSH ACC ;计时中断
PUSH PSW
MOV TL0,20H ;计时器,低八位重送
MOV TH0,21H ;计时器,高八位重送
CPL P1.6 ;信号输出端
POP PSW
POP ACC
RETI
XABLE: SETB RS ;RS=1
CLR RW ;RW=0 准备写入数据
CLR E ;E=0 ;执行显示命令
ACALL MDELAY ;判断液晶模块是否忙?
SETB E ;E=1 显示完成,程序停车
RET
ENABLE:
CLR RS ;写入控制命令的子程序
CLR RW
CLR E
ACALL MDELAY
SETB E
RET
MDELAY:
MOV P0,#0FFH ;判断液晶显示器是否忙的子程序
CLR RS
SETB RW
CLR E
NOP
SETB E
JB P0.7,MDELAY ;如果P1.7为高电平表示忙就循环等待
RET
DELAY: MOV R7,#02 ;节拍延时产生
D2: MOV R4,#125
D3: MOV R3,#248
DJNZ R3,$
DJNZ R4,D3
DJNZ R7,D2
DJNZ R5,DELAY
RET
TABLE0:
DW 64260,64400,64524,64580
DW 64684,64777,64820,64898
DW 64968,65030,65058,65110
DW 65157,65178,65217
TABLE1: ; 高4位频率选择,低4位节拍选择 三只小猫
DB 84H,02H,82H,64H,54h
DB 64H,54H,48H
DB 64H,02H,52H,44H,24H
DB 14H,24H,18H
DB 24H,02H,22H,42H,24H
DB 44H,54H,68H
DB 54H,02H,52H,84H,84H
DB 54H,64H,48H
DB 00H
TABLE2: ;不倒翁
DB 84H,94H,88H
DB 64H,54H,68H
DB 84H,64H,54H,44h
DB 62H,82H,42H,62H,58H
DB 84H,94H,88H
DB 64H,54H,68H
DB 84H,64H,54H,44h
DB 52H,42H,52H,62H,48H
DB 00H
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -