单片机音乐程序(六首歌)

单片机音乐程序(六首歌)

ID:14340570

大小:41.00 KB

页数:9页

时间:2018-07-28

单片机音乐程序(六首歌)_第1页
单片机音乐程序(六首歌)_第2页
单片机音乐程序(六首歌)_第3页
单片机音乐程序(六首歌)_第4页
单片机音乐程序(六首歌)_第5页
资源描述:

《单片机音乐程序(六首歌)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、单片机音乐程序(六首歌);六首唱歌的音乐程序按p3.4循环,直到一首歌唱完及停p3.3口接小喇叭*;********************************************************************************;*日期:2007-3-25*;*版本:3.0*;*作者:深圳学林电子有限公司专业8051单片机教学站*;*邮箱:sxj1974@163.com*;*网站:http://www.51c51.comhttp://www.8951.com更多例程请登陆网站*;**********************************

2、**********************************************;*硬件:此程序在本公司xlisp系列单片机实验仪运行通过*;********************************************************************************;*【版权】Copyright(C)深圳学林电子有限公司www.51c51.comAllRightsReserved*;*【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!*;*******************************************

3、*************************************org00h;主程序起始地址jmpstart;跳动主程序org0bh;timer0中断起始地址jmptim0;跳至timer0在mode1org0080hstart:movtmod,#00000001b;设timer0在mode1movie,#10000010b;中断使能jbp3.4,$;第一次按to?calldelay1;消除抖动jnbp3.4,$;to放开?mov31h,#00;按to次数计数指针初值为00hstart0:mov30h,#lowsong;取简谱码指针(第1首)next:mova,30h

4、movdptr,#tablemovca,@a+dptr;至相关页码,高4位为音符的高低movr2,a;低4位为音符的节拍jzend0;检查简谱码是否已结束(有无00?)anla,#0fh;取节拍(低4位)movr5,a;存入r5,节拍的时间mova,r2swapaanla,#0fh;取音频值(高4位)jnzsing;是否为0,是0则不发音clrtr0jmpd1sing:deca;因0不列入mov22h,a;存入(22h)rla;乘2movdptr,#tablemovca,@a+dptr;至table取码,取t的值movth0,a;取到的高位字节存入th0mov21h,a;取到的

5、高位字节存入(21h)mova,22h;再载入取到的音符码rla;乘2inca;加1movca,@a+dptr;至table取相对的低位字节计数值movtl0,a;取到的低位字节存入tl0mov20h,a;取到的低位字节存入(20h)setbtr0;启动timer0d1:calldelayinc30h;取简谱码指针加1jmpnextend0:clrtr0;停止计数器mova,31h;载入计次指针xrla,#00h;是否按第1次?jnzend1;不是则跳至end1jbp3.4,$;按第2次?calldelay1;消除抖动jnbp3.4,$;放开否?inc31h;计次地址(31h)

6、加1mov30h,#lowsong1;第2首歌指针jmpnextend1:mova,31h;载入计次指针xrla,#01h;是否按第2次?jnzend2;不是则跳至end2jbp3.4,$;按第3次?calldelay1;消除抖动jnbp3.4,$;放开否?inc31h;计次地址(31h)加1mov30h,#lowsong2;第3首歌指针jmpnextend2:mova,31h;载入计次指针xrla,#02h;是否按第3次?jnzend3;不是则跳至end3jbp3.4,$;按第4次?calldelay1;消除抖动jnbp3.4,$;放开否?inc31h;计次地址(31h)加1

7、mov30h,#lowsong3;第4首歌指针jmpnextend3:mova,31h;载入计次指针xrla,#03h;是否按第4次?jnzend4;不是则跳至end4jbp3.4,$;按第5次?calldelay1;消除抖动jnbp3.4,$;放开否?inc31h;计次地址(31h)加1mov30h,#lowsong4;第5首歌指针jmpnextend4:mova,31h;载入计次指针xrla,#01h;是否按第5次?jnzend5;不是则跳至end2jbp3.4,$;按第6次?calld

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。