AVR单片机学习程序(音乐合成)
};
//---------------------节拍表------------------------------------------------
__flash uchar time[]={
40,40,40,40,160,40,40,40,40,160,
40,40,40,40,40,40,80,40,40,40,40,160,40,40,40,40,120,20,20,
40,40,40,40,160,40,40,40,40,40,40,80,40,80,40,160,
40,40,40,40,120,20,20,40,40,40,40,160,40,40,40,40,40,40,80,
40,40,40,40,160,40,40,40,40,160,40,40,40,40,80,80,
40,40,40,40,40,40,80,40,80,20,20,160,
40,40,40,40,160,40,40,40,40,160,
40,40,40,40,40,40,80,40,40,40,40,160,40,40,40,40,120,20,20,
40,40,40,40,160,40,40,40,40,40,40,80,40,80,40,160,
//40,40,40,40,120,20,20,40,40,40,40,160,40,40,40,40,40,40,80,
//40,40,40,40,160,40,40,40,40,160,40,40,40,40,80,80,
//40,40,40,40,40,40,80,40,80,20,20,160,
40,40,40,40,120,20,20,40,40,40,40,160,40,40,40,40,40,40,80,
40,40,40,40,160,40,40,40,40,160,40,40,40,40,80,80,
40,40,40,40,40,40,80,40,80,20,20,160,
40,40,50,55,60,65,240,40,80,20,20,160,200,//198个120,20,20,80,40,40,40,80,20,20,200,40,40,40,40,40,40,40,160,40,
40,40,40,40,40,40,40,60,40,80,40,40,40,40,40,40,40,40,255 ,120,
40,80,40,40,40,40,40,40,160,40,40,40,40,40,20,20,40,40,240,40,
40,120,40,80,40,20,20,40,40,20,20,20,20,160,40,40,40,40,40,20,
20,40,20,20,255,40,40,40,40,40,40,40,40,250,//96个
120,20,20,80,40,40,40,80,20,20,200,40,40,40,40,40,40,40,160,40,
40,40,40,40,40,40,40,60,40,80,40,40,40,40,40,40,40,40,255 ,120,
40,80,40,40,40,40,40,40,160,40,40,40,40,40,20,20,40,40,240,40,
40,120,40,80,40,20,20,40,40,20,20,20,20,160,40,40,40,40,40,20,
20,40,20,20,255,40,40,40,40,40,40,40,40,250,255,60,20,80,20,20,20,20,80,40,40,40,40,160,60,20,40,40,40,40,80,
40,40,40,40,160,40,20,20,40,40,40,40,80,40,20,20,40,40,40,40,
80,60,20,40,40,40,40,80,40,40,40,40,160,60,20,40,40,40,40,80,
120,40,80,80,160,200,//66个20,10,10,20,20,20,10,10,20,20,120,20,20,30,10,30,10,20,10,10,
20,20,160,20,20,20,20,20,20,40,20,20,20,20,20,20,40,30,10,20,
20,20,20,40,30,10,20,20,20,10,10,20,20,160,20,10,10,20,20,20,
10,10,20,20,120,20,20,20,20,20,20,20,10,10,20,20,160,20,20,20,
20,20,20,40,20,20,20,20,20,20,40,30,10,20,20,20,20,40,30,10,
20,20,20,10,10,20,20,160,40,20,20,20,10,10,20,20,120,20,20,60,
20,20,10,10,20,20,160,30,10,20,20,20,20,40,30,10,30,10,20,20,
40,40,20,20,40,20,20,80,60,20,255,40,//153个
30,10,20,20,20,20,20,20,40,20,20,40,20,20,40,20,20,20,20,20,20,20,
20,40,40,20,20,40,20,20,20,20,20,10,10,40,40,80,
40,20,20,20,10,10,20,20,120,20,20,60,
20,20,10,10,20,20,160,30,10,20,20,20,20,40,30,10,30,10,20,20,
40,40,20,20,40,20,20,80,60,20,255,
20,20,10,10,20,20,160,30,10,20,20,20,20,40,30,10,30,10,20,20,
40,40,20,20,40,20,20,80,60,20,255,
};
//===================延时MS子程序===========================================
void delayms(uint m)
{
uint i,j;
for(i=0;im;i++)
{
for(j=0;j10000;j++);
}
}
//==============IO初始化=========================
void IO_init(void)
{
DDRA = 0xff;
PORTA = 0XFF;
DDRB = 0xff;
DDRC = 0xff;
DDRD = 0xff;
}
//==============定时器T0初始化====================
void timer0_init(void)
{
TCCR0 = 0x0B; //64分频
TCNT0 = 0x00; //计数器清0
OCR0 = 1; //1*8/8M=8uS
TIMSK |=0x02; //使能OCIE0
TIFR |=0x02; //清OCIF0中断标识位
}
//==============使能全局中断======================
void Interrupt_init()
{
SREG|=0x80;
}
//==============初始化============================
void init(void)
{
IO_init();
timer0_init();
Interrupt_init();//使能全局中断
}
//===============主函数===========================
void main()
{
init();
while(1)
{
for(x=0;x820;x++)
{
a=yin[x];
if(a==0){DDRD=0x00;}
else {DDRD=0xFF;OCR0=a;}
a=time[x];
delayms(a);
DDRD=0x00;
delayms(1);
}
}
}
//============定时器T0中断服务子程序===============
#pragma interrupt_handler Timer0_Interrupt:20
void Timer0_Interrupt(void)
{
TIFR |=0x02;
TCNT0 =0x00;
PORTD^=0x80; //PD7输出音乐
}
- DIY你的电子玩具:网络音乐电台,给你系统解决方案、软硬件设计实现(04-16)
- 变频器在音乐喷泉上的应用(12-20)
- 单片机音乐-输出口P0.4 STC89C52RC测试通过(11-30)
- 基于51单片机的数字音乐盒C语言驱动程序(11-28)
- 基于单片机设计的音乐马桶(11-28)
- mcu音乐程序的设计与实验(11-27)