どうしたら変数をOUTPUT_HIGH()のような関数に渡すことができますか?
OUTPUT_HIGHのような組込み関数の引数であるpinはコンパイル時にポート及びビットが確定していなければなりません。
アプリケーションでコンパイル時に異なった幾つかのピンのどれを使うか決定できない場合は以下のようにします。:
そのポートの任意ビットを使う場合は:
任意ポートの任意ビットを使う場合は:
この場合は、pin_to_useで使う全てのピン(PIN_A0...)を上記のcase文で定義する
必要があります。
上記のコードで**行は、ピンの入出力方向を変更する場合のみ必要となります。(TRIS) 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));