1
私は8051マイクロコントローラプラットフォームでKEILをIDEとして、C言語をプログラミング言語として使用しています。C言語の配列にビット変数をマージする
私は、スイッチ機能で使用するビットの配列を作成しようとしています。
sbit P1;
sbit P2;
sbit P3;
buttons [2:0] = P1 | P2 | P3
switch (buttons[2:0])
{
case 0x1: //First button is pressed
case 0x2: //Second button is pressed
case 0x4: //Third is pressed
default: //Multiple buttons are pressed. Hence invalid
}
ビットを1つのエンティティに結合してスイッチ機能として使用する方法が見つかりませんでした。
誰でも可能な方法でタスクを実行する方法を提案できますか。
スイッチ(P1 << 0 | P2 << 1 | P3 << 2)の何が問題なのですか?私はあなたがビットアドレス可能領域内の連続したバイトレジスタに個人を配置するようにリンカを強制することができたと思うが、その種のものはむしろ乱雑になる。 – doynax
タートはCではありません。 – Olaf
@Olaf:ちなみに、C言語の逸脱と拡張のレベルは、質問がCタグの下で適切に分類されるためには受け入れられますか?この場合、アーキテクチャのビット・アドレス可能なメモリ機能は明らかに言語の拡張ですが、比較的自然なものです。私の考えでは、組み込み関数、 'pragma'構造体や実装定義の振る舞いに依存することとはまったく異なります。 – doynax