// ボタン打ち用サーボ ser_1ch.c 2013/3/17 // RXの1chを入力し1.7mSEC幅以上でoutを”1”にする // PIC12F683 // + | |- // out | | //     | | // IN | | // IN 端子10kΩでプルダウン #include<12f683.h> #fuses INTRC_IO,NOWDT,PUT,NOPROTECT,NOMCLR //ウオッチドックタイマ無し、パワーアップタイマ使用 //プロテクト無し、MCLRなし #use delay(CLOCK=8000000) //8MHz駆動 #byte GP=5 #bit sig_out=GP.5 #bit INPUT_3=GP.3 #define ON 1 #define OFF 0 #define HI 1 #define LOW 0 int pulse; //メインルーチン void main() { set_tris_a(0x1f); /* GP 5 4 3 2 1 0 AD 3 2 1 0 io 0 1 1 1 1 1 */ setup_oscillator(OSC_8MHz); sig_out=OFF; while(TRUE){ do{ pulse=0; }while(INPUT_3==LOW); do{ delay_us(10); pulse++; }while(INPUT_3==HI); if(pulse >= 170){sig_out=ON;} else{sig_out=OFF;} } }