微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > mcu音乐程序的设计与实验

mcu音乐程序的设计与实验

时间:11-27 来源:互联网 点击:

void int0()interrupt 1//采用中断0 控制节拍
{TH0=0xd8;
TL0=0xef;
n--;
}

void delay (unsigned char m)//控制频率延时
{
unsigned i=3*m;
while(--i);
}

void delayms(unsigned char a)//豪秒延时子程序
{
while(--a);//采用while(--a) 不要采用while(a--); 各位可编译一下看看汇编结果就知道了!
}

void main()
{ unsigned char p,m;//m为频率常数变量
unsigned char i=0;
TMOD&=0x0f;
TMOD =0x01;
TH0=0xd8;TL0=0xef;
IE=0x82;
play:
while(1)
{
a: p=music_tab[i];
if(p==0x00){ i=0, delayms(1000); goto play;}//如果碰到结束符,延时1秒,回到开始再来一遍
else if(p==0xff){ i=i+1;delayms(100),TR0=0; goto a;}//若碰到休止符,延时100ms,继续取下一音符
else{m=music_tab[i++], n=music_tab[i++];}//取频率常数 和 节拍常数
TR0=1;//开定时器1
while(n!=0) P1=~P1,delay(m);//等待节拍完成, 通过P1口输出音频(可多声道哦!)
TR0=0;//关定时器1
}
}


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top