51单片机汇编语言音乐程序.docx
- 文档编号:7265999
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:17
- 大小:20.71KB
51单片机汇编语言音乐程序.docx
《51单片机汇编语言音乐程序.docx》由会员分享,可在线阅读,更多相关《51单片机汇编语言音乐程序.docx(17页珍藏版)》请在冰豆网上搜索。
51单片机汇编语言音乐程序
01两只老虎
NEXTBIT10H;定义标志位
ORG0000H
JMPMAIN
ORG000BH
JMPTONE
ORG001BH
JMPBEAT
ORG0100H
MAIN:
MOVTMOD,#11H
MOVTH0,R2
MOVTL0,R3
MOVTH1,#3CH
MOVTL1,#0B0H
MOVR4,#00H
MOVDPTR,#TAB
YD:
MOVA,R4;取音调数据
MOVCA,@A+DPTR
MOVR2,A
XRLA,#00H
JNZJP;直接取节拍
INCR4
CALLPD;判断指针是否溢出
MOVA,R4
MOVCA,@A+DPTR
MOVR3,A
XRLA,#0FFH
JZJP
MOVA,R2
XRLA,#0FFH
JNZMAIN
JP:
INCR4;取节拍数据
CALLPD
MOVA,R4
MOVCA,@A+DPTR
MOVR5,A
SETBEA
SETBET0
SETBET1
SETBTR0
SETBTR1
SETBNEXT
JBNEXT,$
INCR4
CALLPD
JMPYD
PD:
MOVA,R4
CJNEA,#00H,L1
INCDPH
L1:
RET
;音调产生子程序
TONE:
CPLP2.0
MOVTH0,R2
MOVTL0,R3
RETI
;节拍产生子程序
BEAT:
DJNZR5,L2
MOVTH1,#3CH
MOVTL1,#0B0H
L3:
RETI
L2:
CLRTR0
CLRTR1
CLRNEXT
JMPL3
;两只老虎音符表
TAB:
DB0FBH,0F9H,08H,0FCH,066H,08H,0FCH,0C7H,08H,0FBH,0F9H,08H
DB0FBH,0F9H,08H,0FCH,066H,08H,0FCH,0C7H,08H,0FBH,0F9H,08H
DB0FCH,0C7H,08H,0FCH,0F3H,08H,0FDH,4AH,10H,0FCH,0C7H,08H
DB0FCH,0F3H,08H,0FDH,4AH,08H,0FDH,4AH,04H,0FDH,95H,04H
DB0FDH,4AH,04H,0FCH,0F3H,04H,0FCH,0C7H,08H,0FBH,0F9H,08H
DB0FDH,4AH,04H,0FDH,95H,04H,0FDH,4AH,04H,0FCH,0F3H,04H
DB0FCH,0C7H,08H,0FBH,0F9H,08H,0FCH,66H,08H,0FAH,93H,08H
DB0FBH,0F9H,08H,00H,08H,0FCH,66H,04H,0FAH,93H,08H
DB0FBH,0F9H,08H,00H,10H,0FFH,0FFH
END
02祝你平安
ORG0000H
LJMPSTART
ORG000BH
INC20H;中断服务,中断计数器加1
MOVTH0,#0D8H
MOVTL0,#0EFH;12M晶振,形成10毫秒中断
RETI
START:
MOVSP,#50H
MOVTH0,#0D8H
MOVTL0,#0EFH
MOVTMOD,#01H
MOVIE,#82H
MUSIC0:
NOP
MOVDPTR,#DAT;表头地址送DPTR
MOV20H,#00H;中断计数器清0
MOVB,#00H;表序号清0
MUSIC1:
NOP
CLRA
MOVCA,@A+DPTR;查表取代码
JZEND0;是00H,则结束
CJNEA,#0FFH,MUSIC5
LJMPMUSIC3
MUSIC5:
NOP
MOVR6,A
INCDPTR
MOVA,B
MOVCA,@A+DPTR;取节拍代码送R7
MOVR7,A
SETBTR0;启动计数
MUSIC2:
NOP
CPLP3.3
MOVA,R6
MOVR3,A
LCALLDEL
MOVA,R7
CJNEA,20H,MUSIC2;中断计数器(20H)=R7否?
;不等,则继续循环
MOV20H,#00H;等于,则取下一代码
INCDPTR
;INCB
LJMPMUSIC1
MUSIC3:
NOP
CLRTR0;休止100毫秒
MOVR2,#0DH
MUSIC4:
NOP
MOVR3,#0FFH
LCALLDEL
DJNZR2,MUSIC4
INCDPTR
LJMPMUSIC1
END0:
NOP
MOVR2,#64H;歌曲结束,延时1秒后继续
MUSIC6:
MOVR3,#00H
LCALLDEL
DJNZR2,MUSIC6
LJMPMUSIC0
DEL:
NOP
DEL3:
MOVR4,#02H
DEL4:
NOP
DJNZR4,DEL4
NOP
DJNZR3,DEL3
RET
NOP
DAT:
db26h,20h,20h,20h,20h,20h,26h,10h,20h,10h,20h,80h,26h,20h,30h,20h
db30h,20h,39h,10h,30h,10h,30h,80h,26h,20h,20h,20h,20h,20h,1ch,20h
db20h,80h,2bh,20h,26h,20h,20h,20h,2bh,10h,26h,10h,2bh,80h,26h,20h
db30h,20h,30h,20h,39h,10h,26h,10h,26h,60h,40h,10h,39h,10h,26h,20h
db30h,20h,30h,20h,39h,10h,26h,10h,26h,80h,26h,20h,2bh,10h,2bh,10h
db2bh,20h,30h,10h,39h,10h,26h,10h,2bh,10h,2bh,20h,2bh,40h,40h,20h
db20h,10h,20h,10h,2bh,10h,26h,30h,30h,80h,18h,20h,18h,20h,26h,20h
db20h,20h,20h,40h,26h,20h,2bh,20h,30h,20h,30h,20h,1ch,20h,20h,20h
db20h,80h,1ch,20h,1ch,20h,1ch,20h,30h,20h,30h,60h,39h,10h,30h,10h
db20h,20h,2bh,10h,26h,10h,2bh,10h,26h,10h,26h,10h,2bh,10h,2bh,80h
db18h,20h,18h,20h,26h,20h,20h,20h,20h,60h,26h,10h,2bh,20h,30h,20h
db30h,20h,1ch,20h,20h,20h,20h,80h,26h,20h,30h,10h,30h,10h,30h,20h
db39h,20h,26h,10h,2bh,10h,2bh,20h,2bh,40h,40h,10h,40h,10h,20h,10h
db20h,10h,2bh,10h,26h,30h,30h,80h,00H
END
03生日歌
ORG0000H
JMPSTART
ORG000BH
JMPTIM0
ORG0030H
START:
MOVTMOD,#01H
MOVIE,#82H
START0:
MOV30H,#00H
NEXT:
MOVA,30H
MOVDPTR,#TABLE
MOVCA,@A+DPTR
MOVR2,A
JZEND0
ANLA,#0FH
MOVR5,A
MOVA,R2
SWAPA
ANLA,#0FH
JNZSING
CLRTR0
JMPD1
SING:
DECA
MOV22H,A
RLA
MOVDPTR,#TABLE1
MOVCA,@A+DPTR
MOVTH0,A
MOV21H,A
MOVA,22H
RLA
INCA
MOVCA,@A+DPTR
MOVTL0,A
MOV20H,A
SETBTR0
D1:
CALLDELAY
INC30H
JMPNEXT
END0:
CLRTR0
JMPSTART0
TIM0:
PUSHACC
PUSHPSW
MOVTH0,21H
MOVTL0,20H
CPLP3.7
POPPSW
POPACC
RETI
DELAY:
MOVR7,#02
D2:
MOVR4,#187
D3:
MOVR3,#248
DJNZR3,$
DJNZR4,D3
DJNZR7,D2
DJNZR5,DELAY
RET
TABLE1:
DW64260,64400,64524,64580
DW64684,64777,64820,64898
DW64968,65030,65058,65110
DW65157,65178,65217
TABLE:
DB82H,01H,81H,94H,84H
DB0B4H,0A4H,04H
DB82H,01H,81H,94H,84H
DB0C4H,0B4H,04H
DB82H,01H,81H,0F4H,0D4H
DB0B4H,0A4H,94H
DB0E2H,01H,0E1H,0D4H,0B4H
DB0C4H,0B4H,04H
DB82H,01H,81H,94H,84H
DB0B4H,0A4H,04H
DB82H,01H,81H,94H,84H
DB0C4H,0B4H,04H
DB82H,01H,81H,0F4H,0D4H
DB0B4H,0A4H,94H
DB0E2H,01H,0E1H,0D4H,0B4H
DB0C4H,0B4H,04H
DB00H
END
04八月桂花香
ORG0000H
LJMPSTART
ORG000BH
INC20H;中断服务,中断计数器加1
MOVTH0,#0D8H
MOVTL0,#0EFH;12M晶振,形成10毫秒中断
RETI
START:
MOVSP,#50H
MOVTH0,#0D8H
MOVTL0,#0EFH
MOVTMOD,#01H
MOVIE,#82H
MUSIC0:
NOP
MOVDPTR,#DAT;表头地址送DPTR
MOV20H,#00H;中断计数器清0
MUSIC1:
NOP
CLRA;A清零
MOVCA,@A+DPTR;查表取代码
JZEND0;是00H,则结束
CJNEA,#0FFH,MUSIC5;如果是休止符,往下执行
LJMPMUSIC3
MUSIC5:
NOP
MOVR6,A;R6=18H音符的频率
INCDPTR;DPTR加一
MOVA,#0
MOVCA,@A+DPTR;取节拍代码送R7
MOVR7,A;R7=30H音符发音的时间
SETBTR0;启动计数
MUSIC2:
NOP
CPLP2.3;P2.3是音乐输出引脚
MOVA,R6
MOVR3,A;籖3=R6=18H
LCALLDEL
MOVA,R7
CJNEA,20H,MUSIC2;中断计数器(20H)=R7否?
;不等,则继续循环
MOV20H,#00H;等于,则取下一代码
INCDPTR
LJMPMUSIC1
MUSIC3:
NOP;休止100毫秒
CLRTR0
MOVR2,#0DH;R2=13
MUSIC4:
NOP
MOVR3,#0FFH;R3=255
LCALLDEL
DJNZR2,MUSIC4
INCDPTR
LJMPMUSIC1
END0:
NOP
MOVR2,#0FFH;歌曲结束,延时1秒后继续
MUSIC6:
MOVR3,#00H
LCALLDEL
DJNZR2,MUSIC6
LJMPMUSIC0
DEL:
NOP
DEL3:
MOVR4,#02H
DEL4:
NOP
DJNZR4,DEL4
NOP
DJNZR3,DEL3
RET
NOP
DAT:
DB18H,30H,1CH,10H
DB20H,40H,1CH,10H
DB18H,10H,20H,10H
DB1CH,10H,18H,40H
DB1CH,20H,20H,20H
DB1CH,20H,18H,20H
DB20H,80H,0FFH,20H
DB30H,1CH,10H,18H
DB20H,15H,20H,1CH
DB20H,20H,20H,26H
DB40H,20H,20H,2BH
DB20H,26H,20H,20H
DB20H,30H,80H,0FFH
DB20H,20H,1CH,10H
DB18H,10H,20H,20H
DB26H,20H,2BH,20H
DB30H,20H,2BH,40H
DB20H,20H,1CH,10H
DB18H,10H,20H,20H
DB26H,20H,2BH,20H
DB30H,20H,2BH,40H
DB20H,30H,1CH,10H
DB18H,20H,15H,20H
DB1CH,20H,20H,20H
DB26H,40H,20H,20H
DB2BH,20H,26H,20H
DB20H,20H,30H,80H
DB20H,30H,1CH,10H
DB20H,10H,1CH,10H
DB20H,20H,26H,20H
DB2BH,20H,30H,20H
DB2BH,40H,20H,15H
DB1FH,05H,20H,10H
DB1CH,10H,20H,20H
DB26H,20H,2BH,20H
DB30H,20H,2BH,40H
DB20H,30H,1CH,10H
DB18H,20H,15H,20H
DB1CH,20H,20H,20H
DB26H,40H,20H,20H
DB2BH,20H,26H,20H
DB20H,20H,30H,30H
DB20H,30H,1CH,10H
DB18H,40H,1CH,20H
DB20H,20H,26H,40H
DB13H,60H,18H,20H
DB15H,40H,13H,40H
DB18H,80H,00H
end
05兰花草
SPKEQUP3.3;蜂鸣器所在端口
ORG0000H
JMPSTART
START:
MOVR3,#00H
NEXT:
MOVA,R3
MOVDPTR,#TABLE
MOVCA,@A+DPTR
JZSTART
MOVR7,A
INCR3
MOVA,R3
MOVCA,@A+DPTR
MOVR2,A
ACALLSONG
INCR3
SJMPNEXT
;===============================================================================
;===歌曲播放子程序===
SONG:
MOVA,R2;取出节拍
RLA
JNZKEEP
MOVA,#01H
KEEP:
MOVR2,A
REPEAT:
ACALLEIGHTH
DJNZR2,REPEAT
RET
;===============================================================================
;===产生1/8拍延时子程序===
EIGHTH:
MOVA,R7;查表取出廷时参数,保存到R4
MOVDPTR,#DELAY_T
MOVCA,@A+DPTR
MOVR4,A
MOVA,R7;查表取出1/8拍周期数,保存到R5
MOVDPTR,#S_PARA
MOVCA,@A+DPTR
MOVR5,A
NEXTCYC:
ACALLSOUND
DJNZR5,NEXTCYC
RET
;===============================================================================
;===发声子程序===
SOUND:
SETBSPK
ACALLSDELAY
CLRSPK
ACALLSDELAY
RET
;===============================================================================
;===延时子程序===
SDELAY:
MOVA,R4;廷时值在R4内
MOVR0,A
XL2:
MOVR1,#03H
DL1:
NOP
DJNZR1,DL1
DJNZR0,XL2
RET
;===============================================================================
;===1/8拍周期表===
S_PARA:
DS1DH
DB15H,16H,00
DB19H,00H,1CH,00H,1FH,21H,00H,25H
DB00H,29H,2CH,00H,31H,34H,37H,00H
DB3EH,41H,00H,49H,00H,52H,57H,00H
DB62H
;===============================================================================
;===延时参数表===
DELAY_T:
DS1DH
DB7EH,77H,00H
DB6AH,00H,5EH,00H,54H,4FH,00H,46H
DB00H,3FH,3BH,00H,35H,32H,2FH,00H
DB2AH,27H,00H,23H,00H,1FH,1DH,0C0H
DB1AH
;===============================================================================
;===歌曲表===
TABLE:
DW2202H,2902H,2902H,2902H,2906H,2702H;我从山中来
DW2502H,2702H,2502H,2402H,2208H;带着兰花草
DW2E02H,2E02H,2E02H,2E02H,2E06H,2C02H;种在小园中
DW2902H,2C02H,2D02H,2A02H,2908H;祈祷花开早
DW2902H,2E02H,2E02H,2C02H,2906H,2702H;一日看三回
DW2502H,2702H,2502H,2402H,2206H,1D02H;看得花时过
DW1D02H,2502H,2502H,2402H,2206H,2902H;兰花却依然
DW2702H,2502H,2402H,2002H,2208H;苞也无一个
DW0000H;
END
出师表
两汉:
诸葛亮
先帝创业未半而中道崩殂,今天下三分,益州疲弊,此诚危急存亡之秋也。
然侍卫之臣不懈于内,忠志之士忘身于外者,盖追先帝之殊遇,欲报之于陛下也。
诚宜开张圣听,以光先帝遗德,恢弘志士之气,不宜妄自菲薄,引喻失义,以塞忠谏之路也。
宫中府中,俱为一体;陟罚臧否,不宜异同。
若有作奸犯科及为忠善者,宜付有司论其刑赏,以昭陛下平明之理;不宜偏私,使内外异法也。
侍中、侍郎郭攸之、费祎、董允等,此皆良实,志虑忠纯,是以先帝简拔以遗陛下:
愚以为宫中之事,事无大小,悉以咨之,然后施行,必能裨补阙漏,有所广益。
将军向宠,性行淑均,晓畅军事,试用于昔日,先帝称之曰“能”,是以众议举宠为督:
愚以为营中之事,悉以咨之,必能使行阵和睦,优劣得所。
亲贤臣,远小人,此先汉所以兴隆也;亲小人,远贤臣,此后汉所以倾颓也。
先帝在时,每与臣论此事,未尝不叹息痛恨于桓、灵也。
侍中、尚书、长史、参军,此悉贞良死节之臣,愿陛下亲之、信之,则汉室之隆,可计日而待也
。
臣本布衣,躬耕于南阳,苟全性命于乱世,不求闻达于诸侯。
先帝不以臣卑鄙,猥自枉屈,三顾臣于草庐之中,咨臣以当世之事,由是感激,遂许先帝以驱驰。
后值倾覆,受任于败军之际,奉命于危难之间,尔来二十有一年矣。
先帝知臣谨慎,故临崩寄臣以大事也。
受命以来,夙夜忧叹,恐托付不效,以伤先帝之明;故五月渡泸,深入不毛。
今南方已定,兵甲已足,当奖率三军,北定中原,庶竭驽钝,攘除奸凶,兴复汉室,还于旧都。
此臣所以报先帝而忠陛下之职分也。
至
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 51 单片机 汇编语言 音乐程序