#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit BEEP=P2^3; //定义喇叭输出端口
uchar tick,tl,th; //定义节拍和T0初值变量
uchar TABLE[]={ //音符节拍表
0x82,0x01,0x81,0x94,0x84,0xB4,0xA4,0x04,
0x82,0x01,0x81,0x94,0x84,0xC4,0xB4,0x04,
0x82,0x01,0x81,0xF4,0xD4,0xB4,0xA4,0x94,
0xE2,0x01,0xE1,0xD4,0xB4,0xC4,0xB4,0x04,
0x82,0x01,0x81,0x94,0x84,0xB4,0xA4,0x04,
0x82,0x01,0x81,0x94,0x84,0xC4,0xB4,0x04,
0x82,0x01,0x81,0xF4,0xD4,0xB4,0xA4,0x94,
0xE2,0x01,0xE1,0xD4,0xB4,0xC4,0xB4,0x04,
0x00};
uchar TABLE1[]={ //音符对应的定时器初值表
//64260,64400,64524,64580,
0xfb,0x04,0xfb,0x90,0xfc,0x0c,0xfc,0x44,
//64684,64777,64820,64898,
0xfc,0xac,0xfd,0x09,0xfd,0x34,0xfd,0x82,
//64968,65030,65058,65110,
0xfd,0xc8,0xfe,0x06,0xfe,0x22,0xfe,0x56,
//65157,65178,65217
0xfe,0x85,0xfe,0x9a,0xfe,0xc1
};
/********************************* T0中断服务函数*********************************/
timer0() interrupt 1 using 1{
TL0=tl;TH0=th; //重装定时初值
BEEP=~BEEP; //喇叭输出端口电平取反
}
/********************************* 基本单位延时函数*********************************/
void delay1(){
uint i;
for(i=0;i<20000;i++);
}
/*********************************** 节拍延时函数***********************************/
void delay(tt){
uchar i;
for(i=0;i<=tt;i++) delay1();
}
/**********************************主函数**********************************/
void main(){
uchar t,t1,k=0; //定义临时变量
while(1){
TMOD=0x01;IE=0x82; //定义T0工作方式,开中断
while(TABLE[k]!=0){ //判断取得的简谱码是否为结束码
tick=(TABLE[k])&0x0f; //不是,则取节拍码
t=(_crol_(TABLE[k],4))&0x0f; //取音符码
if(t!=0){ //判断取得的音符码是否为0
t1=--t*2+1; //不是,根据取得的音符码计算T0初值
t=t*2;
tl=TL0=TABLE1[t1];
th=TH0=TABLE1[t];
TR0=1; //启动T0
}
else TR0=0; //取得的音符码为0,则停止T0
delay(tick); //根据则取的节拍码延时
k++;
}
TR0=0; //取得的简谱码为结束码,则停止T0
}
}
基于 8051 单片机的音乐播放程序
3星 · 超过75%的资源 需积分: 9 68 浏览量
2012-10-15
21:58:27
上传
评论 1
收藏 26KB RAR 举报
XingKongXiaKang
- 粉丝: 0
- 资源: 8
最新资源
- Figma Converter for Unity适用Unity的Figma转换器Unity游戏开发插件unitypackage
- Creepy Animatronic Anims 令人毛骨悚然的电子动画Unity游戏动画插件资源unitypackage
- Rankings & Leaderboards 排名和排行榜Unity游戏开发插件资源unitypackage
- Semantic Color Palette 语义调色板Unity游戏开发插件资源unitypackage
- Low Poly Nature:Lush and Diverse Environments低聚自然郁郁Unity低多边形模型资源
- voc数据集是什么-我们如何使用voc数据集
- Edgar Pro-Procedural Level Generator程序关卡生成器Unity开发插件unitypackage
- 宝藏软件m3u8下载器\m3u8DL-CLI
- 三次样条插值的介绍-什么是三次样条插值原理
- http的一些相关介绍-对于我们来说什么是http
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈