beijing.c

来自「用AT89S52单片机演奏歌曲《北京欢迎你》」· C语言 代码 · 共 64 行

C
64
字号
					   #include <AT89X51.H>

unsigned int j;
unsigned char STH0;
unsigned char STL0;
unsigned int code tab[]={64021,64103,64260,64400,	   //低mi,fa,so,la
                         64524,64580,64684,64777,	   //低si,中do,re,mi
                         64820,64898,64968,65030,	   //中fa,so,la,si
                         65058,65110,65157,65178,	   //高do,re,mi,fa
						 65217,65252,65283,65312};	   //高so,la,si,do
unsigned char code song[]={ 10,12,10,9,10,9,10,10,10,9,6,8,10,9,9,9,
                            9,8,6,8,9,10,12,9,10,13,12,5,9,8,8,8,
							9,8,6,8,9,10,12,9,10,13,12,12,10,10,10,10,
							9,10,9,8,12,13,8,8,6,10,9,9,8,8,8,0,
							10,12,15,12,13,13,13,12,13,12,10,10,12,12,12,12,
							10,12,13,15,16,15,12,10,9,12,12,10,10,10,10,10,
							10,12,15,12,13,13,13,15,16,15,12,10,12,15,13,10,
							9,10,13,17,16,16,16,16,15,15,15,15,15,15,15,0,
							10,12,15,12,13,13,13,15,16,15,12,10,12,15,13,10,
							9,10,13,17,16,16,16,16,16,16,16,16,//16,16,16,16,
							16,15,15,0,15,15,15,15,15,15,15,15,//15,15,15,15,
							0,0,
                            };

sbit SPK=P3^7;

void delay(unsigned char ms)
{unsigned int i;
 while(ms--)
    {for(i=0;i<2000;i++);
	}
}

void main(void)
{
 TMOD=0x01;
 ET0=1;
 EA=1;

 while(1)
  {j=0;
   while(j<176)
     {TR0=1;
	  if(song[j]==0)
	     TR0=0;
	  else
	     STH0=tab[song[j]]/256;
		 STL0=tab[song[j]]%256;
		 //TR0=1;
      delay(12);
	  TR0=1;
	  j++;

	 }
  }
}

void timer0(void) interrupt 1 using 0
{
TH0=STH0;
TL0=STL0;
SPK=~SPK;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?