//Clock: 8.0MHz 内蔵発振器使用 //Devvice Flags: //_CP_OFF _CCP1_RB3 _DEBUG_OFF _WRT_ENABLE_OFF //_CPD_OFF _LVP_OFF _BODEN_OFF _MCLR_ON _PWRTE_ON //_WDT_OFF _INTRC_IO _IESO_ON__CFG2 _FCMEN_ON__CFG2 void main() { //使用変数の定義 unsigned int temp; unsigned int flag=0,flag2=0,flag3=0; unsigned float data; //内臓クロック8MHzに設定 OSCCON.IRCF2=1; OSCCON.IRCF1=1; OSCCON.IRCF0=1; //A/D変換clock設定 ADCON1.ADCS2=1; ADCON0.ADCS1=0; ADCON0.ADCS0=1; ANSEL = 0b00001000; //RA3のみアナログ使用 PORTA = 0b00000000; //PORTAを初期化 TRISA = 0b00001100; //RA3,RA2は入力に設定、他は出力 PORTB = 0b00000000; //PORTBを初期化 TRISB = 0b00000000; //ポートBは全出力に設定 do { if(PORTA.F2==0) { PORTB.F3 = 1; Delay_ms(100); flag=1; } }while(flag==0); do { //アナログデータの取得 10bit(0~1023) temp = ADC_Read(3); //RA3(AN3)アナログ入力 data=(temp*5.0)/1024; if(data>1.4) { PORTA.F7 = 0; PORTA.F6 = 0; PORTB.F3 = 0; flag2=1; } else if(data>1.0) { PORTA.F7 = 1; PORTA.F6 = 1; } else { PORTA.F7 = 1; PORTA.F6 = 0; Delay_ms(30); PORTA.F7 = 0; PORTA.F6 = 0; Delay_ms(30); } }while(flag2==0); do { //アナログデータの取得 10bit(0~1023) temp = ADC_Read(3); //RA3(AN3)アナログ入力 data=(temp*5.0)/1024; if(data>=1.45) { PORTA.F7 = 0; PORTA.F6 = 1; Delay_ms(20); PORTA.F7 = 0; PORTA.F6 = 0; Delay_ms(40); } else if(data<1.43) { PORTA.F7 = 1; PORTA.F6 = 0; Delay_ms(20); PORTA.F7 = 0; PORTA.F6 = 0; Delay_ms(40); } else { PORTA.F7 = 0; PORTA.F6 = 0; flag3=1; } }while(flag3==0); } |