×
单片机 > 单片机程序设计 > 详情

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

发布时间:2020-09-01 发布时间:
|
#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);
    }

}



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
ARM 汇编的必知必会