bjhyn.c

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

C
65
字号
#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,10,12,12,10,10,9,9,10,10,9,9,10,10,10,0,10,10,10,9,6,6,8,8,10,10,9,9,9,9,9,0,
                            9,9,8,8,6,6,8,8,9,9,10,10,12,12,9,9,10,10,13,13,12,12,5,5,9,9,8,8,8,8,8,0,
							9,9,8,8,6,6,8,8,9,9,10,10,12,12,9,9,10,10,13,13,12,12,12,12,10,10,10,10,10,10,10,0,
							9,9,10,10,9,9,8,8,12,12,12,13,8,8,8,0,6,6,10,10,9,9,9,9,8,8,8,8,8,8,0,0,
							0,0,0,0,0,0,
							10,10,10,10,12,12,12,12,15,15,12,12,13,13,13,13,13,0,12,12,13,13,12,12,10,10,10,10,12,12,12,12,12,12,12,0,
							10,10,12,12,13,13,15,15,16,16,15,15,12,12,10,10,9,9,12,12,12,12,12,12,10,10,10,10,10,10,10,10,0,
							10,10,12,12,15,15,12,12,13,13,13,13,13,0,15,15,16,16,16,15,12,12,10,10,12,12,15,15,13,13,13,10,
							9,9,10,10,13,13,17,17,16,16,16,16,16,0,16,16,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,0,
							10,10,12,12,15,15,12,12,13,13,13,13,13,0,15,15,16,16,16,15,12,12,10,10,12,12,15,15,13,13,13,10,
							9,9,10,10,13,13,17,17,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
							16,16,16,0,15,15,0,0,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,0,0,0,0,0,0,
							0,0,
                            };

sbit SPK=P3^7;

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

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

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

	 }
  }
}

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

⌨️ 快捷键说明

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