您现在的位置是:首页 > 数字电源 > 技术解析

51单片机音乐门铃的设计

时间:2019-06-14 来源: 关键字:单片机   

buzzerequp2.4

KEYEQUP3.7

org00h;主程序起始地址

jmpstart;跳动主程序

org0bh;timer0中断起始地址

jmptim0;跳至timer0在mode1

start: MOV tmod,#00000001b;设timer0在mode1

 

51单片机音乐门铃的设计

 

MOV ie,#10000010b;中断使能

jbKEY,$;第一次按to?

calldelay1;消除抖动

jnbKEY,$;to放开?

MOV 31h,#00;按to次数计数指针初值为00h

start0:

MOV 30h,#lowsong;取简谱码指针(第1首)

next: MOV a,30h

MOV dptr,#table

MOV ca,@a+dptr;至相关页码,高4位为音符的高低

MOV r2,a;低4位为音符的节拍

jzend0;检查简谱码是否已结束(有无00?)

anla,#0fh;取节拍(低4位)

MOV r5,a;存入r5,节拍的时间

MOV a,r2

swapa

anla,#0fh;取音频值(高4位)

jnzsing;是否为0,是0则不发音

clrtr0

jmpd1

sing:deca;因0不列入

MOV 22h,a;存入(22h)

rla;乘2

MOV dptr,#table

MOV ca,@a+dptr;至table取码,取t的值

MOV th0,a;取到的高位字节存入th0

MOV 21h,a;取到的高位字节存入(21h)

MOV a,22h;再载入取到的音符码

rla;乘2

inca;加1

MOV ca,@a+dptr;至table取相对的低位字节计数值

MOV tl0,a;取到的低位字节存入tl0

MOV 20h,a;取到的低位字节存入(20h)

setbtr0;启动timer0

d1:calldelay

inc30h;取简谱码指针加1

jmpnext

end0:clrtr0;停止计数器

MOV a,31h;载入计次指针

xrla,#00h;是否按第1次?

jnzend1;不是则跳至end1

jbKEY,$;按第2次?

calldelay1;消除抖动

jnbKEY,$;放开否?

inc31h;计次地址(31h)加1

MOV 30h,#lowsong1;第2首歌指针

jmpnext

end1:

MOV a,31h;载入计次指针

xrla,#01h;是否按第2次?

jnzend2;不是则跳至end2

jbKEY,$;按第3次?

calldelay1;消除抖动

jnbKEY,$;放开否?

inc31h;计次地址(31h)加1

MOV 30h,#lowsong2;第3首歌指针

jmpnext

end2:

MOV a,31h;载入计次指针

xrla,#02h;是否按第3次?

jnzend3;不是则跳至end3

jbKEY,$;按第4次?

calldelay1;消除抖动

jnbKEY,$;放开否?

inc31h;计次地址(31h)加1

MOV 30h,#lowsong3;第4首歌指针

jmpnext

end3:

MOV a,31h;载入计次指针

xrla,#03h;是否按第4次?

jnzend4;不是则跳至end4

jbKEY,$;按第5次?

calldelay1;消除抖动

jnbKEY,$;放开否?

inc31h;计次地址(31h)加1

MOV 30h,#lowsong4;第5首歌指针

jmpnext

end4:

MOV a,31h;载入计次指针

xrla,#01h;是否按第5次?

jnzend5;不是则跳至end2

jbKEY,$;按第6次?

calldelay1;消除抖动

jnbKEY,$;放开否?

inc31h;计次地址(31h)加1

MOV 30h,#lowsong5;第6首歌指针

jmpnext

end5:

jmpstart;回到第1次位置

换一批

延伸阅读

[资讯] MCU,麻雀虽小五脏俱全

MCU,麻雀虽小五脏俱全

随着物联网的发展和广泛应用,用户对数据安全也越来越关注,使得MCU中也集成了硬件加密模块,支持各类加密算法。而MCU本身也发展出了数据安全架构,保证从内到外的数据安全。......

关键字:MCU 单片机
发表评论 共有条评论
用户名: 验证码:

手机快充或成标配

手机快充或成标配

其中,OPPO的VOOC闪充、华为的Super Charge快充正是采用大电流方案。以OPPO的VOOC闪充……

折叠屏可能是5G显示最好方案

折叠屏可能是5G显示最好方案

不论是折叠还是卷曲,位错都会变得非常的严重,如果把屏幕减薄,可以使位错问题大幅度……

教你怎样计算差压液位计量程

教你怎样计算差压液位计量程

当算出的差压小于零时,△P=ρgH-△hρog=9.8-△hρog<0。当液位高度为零时输出信号……

项目外包