#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);
}
}
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/biancheng/262497.html