#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit beep=P1^5;
uchar bR0H,bR0L,beat;
code uchar music[]={
2,3,2, 3,3,2, 5,3,2, 1,3,2,
2,3,2, 3,3,2, 5,3,2, 1,3,2,
2,3,2, 3,3,2, 5,3,2, 6,3,2,
2,3,2, 3,3,2, 6,2,2, 1,3,2,
2,3,2, 3,3,2, 5,3,2, 1,3,2,
2,3,2, 3,3,2, 5,3,2, 1,3,2,
2,3,2, 3,3,2, 5,3,2, 6,3,2,
2,3,2, 3,3,2, 6,2,2, 1,3,2,
2,2,2, 3,2,2, 5,2,2, 1,2,2,
2,2,2, 3,2,2, 5,2,2, 1,2,2,
2,2,2, 3,2,2, 5,2,2, 1,2,2,
2,2,2, 3,2,2, 5,1,2, 1,2,2,
2,2,2, 3,2,2, 5,2,2, 1,2,2,
2,2,2, 3,2,2, 5,2,2, 1,2,2,
2,2,2, 3,2,2, 5,2,2, 1,2,2,
2,2,2, 3,2,3,
3,2,2, 5,2,2, 6,2,4, 1,3,2, 2,3,3, 1,3,3, 5,2,2, 4,2,2, 3,2,2, 5,2,2, 7,2,2, 1,3,4,
1,3,2, 7,2,2, 6,2,4, 1,3,3, 7,2,2, 5,2,2, 5,2,5,
3,2,2, 5,2,2, 6,2,4, 1,3,2, 2,3,3, 1,3,2, 5,2,2, 4,2,2, 3,2,2, 5,2,2, 7,2,2, 1,3,5,
1,3,2, 7,2,2, 6,2,4, 1,3,3, 7,2,2, 5,2,2, 5,2,2, 6,2,5,
6,2,2, 7,2,2, 1,3,4, 7,2,2, 6,2,2, 7,2,2, 1,3,4,
7,2,2, 6,2,2, 7,2,2, 1,3,2, 7,2,2, 5,2,2, 6,2,2, 5,2,2, 1,2,2, 1,2,2, 6,2,2, 5,2,2, 1,2,2, 2,2,2, 2,2,2, 3,2,6,
6,2,2, 7,2,2, 1,3,3, 7,2,2, 6,2,2, 7,2,2, 1,3,3,
7,2,2, 6,2,2, 7,2,2, 1,3,2, 2,3,2, 3,3,2, 4,3,3, 1,3,2, 1,3,2, 2,3,2, 3,3,2, 2,3,2, 1,3,2, 1,3,5,*/
3,3,2, 5,3,1, 3,3,1, 2,3,2, 1,3,2, 6,2,2, 1,3,1, 2,3,4,
3,3,2, 5,3,1, 3,3,1, 2,3,2, 1,3,2, 5,2,2, 1,3,1, 1,3,4,
3,3,2, 5,3,1, 3,3,1, 2,3,4,
3,3,2, 5,3,1, 5,3,2, 6,3,2, 5,3,2, 4,3,1, 3,3,5,
3,3,2, 5,3,1, 3,3,1, 2,3,2, 1,3,2, 6,2,2, 1,3,1, 2,3,4,
3,3,2, 5,3,1, 3,3,1, 2,3,2, 1,3,2, 5,2,2, 1,3,1, 1,3,4,
1,3,1, 7,2,1, 6,2,1, 7,2,2, 6,2,2, 6,2,2, 2,3,2, 7,2,2, 6,2,2, 7,2,2, 7,2,2, 1,3,6
};
code uchar FREQH[]={
0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8,
0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,
0xFC,0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,
0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF} ;
//òô·ûÆμÂê±í£¬Ëĸö8¶è7½×£¬¸ß8λ
code uchar FREQL[]={
0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,
0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,
0x8F,0xEE,0x44,0x6B,0xB4,0xF4,0x2D,
0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16};
//òô·ûÆμÂê±í£¬Ëĸö8¶è7½×£¬μí8λ
/***********************************************************************************************************
òô·ûÆμÂê¼ÆËã£o T = 65536 - 1/Fr/2/MC
T£o òaËãμÃμĶ¨ê±Æ÷3õÖμ
Fr: ¸÷òô½×¶Ôó|μÄÆμÂê
MC£oò»¸ö»úÆ÷ÖüÆúËùDèμÄê±¼ä £¬11.0592MHzμľ§Õñ¶Ôó|μÄ»úÆ÷ÖüÆúÎa1.085|ìs£¬Ô¼Îa1
ày£oμíòôDo¶Ôó|μÄÆμÂêÎa262Hz,ÔòT = 65536 - 1/2/1.085/262*(10^6)=63777,¶Ôó|ê®áù½øÖÆêyÎaF9-21£¬·Ö¶ÎD′½øTH0oíTL0
************************************************************************************************************/
void delay(uchar t)
{
uchar t1;
unsigned long t2;
for(t1=0;t1<t;t1++)
{
for(t2=0;t2<3200;t2++);
}
TR0=0;
}
//½úÅÄoˉêy£¬1tÎa1/4ÅÄ
void delay(uchar t);
void play()
{
TH0=bR0H;
TL0=bR0L;
TR0=1;
delay(beat);
}
//2¥·Åoˉêy
void play();
void main()
{
uchar J,K;//JKÂdddd
TMOD=1;
EA=1;
ET0=1;
EX0=1;
//¶¨ê±Æ÷ÅäÖÃ
while(J<=450)//ÇúÆ×êy×éêy£¬ÑY×àíê×Ô¶ˉÖظ′£¬¾YÇúÆ׶ø¶¨
{
J=0; //è¡êy×éμúò»Î»
while(1)
{
K=music[J]+music[J+1]*7-1;//¾-ÔËËãêä3ökÎaòô·ûoíòô¸ßÖ죬ò2¾íêǶ¨Î»freqμÄ7*4¾ØÕóàïμú¼¸¸öμÄDòoÅ
bR0H=FREQH[K];
bR0L=FREQL[K];
beat=music[J+2];//½úÅÄêyÎaêy×éμúèyλ
J=J+3; //í¬j=0
play();
}
}
}
void t0int() interrupt 1
{
TR0=0;
beep=~beep;
TH0=bR0H;
TL0=bR0L;
TR0=1;
}
//¶¨ê±Æ÷ÖD¶Ïoˉêy
|