/* *サウンド関数のテスト * PIC 16F628A * 発信器:内臓4MHz * *void Sound_Play(unsigned short period_div_10, unsigned num_of_periods); * Sound_Play(100, 150);は100X10usの波長の音を波長X150の長さで鳴らす * *int rand(void); *Function returns a sequence of pseudo-random numbers between 0 and 32767. Function will always produce the same sequence of numbers unless srand is called to seed the start point. * 電源:乾電池3本(4.5V) * RB4 LED, RB7 SP * Device Flags: _BODEN_OFF _BOREN_OFF _CP_OFF _PWRTE_ON _WDT_OFF *        _LVP_OFF _MCLRE_OFF _INTRC_OSC_NOCLKOUT * 言語 MikroC v7.0.0.3 */ //プロトタイプ宣言 //メインプログラム unsigned int n; unsigned int m; unsigned int p; void main() { PORTA = 0b00000000; PORTB = 0b00000000; TRISA = 0b00000000; TRISB = 0b00000000; Sound_Init(&PORTB, 7); Sound_Play(248,5000/248); //C Delay_ms(30); Sound_Play(216,5000/216); //D Delay_ms(30); Sound_Play(192,5000/192); //E Delay_ms(30); Sound_Play(180,5000/180); //F Delay_ms(30); Sound_Play(158,5000/158); //G Delay_ms(30); Sound_Play(143,5000/143); //A Delay_ms(30); Sound_Play(124,5000/124); //B Delay_ms(30); Sound_Play(117,5000/117); //C Delay_ms(30); for ( p=0; p<16; p++ ) { //効果音8 Rondom note n = 1 + rand(void) / 128; m = 3000 / n; Sound_Play(n, m); Delay_ms(50) ; } Delay_ms(1000); Sound_Play(180,5000/180); //F Delay_ms(30); Sound_Play(158,5000/158); //G Delay_ms(30); Sound_Play(143,5000/143); //A Delay_ms(30); Sound_Play(124,5000/124); //B Delay_ms(30); Sound_Play(117,5000/117); //C Delay_ms(30); PORTB.F4 = 1; Delay_ms(1000); PORTB.F4 = 0;//電源ONの点灯 do{ PORTB.F4 = 1; Delay_ms(500); PORTB.F4 = 0;//効果音1 for (n=4; n<250; n=n+2) { m=250/n; Sound_Play(n, m); Delay_ms(10); } for (n=250; n>4; n=n-2) { m=250/n; Sound_Play(n, m); Delay_ms(10); } PORTB.F4 = 1; Delay_ms(500); PORTB.F4 = 0;//効果音2 for (p = 0; p < 5; p++) { for (n=10; n<50; n=n+2) { m=250/n; Sound_Play(n, m); Delay_ms(2); } for (n= 50; n > 10; n=n-2) { m=250/n; Sound_Play(n, m); Delay_ms(2); } } PORTB.F4 = 1; Delay_ms(500); PORTB.F4 = 0;//効果音3 for (p = 0; p < 5; p++) { for (n=10; n<200; n = n + 10) { m=250/n; Sound_Play(n, m); Delay_ms(2); } for (n= 200; n > 10; n = n - 10) { m=250/n; Sound_Play(n, m); Delay_ms(2); } } PORTB.F4 = 1; Delay_ms(500); PORTB.F4 = 0;//効果音4 for (p = 0; p < 5; p++) { for (n=5; n < 250; n = n + 15) { m=1000/n; Sound_Play(n, m); Delay_ms(5); } } for (n=250; n > 30; n = n - 30) { m=1000/n; Sound_Play(n, m); Delay_ms(5); } PORTB.F4 = 1; Delay_ms(500); PORTB.F4 = 0;//効果音5 for (p = 0; p < 20; p++) { for (n=10; n<200; n = n + 10) { m=50/n; Sound_Play(n, m); Delay_ms(2); } for (n= 200; n > 10; n = n - 10) { m=50/n; Sound_Play(n, m); Delay_ms(2); } } PORTB.F4 = 1; Delay_ms(500); PORTB.F4 = 0;//効果音6 for (p = 0; p < 20; p++) { for (n=10; n<200; n = n + 10) { m=50/n; Sound_Play(n, m); Delay_ms(1); } for (n= 200; n > 10; n = n - 10) { m=50/n; Sound_Play(n, m); Delay_ms(1); } } PORTB.F4 = 1; Delay_ms(500); PORTB.F4 = 0;//効果音7 Rondom note for ( p=0; p<50; p++ ) { n = 1 + rand(void) / 128; m = 3000 / n; Sound_Play(n, m); Delay_ms(50) ; } Sound_Init(&PORTB, 7); PORTB.F4 = 1; Delay_ms(500); PORTB.F4 = 0;//効果音8 Rondom note for ( p=0; p<25; p++ ) { n = 1 + rand(void) / 128; m = 3000 / n; Sound_Play(n, m); Delay_ms(10) ; } PORTB.F4 = 1; Delay_ms(500); PORTB.F4 = 0; } while(1); } //メインプログラム終わり