如题所述
#include <REG52.H>
#include <INTRINS.H>
//æ¬ä¾éç¨89C52, æ¶æ¯ä¸º11.0592MHZ
//å ³äºå¦ä½ç¼å¶é³ä¹ä»£ç , å ¶å®ååç®å,åä½å¯ä»¥ç以ä¸ä»£ç .
//é¢ç常æ°å³é³ä¹æ¯è¯ä¸çé³è°,èèæ常æ°å³é³ä¹æ¯è¯ä¸çå¤å°æ;
//æ以æ¿åºè°±å, è¯æ¢ç¼å§!
sbit Beep = P1^5 ;
unsigned char n=0; //n为èæ常æ°åé
unsigned char code music_tab[] ={
0x18, 0x30, 0x1C , 0x10, //æ ¼å¼ä¸º: é¢ç常æ°, èæ常æ°, é¢ç常æ°, èæ常æ°,
0x20, 0x40, 0x1C , 0x10,
0x18, 0x10, 0x20 , 0x10,
0x1C, 0x10, 0x18 , 0x40,
0x1C, 0x20, 0x20 , 0x20,
0x1C, 0x20, 0x18 , 0x20,
0x20, 0x80, 0xFF , 0x20,
0x30, 0x1C, 0x10 , 0x18,
0x20, 0x15, 0x20 , 0x1C,
0x20, 0x20, 0x20 , 0x26,
0x40, 0x20, 0x20 , 0x2B,
0x20, 0x26, 0x20 , 0x20,
0x20, 0x30, 0x80 , 0xFF,
0x20, 0x20, 0x1C , 0x10,
0x18, 0x10, 0x20 , 0x20,
0x26, 0x20, 0x2B , 0x20,
0x30, 0x20, 0x2B , 0x40,
0x20, 0x20, 0x1C , 0x10,
0x18, 0x10, 0x20 , 0x20,
0x26, 0x20, 0x2B , 0x20,
0x30, 0x20, 0x2B , 0x40,
0x20, 0x30, 0x1C , 0x10,
0x18, 0x20, 0x15 , 0x20,
0x1C, 0x20, 0x20 , 0x20,
0x26, 0x40, 0x20 , 0x20,
0x2B, 0x20, 0x26 , 0x20,
0x20, 0x20, 0x30 , 0x80,
0x20, 0x30, 0x1C , 0x10,
0x20, 0x10, 0x1C , 0x10,
0x20, 0x20, 0x26 , 0x20,
0x2B, 0x20, 0x30 , 0x20,
0x2B, 0x40, 0x20 , 0x15,
0x1F, 0x05, 0x20 , 0x10,
0x1C, 0x10, 0x20 , 0x20,
0x26, 0x20, 0x2B , 0x20,
0x30, 0x20, 0x2B , 0x40,
0x20, 0x30, 0x1C , 0x10,
0x18, 0x20, 0x15 , 0x20,
0x1C, 0x20, 0x20 , 0x20,
0x26, 0x40, 0x20 , 0x20,
0x2B, 0x20, 0x26 , 0x20,
0x20, 0x20, 0x30 , 0x30,
0x20, 0x30, 0x1C , 0x10,
0x18, 0x40, 0x1C , 0x20,
0x20, 0x20, 0x26 , 0x40,
0x13, 0x60, 0x18 , 0x20,
0x15, 0x40, 0x13 , 0x40,
0x18, 0x80, 0x00
};
void int0() interrupt 1 //éç¨ä¸æ0 æ§å¶èæ
{ TH0=0xd8;
TL0=0xef;
n--;
}
void delay (unsigned char m) //æ§å¶é¢ç延æ¶
{
unsigned i=3*m;
while(--i);
}
void delayms(unsigned char a) //豪ç§å»¶æ¶åç¨åº
{
while(--a); //éç¨while(--a) ä¸è¦éç¨while(a--); åä½å¯ç¼è¯ä¸ä¸ççæ±ç¼ç»æå°±ç¥éäº!
}
void main()
{ unsigned char p,m; //m为é¢ç常æ°åé
unsigned char i=0;
TMOD&=0x0f;
TMOD|=0x01;
TH0=0xd8;TL0=0xef;
IE=0x82;
play:
while(1)
{
a: p=music_tab[i];
if(p==0x00) { i=0, delayms(1000); goto play;} //å¦æ碰å°ç»æ符,延æ¶1ç§,åå°å¼å§åæ¥ä¸é
else if(p==0xff) { i=i+1;delayms(100),TR0=0; goto a;} //è¥ç¢°å°ä¼æ¢ç¬¦,延æ¶100ms,继ç»åä¸ä¸é³ç¬¦
else {m=music_tab[i++], n=music_tab[i++];} //åé¢çå¸¸æ° å èæ常æ°
TR0=1; //å¼å®æ¶å¨1
while(n!=0) Beep=~Beep,delay(m); //çå¾ èæå®æ, éè¿P1å£è¾åºé³é¢(å¯å¤å£°éå¦!)
TR0=0; //å ³å®æ¶å¨1
}
}
ä½ åèè¿ä¸ªå§
#include <INTRINS.H>
//æ¬ä¾éç¨89C52, æ¶æ¯ä¸º11.0592MHZ
//å ³äºå¦ä½ç¼å¶é³ä¹ä»£ç , å ¶å®ååç®å,åä½å¯ä»¥ç以ä¸ä»£ç .
//é¢ç常æ°å³é³ä¹æ¯è¯ä¸çé³è°,èèæ常æ°å³é³ä¹æ¯è¯ä¸çå¤å°æ;
//æ以æ¿åºè°±å, è¯æ¢ç¼å§!
sbit Beep = P1^5 ;
unsigned char n=0; //n为èæ常æ°åé
unsigned char code music_tab[] ={
0x18, 0x30, 0x1C , 0x10, //æ ¼å¼ä¸º: é¢ç常æ°, èæ常æ°, é¢ç常æ°, èæ常æ°,
0x20, 0x40, 0x1C , 0x10,
0x18, 0x10, 0x20 , 0x10,
0x1C, 0x10, 0x18 , 0x40,
0x1C, 0x20, 0x20 , 0x20,
0x1C, 0x20, 0x18 , 0x20,
0x20, 0x80, 0xFF , 0x20,
0x30, 0x1C, 0x10 , 0x18,
0x20, 0x15, 0x20 , 0x1C,
0x20, 0x20, 0x20 , 0x26,
0x40, 0x20, 0x20 , 0x2B,
0x20, 0x26, 0x20 , 0x20,
0x20, 0x30, 0x80 , 0xFF,
0x20, 0x20, 0x1C , 0x10,
0x18, 0x10, 0x20 , 0x20,
0x26, 0x20, 0x2B , 0x20,
0x30, 0x20, 0x2B , 0x40,
0x20, 0x20, 0x1C , 0x10,
0x18, 0x10, 0x20 , 0x20,
0x26, 0x20, 0x2B , 0x20,
0x30, 0x20, 0x2B , 0x40,
0x20, 0x30, 0x1C , 0x10,
0x18, 0x20, 0x15 , 0x20,
0x1C, 0x20, 0x20 , 0x20,
0x26, 0x40, 0x20 , 0x20,
0x2B, 0x20, 0x26 , 0x20,
0x20, 0x20, 0x30 , 0x80,
0x20, 0x30, 0x1C , 0x10,
0x20, 0x10, 0x1C , 0x10,
0x20, 0x20, 0x26 , 0x20,
0x2B, 0x20, 0x30 , 0x20,
0x2B, 0x40, 0x20 , 0x15,
0x1F, 0x05, 0x20 , 0x10,
0x1C, 0x10, 0x20 , 0x20,
0x26, 0x20, 0x2B , 0x20,
0x30, 0x20, 0x2B , 0x40,
0x20, 0x30, 0x1C , 0x10,
0x18, 0x20, 0x15 , 0x20,
0x1C, 0x20, 0x20 , 0x20,
0x26, 0x40, 0x20 , 0x20,
0x2B, 0x20, 0x26 , 0x20,
0x20, 0x20, 0x30 , 0x30,
0x20, 0x30, 0x1C , 0x10,
0x18, 0x40, 0x1C , 0x20,
0x20, 0x20, 0x26 , 0x40,
0x13, 0x60, 0x18 , 0x20,
0x15, 0x40, 0x13 , 0x40,
0x18, 0x80, 0x00
};
void int0() interrupt 1 //éç¨ä¸æ0 æ§å¶èæ
{ TH0=0xd8;
TL0=0xef;
n--;
}
void delay (unsigned char m) //æ§å¶é¢ç延æ¶
{
unsigned i=3*m;
while(--i);
}
void delayms(unsigned char a) //豪ç§å»¶æ¶åç¨åº
{
while(--a); //éç¨while(--a) ä¸è¦éç¨while(a--); åä½å¯ç¼è¯ä¸ä¸ççæ±ç¼ç»æå°±ç¥éäº!
}
void main()
{ unsigned char p,m; //m为é¢ç常æ°åé
unsigned char i=0;
TMOD&=0x0f;
TMOD|=0x01;
TH0=0xd8;TL0=0xef;
IE=0x82;
play:
while(1)
{
a: p=music_tab[i];
if(p==0x00) { i=0, delayms(1000); goto play;} //å¦æ碰å°ç»æ符,延æ¶1ç§,åå°å¼å§åæ¥ä¸é
else if(p==0xff) { i=i+1;delayms(100),TR0=0; goto a;} //è¥ç¢°å°ä¼æ¢ç¬¦,延æ¶100ms,继ç»åä¸ä¸é³ç¬¦
else {m=music_tab[i++], n=music_tab[i++];} //åé¢çå¸¸æ° å èæ常æ°
TR0=1; //å¼å®æ¶å¨1
while(n!=0) Beep=~Beep,delay(m); //çå¾ èæå®æ, éè¿P1å£è¾åºé³é¢(å¯å¤å£°éå¦!)
TR0=0; //å ³å®æ¶å¨1
}
}
ä½ åèè¿ä¸ªå§
温馨提示:答案为网友推荐,仅供参考