快捷搜索:

51单片机C语言演奏“童话”

51单片机C语言演奏“童话”

#include

sbit sound=P2^4;
sbit led1=P1^6;
sbit led2=P1^7;
unsigned char h,l,count,length;
unsigned int t,f,i,j;
unsigned int scale[22]={100,262,294,330,349,392,440,494,523,578,659,698,784,880,988,1046,1175,1318,1397,1568,1760,1976};
bit flag=1;
void setthl(unsigned int p)
{
t=p*2;
f=1000000/t;
h=(65536-f)/256;
l=(65536-f)%256;
TH1=h;
TL1=l;
flag=1;
TR1=1;
}
time1() interrupt 3 using 1
{
TH1=h;
TL1=l;
sound=~sound;
}

void timer0(void) interrupt 1
{
TH0=0x9c;
TL0=0x60;
count++;
if (count==length)
{
flag=0;
count=0;
}
}

本文引用地址:

delay()
{
length=10;
flag=1;
TR1=0;
while(flag);
TR1=1;
}

note(unsigned char n,unsigned char len)
{
setthl(scale[n]);
length=len;
while (flag);
led1=!led1;
led2=!led2;

}

song()
{
note(5,15);
note(12,15);
note(11,15);
note(10,30);
note(10,15);note(11,8);note(10,38);

note(10,15);note(11,15);note(10,15);note(11,15);note(10,15);note(9,8);
note(8,8); delay();

note(8,15);note(10,15);note(12,15);note(13,30);note(13,15);note(13,8);note(12,23);note(9,15);note(9,15);note(11,8);note(10,38);
delay();
note(8,15);note(10,15);note(12,15);note(13,30);note(13,15);note(13,8);note(12,23);note(9,15);
note(9,15);note(11,15);note(10,15);note(11,15);note(10,15);note(9,8);note(8,38);
note(9,15);note(9,8);note(10,7);note(6,30);note(6,15);note(8,15);note(8,15);note(7,15);note(7,30);note(8,30);(8,30);
}
Delay(int i)
{ int j;
for(;i>0;i--)
{
for(j=i;j>0;j--);
}
}
main()
{while(1)
{count=0,length=0;
TMOD=0x11;
TH0=0x3c;
TL0=0xb0;
EA=1;
ET1=1;
ET0=1;
TR1=1;
TR0=1;
led1=!led1;
song();
sound=1;
EA=0;
Delay(500);
}

您可能还会对下面的文章感兴趣: