我试图理解这段代码来解决位:
/* 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))