把51hei-5單片機開發(fā)板的 j5跳線插到23端 以便選通蜂鳴器,燒入程序就可以聽到美麗的姑娘的音樂了.
#include <reg52.h> #include <absacc.h> #include <intrins.h> #define uchar unsigned char #define uint unsigned int #define ON 0 #define OFF 1 sbit P20=P2^2; struct music_type { uchar tone; uchar delay; }; uint code tonetab[] = { 63890,64070,64229,64303,64438,64557,64664, 64713,64803,64883,64919,64987,65047,65100, 65124,65169,65209,65228,65261,65291,65318, }; struct music_type code codetab[]= { 1+7,0x02,1+7,0x02,6+7,0x04,5+7,0x04, 6+7,0x01,1+14,0x01,6+7,0x01,5+7,0x01,3+7,0x02,3+7,0x01,1+7,0x01, 2+7,0x02,3+7,0x02,4+7,0x02,5+7,0x02, 3+7,0x04,2+7,0x01,3+7,0x01,2+7,0x01,1+7,0x01, 1+7,0x10, 5+7,0x02,5+7,0x01,5+7,0x01,1+14,0x03,7+7,0x02,6+7,0x02, 1+14,0x01,1+14,0x01,1+14,0x01,6+7,0x01,5+7,0x04, 5+7,0x02,5+7,0x02,1+14,0x02,7+7,0x02,6+7,0x02,7+7,0x02,1+14,0x0c, 5+7,0x02,5+7,0x02,1+14,0x02,7+7,0x02,6+7,0x02,7+7,0x01,7+7,0x01, 1+14,0x01,1+14,0x01,1+14,0x01,6+7,0x01,5+7,0x02,3+7,0x02, 5+7,0x02,5+7,0x01,5+7,0x01,6+7,0x02,6+7,0x01,5+7,0x01,3+7,0x03,1+7,0x01, 2+7,0x01,3+7,0x01,2+7,0x01,1+7,0x01,1+7,0x04, 1+7,0x02,1+7,0x02,6+7,0x04,5+7,0x04, 6+7,0x01,1+14,0x01,6+7,0x01,5+7,0x01,3+7,0x02,3+7,0x01,1+7,0x01, 2+7,0x02,3+7,0x02,4+7,0x02,5+7,0x01,4+7,0x01,3+7,0x03,1+7,0x01, 2+7,0x01,3+7,0x01,2+7,0x01,1+7,0x01,1+7,0x04, 1+7,0x02,1+7,0x02,6+7,0x04,5+7,0x04, 6+7,0x01,1+14,0x01,6+7,0x01,5+7,0x01,3+7,0x02,3+7,0x01,1+7,0x01, 2+7,0x02,3+7,0x02,4+7,0x02,5+7,0x01,4+7,0x01,3+7,0x03,1+7,0x01, 2+7,0x01,3+7,0x01,2+7,0x01,1+7,0x01,1+7,0x04, 5+7,0x02,5+7,0x01,5+7,0x01,1+14,0x03,7+7,0x02,6+7,0x02, 1+14,0x01,1+14,0x01,1+14,0x01,6+7,0x01,5+7,0x04, 5+7,0x02,5+7,0x02,1+14,0x02,7+7,0x02,6+7,0x02,7+7,0x02,1+14,0x0c, 5+7,0x02,5+7,0x02,1+14,0x02,7+7,0x02,6+7,0x02,7+7,0x01,7+7,0x01, 1+14,0x01,1+14,0x01,1+14,0x01,6+7,0x01,5+7,0x02,3+7,0x02, 5+7,0x02,5+7,0x01,5+7,0x01,6+7,0x02,6+7,0x01,5+7,0x01,3+7,0x03,1+7,0x01, 2+7,0x01,3+7,0x01,2+7,0x01,1+7,0x01,1+7,0x04, 1+7,0x02,1+7,0x02,6+7,0x04,5+7,0x04, 6+7,0x01,1+14,0x01,6+7,0x01,5+7,0x01,3+7,0x02,3+7,0x01,1+7,0x01, 2+7,0x02,3+7,0x02,4+7,0x02,5+7,0x01,4+7,0x01,3+7,0x03,1+7,0x01, 2+7,0x01,3+7,0x01,2+7,0x01,1+7,0x01,1+7,0x04, 1+7,0x02,1+7,0x02,6+7,0x04,5+7,0x04, 6+7,0x01,1+14,0x01,6+7,0x01,5+7,0x01,3+7,0x02,3+7,0x01,1+7,0x01, 2+7,0x02,3+7,0x02,4+7,0x02,5+7,0x01,4+7,0x01,3+7,0x03,1+7,0x01, 2+7,0x01,3+7,0x01,2+7,0x01,1+7,0x01,1+7,0x04, 0,0x00, }; volatile uchar tl0,th0; void delay_us(uchar n) { do { _nop_(); _nop_(); _nop_(); _nop_(); }while(--n); } void delay_ms(uint n) { do delay_us(100); while(--n); } void T0_sev() interrupt 1 { TL0=tl0; TH0=th0; P20=!P20; } void main(void) { uchar i,j; TMOD=0x01; IE=0x82; while(1) { i=0; while(codetab[i].delay) { if(!codetab[i].tone) TR0=0; else { th0=TH0=tonetab[codetab[i].tone-1]/256; tl0=TL0=tonetab[codetab[i].tone-1]%256; TR0=1; } for(j=0;j<codetab[i].delay;j++) delay_ms(215); i++; } TR0=0; delay_ms(3000); } }