/* * Cdsの抵抗変化を利用してA/D変換値によりサウンド変化を楽しむプログラム * * PIC16F88 クロック:内蔵8MHz * * LM35D 温度センサ アナログ入力:RA1 * 基準電圧はRA3 * プッシュスイッチ: RA2 * RB7 SP, RB4 LED * * 電源:4.5V * * Devvice Flags: * _CP_OFF _CCP1_RB3 _DEBUG_OFF _WRT_ENABLE_OFF * _CPD_OFF _LVP_OFF _BODEN_OFF _MCLR_OFF _PWRTE_ON * _WDT_OFF _INTRC_IO _IESO_ON__CFG2 _FCMEN_ON__CFG2 *PICプログラマで書き込み時にCFG2のFCMENとIESOをDESABLEにすること * MikroC v7.0.0.3 */ //********************************************************************** //使用変数の定義 int port; unsigned int n; unsigned int m; void main() { //マイコンの初期化 PORTA = 0b00000000; //PORTAの中身をきれいにする PORTB = 0b00000000; //PORTBの中身をきれいにする OSCCON = 0b01110000; //内臓クロック8MHzに設定 //A/D変換clock設定 0.125us*16倍=2.0us at 8MHz > 1.6us ADCON1.ADCS2=1; ADCON0.ADCS1=0; ADCON0.ADCS0=1; ADCON1.VCFG1 = 1;//基準電圧入力ポートをRA3に設定 ADCON1.VCFG0 = 0; // A/D利用PORTの設定 // ANALOG=1, DIGITAL=0 // ANSEL = 0b0000010; //RA1のみアナログ使用、他は全てデジタル使用 TRISA = 0b00001110; //RA1,2,3のみ1:入力に設定、他は0:出力 TRISB = 0b00000000; //PORTB 8ヶ全て出力に設定 Delay_ms(500); PORTB.F4 = 1; Delay_ms(200); PORTB.F4 = 0;Delay_ms(200); PORTB.F4 = 1; Delay_ms(200); PORTB.F4 = 0;Delay_ms(200); Delay_ms(500); PORTB.F4 = 1; Delay_ms(200); PORTB.F4 = 0;Delay_ms(200); PORTB.F4 = 1; Delay_ms(200); PORTB.F4 = 0;Delay_ms(200); PORTB.F4 = 1; Delay_ms(200); PORTB.F4 = 0;Delay_ms(200); Sound_Init(&PORTB, 7); do { port = ADC_Read(1); //RA1値をアナログデジタル変換(0~1023) n = port/4 ;//暗くなるとnは小さくなる(高音になる) if (n<1) { n=1; } if (n>120) { continue; } m = 5000/n; Sound_Play(n, m); } while(1); }