// /************************************************************** melody Copyrights(C)2003 air variable **************************************************************/ /* staff is 237 score */ #include #pragma CLOCK_FREQ 4000000 // tone Frequency set (as apend of soft delay 4) #define CL tone= 19; #define C$L tone= 33; #define DL tone= 45; #define D$L tone= 57; #define EL tone= 68; #define FL tone= 79; #define F$L tone= 89; #define GL tone= 99; #define G$L tone=108; #define AL tone=116; #define A$L tone=124; #define BL tone=131; #define C tone=139; #define C$ tone=145; #define D tone=152; #define D$ tone=158; #define E tone=163; #define F tone=169; #define F$ tone=174; #define G tone=178; #define G$ tone=183; #define A tone=187; #define A$ tone=191; #define B tone=195; #define CH tone=198; #define C$H tone=202; #define DH tone=205; #define D$H tone=208; #define EH tone=211; #define FH tone=213; #define F$H tone=216; #define GH tone=218; #define G$H tone=220; #define AH tone=222; #define A$H tone=224; #define BH tone=226; #define R tone=0; //Length #define L1 L2 L2 #define L2 L4 L4 #define L4 wtime(200); #define L6 wtime(150); #define L8 wtime(100); #define L12 wtime(75); #define L16 wtime(50); #define L20 wtime(40); #define L24 wtime(33); #define L32 wtime(25); #define L48 wtime(18); #define L64 wtime(12); #define L wtime(6); //SOUND OUTPUT PORT is #define soundoutput 0x04 //gpioO3 char count =8; //INTRC GPIO ,WTIMER EN,PWRUPTIMER DIS,MCLR INT,BOD DIS __CONFIG(0x3104); char tone; char tempocont = 176;//TEMPO CONT(value 176 is tempo 120) #pragma interrupt_level 1 //Timer Int process/ void interrupt toneset( void ) { TMR0 = tone; if (tone != 0) GPIO ^= soundoutput;//alternate port T0IF =0; } //tempo control wtime(char t0) { int i,t1; for ( i=0 ; i != t0 ;i++) { t1 = tempocont; while ( --t1 ); } } main(){ //Initialization CMCON = 7; ANSEL = 0b00000000; TRISIO = 0b11111111; GPIO = 0; TMR0 =0x00 ; GIE = 1; PEIE = 1; tone =0x00; OPTION = 0b10000010; // prescale 8 T0IE = 1; wtime(100); TRISIO = ~soundoutput; GPIO = 0; while (1){ //SONG DATA tempocont = 176; A$L L16 R L16 A$L L16 R L16 G$L L16 GL L16 FL L12 R L32 A$L L16 R L16 A$L L16 R L16 G$L L16 GL L16 FL L12 R L32 GL L16 R L16 GL L16 R L16 D$L L16 DL L16 CL L12 R L32 D$L L16 R L16 DL L16 R L16 CL L8 R L8 //--- C L8 D L8 D$ L16 D L16 C L8 D$ L8 F L8 G L8 F L8 D$ L8 G L8 A$ L8 G$ L16 A$ L16 G L8 F L8 G L8 R L8 // C L8 D L8 D$ L16 D L16 C L8 D$ L8 F L8 G L8 F L8 CH L12 R L32 CH L12 R L32 A$ L8 G L16 A$ L16 G L12 R L32 G L12 R L32 CH L8 R L8 // CH L12 R L32 C L12 R L32 CH L12 R L32 C L12 R L32 CH L12 R L32 C L12 R L32 CH L12 R L32 C L12 R L32 R L8 CH L8 A$ L12 R L32 A$ L12 R L32 G L8 A$ L8 CH L8 R L8 // CH L12 R L32 C L12 R L32 CH L12 R L32 C L12 R L32 CH L12 R L32 C L12 R L32 CH L12 R L32 C L12 R L32 R L8 CH L8 A$ L12 R L32 A$ L12 R L32 G L8 F L8 G L8 R L8 //--- A$ L8 R L8 A$ L8 R L8 A$ L8 R L8 A$ L8 R L8 A$ L16 R L16 A$ L16 R L16 G$ L16 G L16 F L12 R L32 A$ L16 R L16 A$ L16 R L16 G$ L16 G L16 F L12 R L32 D$ L8 F L8 G L16 R L16 G$ L16 G L16 F L8 D$ L8 A$ L8 R L8 // A$ L16 R L16 A$ L16 R L16 G$ L16 G L16 F L12 R L32 A$ L16 R L16 A$ L16 R L16 G$ L16 G L16 F L12 R L32 G L16 R L16 G L16 R L16 D$ L16 D L16 C L12 R L32 D$ L16 R L16 D L16 R L16 C L8 R L8 /*--Frequency test sound tempocont = 176; CL L16 C$L L16 DL L16 D$L L16 EL L16 FL L16 F$L L16 GL L16 G$L L16 AL L16 A$L L16 BL L16 C L16 C$ L16 D L16 D$ L16 E L16 F L16 F$ L16 G L16 G$ L16 A L16 A$ L16 B L16 CH L16 C$H L16 DH L16 D$H L16 EH L16 FH L16 F$H L16 GH L16 G$H L16 AH L16 A$H L16 BH L16 R L16 R L4 CL L2 C L2 CH L2 R L4 BL L2 B L2 BH L2 */ //stop R L4 } }