当前位置:首页 > 课程设计 基于单片机的音乐播放器
13
MOV 31H,DPH
CJNE A,#01H,ELECT ;一首歌没结束转ELECT INC R5 ;结束歌曲计数器加1 ELECT: JZ START ;所有歌曲结束转START循环 MOV A,R0 JNZ SING CLR TR0 SETB P3.7
LOOP1: ACALL DELAY ; DJNZ R1,LOOP1 SJMP START1
SING: MOV DPTR,#TAB1 ; DEC R0 ; MOV A,R0
MOV B,#02H MUL AB MOV R0,A
MOVC A,@A+DPTR ; MOV 21H,A INC DPTR MOV A,R0 MOVC A,@A+DPTR MOV 20H,A
MOV TL0,20H MOV TH0,21H
SETB TR0 ; LOOP2: ACALL DELAY DJNZ R1,LOOP2 AJMP START1 TIM0: MOV TL0,20H MOV TH0,21H CPL P3.7
RETI ; DELAY: MOV R2,#70
调用延时子程序 音符表首址送DPTR 计算音符 查表 开T0定时器 中断返回 13
14
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 ; 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 ; MOV A,R5 ; RL A SETB EA ; JMP @A+DPTR ; TAB: AJMP MUSIC2 AJMP MUSIC3 AJMP MUSIC4 AJMP MUSIC5
MUSIC2: MOV DPTR,#TAB2 ;14
;等待键释放
关中断 等待键释放
不是第一首歌曲转ZER0 是第一首将最后一首歌曲装入歌歌曲向上进一首 ;歌曲下翻一首
将歌曲排列表装入DPTR 将R5的内容送A 开中断
根据A的内容转向不同歌曲 第2首歌曲首址送DPTR
MOV P2,#06H
GONG: MOV 30H,DPL MOV 31H,DPH AJMP START1 MUSIC3: MOV DPTR,#TAB3
MOV P2,#5BH
SJMP GONG MUSIC4: MOV DPTR,#TAB4
MOV P2,#4FH
SJMP GONG MUSIC5: MOV DPTR,#TAB5
MOV P2,#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 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
;**********************(梁祝)*************************; TAB3: DW 0A10H,0C08H,0D04H,0F08H,1004H,0D04H,0F04H,0C08H DW 1308H,1504H,1404H,1304H,1104H,1304H,1018H,1008H DW 1004H,1104H,0E08H,0D04H,0C08H,0D04H,0F08H,1008H DW 0A08H,0F08H,0D04H,0C04H,0D04H,0F04H,0C18H,1108H DW 1304H,0E08H,1008H,0D04H,0F04H,0C08H,0C10H,0A08H DW 0C02H,0A08H,0C08H,0D02H,0E04H,1004H,0D18H,0C04H DW 0D04H,0F08H,1004H,1308H,1108H,1008H,1104H,1004H DW 0F08H,0D04H,0C04H,0A10H,0F10H,0D08H,0F02H,0D04H
15
15
16
DW 0C04H,0A04H,0C04H,0D04H,0F04H,0C38H,0001H ;*****************(让我们荡起双桨)*********************; TAB4: DW 0608H,0808H,0908H,0A18H,0C08H,0A08H,0808H,0910H DW 0620H,0008H,0808H,0908H,0A08H,0C18H,0001H,0C08H DW 0D10H,0910H,0A30H,0001H,0A08H,0C08H,0D20H,0C18H DW 0D08H,0F08H,0E04H,0D04H,0C08H,0D08H,0A10H,0004H DW 0808H,0908H,0A18H,0C08H,0810H,0610H,0808H,0908H DW 0A08H,0D08H,0C30H,0010H,0A20H,0D18H,0001H,0D08H DW 0C08H,0B08H,0A10H,0001H,0920H,0A18H,0C08H,0608H DW 0808H,0910H,0010H,0808H,0908H,0A10H,0C0BH,0001H DW 0C04H,0D10H,0F10H,0E08H,0D08H,0C08H,0A08H,0D40H 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
16
共分享92篇相关文档