»ùÓÚSTC89C52µ¥Æ¬»úµÄ¼òÒ×µç×ÓÇÙ(¿Î³ÌÉè¼Æ) ÏÂÔØ±¾ÎÄ

XG=Length/10; //Ëã³öÒô·ûÀàÐÍ(0ÆÕͨ1Á¬Òô2¶ÙÒô) FD=Length/100; LDiv=LDiv0/SLen; //Ëã³öÁ¬ÒôÒô·ûÑÝ×àµÄ³¤¶È(¶àÉÙ¸ö10ms) if (FD==1) LDiv=LDiv+LDiv/2; if(XG!=1) if(XG==0) //Ëã³öÆÕͨÒô·ûµÄÑÝ×೤¶È if (SLen<=4) LDiv1=LDiv-LDiv4; else LDiv1=LDiv*SOUND_SPACE; else LDiv1=LDiv/2; //Ëã³ö¶ÙÒôµÄÑÝ×೤¶È else LDiv1=LDiv; if(SL==0) LDiv1=0; LDiv2=LDiv-LDiv1; //Ëã³ö²»·¢ÒôµÄ³¤¶È if (SL!=0) { TR0=1; for(i=LDiv1;i>0;i--) //·¢¹æ¶¨³¤¶ÈµÄÒô { while(TF1==0); TH1 = Sound_Temp_TH1; TL1 = Sound_Temp_TL1; TF1=0; } } if(LDiv2!=0) { TR0=0; beep=1; for(i=LDiv2;i>0;i--) //Òô·û¼äµÄ¼ä¸ô { while(TF1==0); TH1 = Sound_Temp_TH1; TL1 = Sound_Temp_TL1; TF1=0; } } Point+=2; Tone=Sound[Point]; Length=Sound[Point+1]; }

beep = 0;

1

TR0=0;//¹Ø±Õ¶¨Ê±Æ÷ }

//¼üÅ̾ØÕóɨÃè

//·µ»Ø°´ÏµļüµÄÖµ

unsigned char keys_scan(void) { unsigned char Tmp,k=16; P2=0x0F; delay_1ms(2); Tmp=P2 ^ 0x0F; switch(Tmp)//È·¶¨É¨ÃèµÄÊÇÄÄÒ»ÐÐ { case 1: k=0;break; case 2: k=1;break; case 4: k=2;break; case 8: k=3;break; default: return 16; //ÎÞ¼ü°´Ï£¬·µ»Ø } P2=0xF0; delay_1ms(2); Tmp=(P2>>4)^0x0F; switch(Tmp)//È·¶¨É¨ÃèµÄÊÇÄÇÒ»ÁÐ { case 1: k+=0; break; case 2: k+=4; break; case 4: k+=8; break; case 8: k+=12;break; default: return 16; //ÎÞ¼ü°´Ï£¬·µ»Ø } return k; }

void main() //Ö÷³ÌÐò { unsigned char key_NO=0; P1=0xFF; //ÊýÂë¹ÜÏÔʾ¹Ø±Õ //ÉèÖö¨Ê±Æ÷¹¤×÷·½Ê½1£¬ÒÔ¼°Ïà¹Ø¿ªÆô¼Ä´æÆ÷ TMOD |= 0x11; ET0 = 1; ET1 = 0; TR0 = 0; TR1 = 0; EA = 1; //ÉèÖö¨Ê±Æ÷³õÖµ

1

TH0=tone_delay_table[key_NO]/256; TL0=tone_delay_table[key_NO]%6; TH1 = (65535-50000)/256;// ¼ÆËãTL1ӦװÈëµÄ³õÖµ (10msµÄ³õ×°Öµ) TL1 = (65535-50000)%6; while(1) { P2=0xF0; if(P2!=0xF0)//µ±Óа´¼ü°´ÏÂʱ£¬ÐèÒªÏÔʾÊýÂë¹Ü¼°ÉèÖö¨Ê±Æ÷µÄ¿ªÆô { key_NO=keys_scan();//µ÷ÓüüÅÌɨÃè P1=DSY_CODE[key_NO];//ÔÚÊýÂë¹ÜÉÏÏÔʾ°´Ïµļü if(key_NO<15)//°´ÏÂÄǸö¼ü£¬·¢³ö¶ÔÓ¦µÄÒôµ÷ { Sound_Temp_TH0=tone_delay_table[key_NO]/256; Sound_Temp_TL0=tone_delay_table[key_NO]%6; } else if(key_NO==15)//°´ÏÂ×îºóÒ»¸ö¼üʱ£¬Òª²¥·ÅÒôÀÖ { Play(Music, 0, 3, 300); //TR1 = 0;//Òô³¤ÖÐ¶Ï } TR0=1;//¿ªÆô¶¨Ê±Æ÷0£¬Òô·ûÖÐ¶Ï } else//µ±Ã»Óмü°´ÏÂʱ£¬ÊýÂë¹Ü²»ÏÔʾ£¬Ò²ÎÞÉùÒô·¢³ö£»Èç¹ûÊDz¥·ÅÒôÀÖ£¬ÔòÒ»Ö±ÏÔʾ { TR0=0;//¹Ø±Õ¶¨Ê±Æ÷ P1=0xFF;//ÊýÂë¹ÜÏÔʾ¹Ø±Õ } delay_1ms(2);//ÉÔ×öÑÓʱ£¬¿ÉÒÔ±ÜÃâÎóÅÐ¶Ï } }

//Òô·û·¢ÉúµÄÖжÏ

void play_tone() interrupt 1 { TH0=Sound_Temp_TH0; TL0=Sound_Temp_TL0; beep=~beep; }

1