ビットに対処するために、このコードを理解しようとしています:
/* GPIO bits */
static bit GP5 @ (unsigned)&GPIO*8+5;
static bit GP4 @ (unsigned)&GPIO*8+4;
static bit GP3 @ (unsigned)&GPIO*8+3;
static bit GP2 @ (unsigned)&GPIO*8+2;
static bit GP1 @ (unsigned)&GPIO*8+1;
static bit GP0 @ (unsigned)&GPIO*8+0;
GPIO は次のように定義されます。
static volatile unsigned char GPIO @ 0x06;
GPIO アドレスが 8 倍されてからビット数が加算されるのはなぜですか? このマクロの結果とビットのアドレス指定方法を教えてください。
上記のコードは、PIC マイクロコントローラー用の XC8 コンパイラー用です。Atmel は、マクロIOPORT_CREATE_PINを使用するときに同じものを使用します。このマクロは次のように定義されています。
#define IOPORT_CREATE_PIN(port, pin) ((IOPORT_##port)*8 + (pin))