atmel 89c2051 コントローラーをプログラミングしています。たとえば、個々のレジスタビットのステータスに基づいて条件を作成したい:
ポート 1 のビット 0 が 0 のときに (何かを) 行う
while P1_0 を使用してみましたが、コンパイラは宣言されていない識別子エラーを返します。これを行うにはどうすればよいですか?ありがとう
ポート変数をマスクしてから、単純な true/false テストを行います。例えば:
while (PIND & (1<<PD1))
{
// Do stuff.
}
上記のコードは新しい「マスク」変数を作成し、その変数を(実際の変数は、または)1
の位置にシフトします。その「マスク」は、読み取られたピンで編集されます。テストしている位置のビット以外はすべてになります(結果がになるには両方のビットが必要なため)。結果は、またはブール値テストで評価されるより大きい数値です。PD1
0b00000010
0x02
AND
0
1
1
0
0
true