ソフトウェアの改造例

戻る (本を出しました: はじめてのPICアセンブラ入門| センサとデジカメで遊ぶ電子工作入門)
Copyright(c) 2007 光永 法明

CdS と関係なくサーボを動かす

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