IF ...しかし、私はバイナリに苦労しているようだ... は、私は次の行により、実際の横に再び質問して申し訳ありませんが条件バイナリ引数で
MGC_SSPBUF_REG = (GESTIC_I2C_ADDR << 1) | 1; // write Address to MGC3130
をつまずいた、その `tのは、なぜ、知っています私はそれを保存するために左にアドレスをシフトするだろう、私はそのOR操作の周りに私の頭を得ることはできません。
「1」とORしたアドレスを指定すると、常に1111 1111が返されます。
私は次の行を偶然見つけ、別の会社が を書かれたコードを確認しながら、私はCでマイクロチップPIC18F14K50をプログラミングしています:
if(MGC_SSPCON2_REG & 0x1F) { // MSSP not idle
...
}
今、MGC_SSPCON2_REGが
#define MGC_SSPCON2_REG SSPCON2
を次のように実装されています
ここで、SSPCONは8ビットMSSP制御レジスタです(I2C MODEの場合)。
私が理解していないのは、このif-conditionの仕組みです。 8ビット2進数のすべてのビットが1に設定されている場合は正しいですか? 私が理解する限り、引数は8ビットレジスタと2進数の0001 1111(0x1F)のビット単位のAND演算です。
質問を理解するのに十分なコードを用意していただきたいと思います。私は、登録がどのように機能するかについて多くの詳細を知りたいとは思っていませんでした。
はあなたの助けのために事前にありがとうございます:)
ありがとうございました:) – user3554329