CdS の明るさと関係なく、ボリュームの位置に比例してサーボをまわすには、プログラムのmain関数を次のように変更します (または vr-servo.zip内にもあります)。
(変更後)void main(void) { unsigned char vr, j = 0; EnableInterrupts; PeriphInit(); for(;;) // Forever { // run in 50Hz ADCSC1 = 0x1; // ADC conversion start while ((ADCSC1 & 0x80) == 0) // Wait for conversion to complete ; vr = ADCRL; // Make a pluse (0.7ms - 2.1ms) PTAD |= 0x4; // set H Delay_100us(7); // 0.7ms delay Delay_servo(vr); // 0-1.4ms delay (0x5.5us - 255x5.5us) PTAD &= 0xfb; // set L // Flash LED j ++; vr = vr/8; if (j > vr) { // Once for vr/8*20ms // Toggles LED PTAD ^= 0x01; j = 0; } Delay_100us(200); // 20ms delay } }戻る (本を出しました: はじめてのPICアセンブラ入門| センサとデジカメで遊ぶ電子工作入門)
Copyright(c) 2007 光永 法明 non <at mark > ever.sanda.gr.jp