这类型的东西多了去咯,只是大家听腻了世上只有妈妈好,两只老虎什么的,可以试试这个。有张雨生的大海,林志炫的单身情歌,只有高潮部分哈。研究曲谱部分时,看到
9,3,x之类的是独家弄的休止符哦,第29个音调0x00也是为了休止符加进去的。
#include #define uchar unsigned char #define uint unsigned int sbit beep=P1^3; sbit music=P1^6; sbit music1=P1^7; uchar timer0h,timer0l,time,key,flag,chang,chang2; uchar code dahai[]={ 3,2,2,5,2,2,6,2,2,6,2,4,6,2,2,6,2,4,1,3,2,6,2,2, 5,2,2,5,2,4,6,2,2,5,2,4,3,2,2,2,2,2,1,2,2,1,2,4,1,2,2,1,2,4,2,2,4,3,2,12, 3,2,2,2,2,2,1,2,2,1,2,4,1,2,2,1,2,4,1,3,2,6,2,2,5,2,2,5,2,4,6,2,2,5,2,4, 3,2,2,5,2,2,6,2,6,1,3,2,1,3,4,6,2,2,5,2,2,5,2,12,3,2,2,5,2,2,6,2,2,6,2, 4,6,2,2,6,2,4,1,3,2,6,2,2,5,2,2,5,2,4,6,2,2,5,2,4,3,2,2,2,2,2, 1,2,2,1,2,4,1,2,2,1,2,4,5,2,4,3,2,12,3,2,2,2,2,2,1,2,2,1,2,4,1,2,2,1,2,4, 2,2,2,3,2,2,5,2,2,5,2,4,3,2,2,5,2,4,3,2,2,5,2,2,6,2,16,9,3,4,9,3,2,6,1,2,3,2,2,2,2,4,1,2,2,1,2,12,0,0,0 }; uchar code dsqg[]={3,2,2,5,2,2,7,2,2,7,2,2,1,3,2,1,3,2,1,3,2,1,3,2,7,2,2,6,2,2,7,2,2,7,2,2,7,2,2,7,2,2,6,2,2,5,2, 2,6,2,4,6,2,2,5,2,2,3,2,2,5,2,2,5,2,2,6,2,4, 9,3,2,6,2,2,7,2,2,1,3,2,1,3,2,1,3,2,1,3,2,7, 2,2,6,2,2,7,2,2,7,2,2,7,2,1,7,2,2,6,2,3,5,2, 1,6,2,4,6,2,2,5,2,2,6,2,2,1,3,2,6,2,6,6,2,6, 2,3,2,2,3,2,2,3,2,2,3,2,1,3,2,6,2,2,6,2,6,6, 2,4,2,3,2,2,3,2,2,3,2,3,3,2,2,3,2,6,2,2,6,2, 6,9,3,2,6,2,2,7,2,2,1,3,2,1,3,2,1,3,2,1,3,2, 7,2,2,6,2,2,7,2,2,7,2,2,7,2,2,7,2,2,6,2,2,5, 2,2,6,2,4,6,2,2,5,2,2,3,2,3,5,2,1,5,2,2,6,2, 4,0,0,0}; uchar code TH_0[]={ 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,0x00, } ; uchar code TL_0[]={ 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,0x00, }; void delay(uchar t) { uchar t1; unsigned long t2; for(t1=0;t1 for(t2=0;t2<3000;t2++) { ; } } } void song() { TH0=timer0h; TL0=timer0l; TR0=1; delay(time); TR0=0; } void delayms(uint x) { uint i,j; for(i=x;i>0;i--) for(j=110;j>0;j--); } void main() { uchar k,i; TMOD=1; EA=1; ET0=1; while(1) { if(music&&music1) { flag=0;} if(!music) { flag=1;chang=1; i=0; while(1) { if(!chang) { beep=1; break; } k=dahai[i]+7*dahai[i+1]-1; timer0h=TH_0[k]; timer0l=TL_0[k]; time=dahai[i+2]; i+=3; song(); if((dahai[i]==0)&&(dahai[i+1]==0)) chang=0; } } if(!music1) { flag=1; chang2=1; i=0; while(1) { if(!chang2) { beep=1; break; } k=dsqg[i]+7*dsqg[i+1]-1; timer0h=TH_0[k]; timer0l=TL_0[k]; time=dsqg[i+2]; i+=3; song(); if((dsqg[i]==0)&&(dsqg[i+1]==0)) chang2=0; } } } } void time0() interrupt 1 { if(flag==0) { beep=!beep; TH0=TH_0[key]; TL0=TL_0[key]; } else { beep=!beep; TH0=timer0h; TL0=timer0l; } } 因篇幅问题不能全部显示,请点此查看更多更全内容