c51编程,使用外部中断,实现按键切换曲目,可以切换《两只老虎》、《世上只有妈妈好》、《烟花易冷》三首曲子
时间: 2024-04-29 15:22:10 浏览: 79
基于51单片机设计的MID音乐(可切换歌曲)
以下是使用外部中断实现按键切换曲目的C51程序:
```
#include <reg52.h>
sbit BTN = P3^2; // 定义按键引脚
unsigned char music_index = 0; // 当前曲目索引,默认为0
void delay(unsigned int time) // 延时函数
{
unsigned int i, j;
for (i = time; i > 0; i--)
for (j = 110; j > 0; j--);
}
void play_music(unsigned char index) // 播放曲目函数
{
switch (index)
{
case 0: // 两只老虎
// 播放代码
break;
case 1: // 世上只有妈妈好
// 播放代码
break;
case 2: // 烟花易冷
// 播放代码
break;
default:
break;
}
}
void key_interrupt() interrupt 0 // 外部中断0服务函数
{
delay(10); // 消抖
if (BTN == 0) // 判断按键是否按下
{
music_index++; // 切换曲目索引
if (music_index >= 3) // 索引不能超过曲目数
music_index = 0;
play_music(music_index); // 播放曲目
}
}
void main()
{
EA = 1; // 开启总中断
EX0 = 1; // 开启外部中断0
IT0 = 1; // 设置外部中断0为下降沿触发
while (1); // 程序循环
}
```
在该程序中,我们使用了外部中断0来实现按键的切换曲目功能。当按键按下时,外部中断0服务函数被调用,切换曲目索引,并播放对应的曲目。需要注意的是,在按键触发时需要进行一定的消抖处理,以避免按键抖动导致误操作。
阅读全文