どうしたら変数をOUTPUT_HIGH()のような関数に渡すことができますか?

OUTPUT_HIGHのような組込み関数の引数であるpinはコンパイル時にポート及びビットが確定していなければなりません。

アプリケーションでコンパイル時に異なった幾つかのピンのどれを使うか決定できない場合は以下のようにします。:

	switch(pin_to_use) {
		case PIN_B3 : output_high(PIN_B3); break;
		case PIN_B4 : output_high(PIN_B4); break;
		case PIN_B5 : output_high(PIN_B5); break;
		case PIN_A1 : output_high(PIN_A1); break;
	}

そのポートの任意ビットを使う場合は:

	#byte portb = 6
	#byte portb_tris = 0x86 // **
	portb_tris &= ~(1<

任意ポートの任意ビットを使う場合は:

	*(pin_to_use/8|0x80) &= ~(1<<(pin_to_use&7)); // **

	*(pin_to_use/8) |= (1<<(pin_to_use&7));

この場合は、pin_to_useで使う全てのピン(PIN_A0...)を上記のcase文で定義する 必要があります。

上記のコードで**行は、ピンの入出力方向を変更する場合のみ必要となります。(TRIS)