c51单片机音乐门铃C语言程序,51单片机音乐门铃的设计

本文介绍了使用C语言编写的一款基于C51单片机的音乐门铃设计,通过按键选择播放不同的歌曲。程序中包含了消除按键抖动、设置Timer0在Mode1以及音乐播放的详细流程,每首歌曲的简谱码和对应的音符节拍都被定义在内存表中。用户可以按动按键来切换不同歌曲,最多支持播放5首歌曲。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

描述

buzzerequp2.4

KEYEQUP3.7

org00h;主程序起始地址

jmpstart;跳动主程序

org0bh;timer0中断起始地址

jmptim0;跳至timer0在mode1

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

5a94f54eeb68218e21a3c6f16026b757.png

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,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值