找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2812|回复: 3
收起左侧

51单片机音乐播放器汇编程序

[复制链接]
ID:369781 发表于 2019-6-12 21:02 | 显示全部楼层 |阅读模式
ORG 0000H
AJMP LOOOOP //绝对转移指令。
ORG 000BH
AJMP TIM0
ORG 001BH
RETI // 中断返回指令
ORG 0023H
LOOOOP: MOV A,#01H
LOOOP: MOV P1,#3FH
MOV P2,A
RL A //A 左移
MOV R2,#0FFH
DELAY0: MOV R3,#0FFH
DJNZ R3,$ //$ 在某些 51 的汇编语言里表示本条指令的地址
DJNZ R3,$ 意思是 R3 减一,不为零跳转到本条指令 ( 为零执行下
一条指令 )
MOV R4,#0FFH
DJNZ R4,$
DJNZ R2,DELAY0
JNB P3.3,START // 直接寻址位不为 1 转
LJMP LOOOP //长调用指令
START: MOV P1,#06H
MOV R5,#00H / 初始化
MOV TMOD,#00010001B
MOV IE,#10101010B
MOV DPTR,#TAB2 // 装第一首歌
MOV 30H,DPL //DPTR低 8 位送 30H暂存
MOV 31H,DPH //DPTR高 8 位送 31H暂存
START1: INC R4 寄存器内容加 1// 产生 8 位随机数
MOV A,#01010101B
MOV B,R4
MUL AB
MOV P2,A
MOV DPL,30H
MOV DPH,31H
MOV A,#00H
MOVC A,@A+DPTR // 查表
MOV R0,A // 音符数据送 R0暂存
MOV A,#00H
INC DPTR //DPTR 的内容加 1
MOVC A,@A+DPTR // 查表
MOV R1,A // 节拍数据送 R1暂存
INC DPTR
MOV 30H,DPL
MOV 31H,DPH
CJNE A,#01H,ELECT// 立即数与 A 相比不相等则转移 / 一首歌
没结束转 ELECT
INC R5
LJMP KEYWORK // 结束歌曲计数器加 1
ELECT: JZ START // 所有歌曲结束转 START循环(累加器内容为
0 转移)
MOV A,R0
JNZ SING (累加器内容不为 0 转移)
CLR TR0 // 累加器内容清 0
SETB P3.7 // 置位直接位
LOOP1: ACALL DELAY // 绝对调用(调用延时子程序)
DJNZ R1,LOOP1
SJMP START1 // 相对转移
SING: MOV DPTR,#TAB1 // 音符表首地址送 DPTR
DEC R0 //R0 内容减 1(计算音符)
MOV A,R0
MOV B,#02H
MUL AB //A 乘以 B
MOV R0,A
MOVC A,@A+DPTR
MOV 21H,A
INC DPTR // 数据之指针加 1
MOV A,R0
MOVC A,@A+DPTR
MOV 20H,A
MOV TL0,20H
MOV TH0,21H
SETB TR0 开 T0 定时器
LOOP2: ACALL DELAY
DJNZ R1,LOOP2
AJMP START1
TIM0: MOV TL0,20H
MOV TH0,21H
CPL P3.7
RETI 中断返回
DELAY: MOV R2,#70
DELAY1: MOV R3,#252
DJNZ R3,$
JNB P3.3,AGAIN 重复正播放的曲子
JNB P3.4,FORM // 上一曲开关按下转 FORM
JNB P3.5,NEXT // 下一曲开关按下转 NEXT
DJNZ R2,DELAY1
RET
AGAIN: JNB P3.3,$ 等待键释放
LJMP KEYWORK
FORM: CLR EA 关中断
JNB P3.4,$ 等待键释放
CJNE R5,#00H,ZERO 不是第一首歌曲转 ZER0
MOV R5,#04H// 是第一首将最后一首歌曲装入歌曲计数器
SJMP KEYWORK
ZERO: DEC R5 歌曲向上进一首
SJMP KEYWORK
NEXT: CLR EA
JNB P3.5,$
CJNE R5,#04H,LAST
MOV R5,#00H
LJMP KEYWORK
LAST: INC R5 歌曲下翻一首
LJMP KEYWORK
KEYWORK: MOV DPTR,#TAB// 将歌曲排列表装入 DPTR
MOV A,R5// 将 R5的内容送 A
RL A //A 左移
SETB EA // 开中断
JMP @A+DPTR // 根据 A的内容转向不同歌曲
TAB: AJMP MUSIC2
AJMP MUSIC3
AJMP MUSIC4
AJMP MUSIC5
MUSIC2: MOV DPTR,#TAB2 //第二首歌曲送 DPTR
MOV P1,#06H
GONG: MOV 30H,DPL
MOV 31H,DPH
AJMP START1
MUSIC3: MOV DPTR,#TAB3
MOV P1,#5BH
SJMP GONG
MUSIC4: MOV DPTR,#TAB4
MOV P1,#4FH
SJMP GONG
MUSIC5: MOV DPTR,#TAB5
MOV P1,#66H
SJMP GONG
******************** (音符表) **********************;
TAB1:
DW 64021,64185,64331,64400,64524,64632,64732
DW 64777,64860,64934,64968,65030,65085,65134
DW 65157,65198,65235,65252,65283,65310,65335 ;
**********************( 因 为 爱
情)*************************;
TAB2:
DW 0910H,0A08H,0C08H,0C08H,0A18H,0010H,0C08H,0A08H
DW 0908H,0C08H,0C20H,0D08H,0E08H,0F08H,0F08H,0F08H
DW 0E08H,0F18H,0E04H,0E08H,0E08H,0C08H,0A08H,0A20H
DW 0C08H,0A08H,0C08H,0D08H,0D18H,0C08H,0D08H,0C08H
DW 0C08H,0808H,0820H,0608H,0808H,0A08H,0908H,0608H
DW 0A08H,0908H,0608H,0A08H,0908H,0608H,0D10H,0C20H
DW 0001H ;
*********************(
兰花草
)***********************;
TAB3:
DW 0608H,0A08H,0A08H,0A08H,0A18H,0908H,0808H,0908H
DW 0808H,0708H,0620H,0D08H,0D08H,0D08H,0D08H,0D18H
DW 0C08H,0A08H,0C08H,0C08H,0B08H,0A20H,0A08H,0D08H
DW 0D08H,0C08H,0A18H,0908H,0808H,0908H,0808H,0708H
DW 0610H,0310H,0308H,0808H,0808H,0708H,0618H,0A08H
DW 0908H,0808H,0708H,0508H,0620H,0908H,0808H,0708H
DW 0508H,0640H,0001H ;
*********************( 我 只 在 乎
你)*****************************;
TAB4: DW 0A08H,0A08H,0A08H,0908H,0A10H,0C08H,0C08H,0C2
0H
DW 0D08H,0D08H,0D08H,0C08H,0A10H,0D08H,0C08H,0C20H
DW 0F08H,0F08H,0F08H,0D08H,1010H,0F08H,0C08H,0C20H
DW 0D08H,0D08H,0D08H,0F08H,0D08H,0C10H,0A10H,0920H
DW 0A08H,0A08H,0A08H,0908H,0A10H,0C08H,0C08H,0C20H
DW 0D08H,0D08H,0D08H,0C08H,0A10H,0C08H,0C08H,0C20H
DW 0F08H,0F10H,0D08H,1010H,1010H,0F08H,0C08H,0C20H
DW 1010H,0C10H,0F10H,1010H,1110H,1010H,0F10H,0E10H
DW 0F10H,0E10H,0D10H,0C10H,0D40H,0020H,0004H,0F08H
DW 1008H,1110H,1010H,0F10H,0E10H,0F10H,0E10H,0A10H
DW 0C10H,0D20H,0008H,0D08H,0C08H,0D10H,0F10H,0F20H
DW 0010H,0F20H,1010H,1110H,0F10H,1010H,0F10H,0D08H
DW 0D08H,1210H,1110H,1010H,0F08H,1208H,1210H,1110H
DW 1010H,0F10H,1030H,1110H,1008H,0F08H,0F20H,0F10H
DW 1010H,1120H,0F10H,1410H,1310H,1108H,1008H,0F10H
DW 0D30H,0010H,0C10H,0F10H,1110H,1310H,1408H,1108H
DW 1008H,0F10H,0D10H,0F10H,0F08H,1010HF08H,0F40H
DW 0001H
*********************( 童
年)****************************;
TAB5:
DW 0A08H,0C08H,0C10H,0C08H,0A08H,0D08H,0D08H,0E08H
DW 0D08H,0D08H,0D08H,0D08H,0C08H,0F10H,0F08H,0F08H
DW 0F08H,0D08H,0F08H,0D08H,0C40H,0A08H,0C08H,0C10H
DW 0C08H,0A08H,0D08H,0D08H,0E08H,0D08H,0D08H,0D08H
DW 0D08H,0C08H,0F10H,0F08H,0F08H,0F08H,0D08H,0D08H
DW 0F08H,1040H,1308H,1308H,1310H,1310H,1108H,1008H
DW 0F08H,0F10H,0D08H,0D08H,0F08H,0D08H,0F08H,1008H
DW 1008H,1008H,1008H,1008H,0F08H,1108H,1008H,1040H
DW 1108H,1110H,1108H,1108H,1008H,1010H,0F08H,0F10H
DW 0F08H,1008H,0F08H,0D08H,0C08H,0C08H,0C10H,0C08H
DW 0D08H,0C08H,1008H,1108H,0F40H,0001H,0000H
END
回复

使用道具 举报

ID:666819 发表于 2019-12-18 08:40 | 显示全部楼层
东西不错,很有用,谢谢。
回复

使用道具 举报

ID:298008 发表于 2019-12-31 20:08 | 显示全部楼层
谢谢楼主分享!!!
回复

使用道具 举报

ID:678235 发表于 2020-1-1 13:50 | 显示全部楼层
我做一首音乐汇编遇到了问题可以请教一下楼主吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表