PIC單片機將一個byte定義成8個位的操作辦法
可以這樣做:
typedef struct {
unsigned b0:1, b1:1, b2:1, b3:1, b4:1, b5:1, b6:1, b7:1;
} bits; //先用定義一個變量的位
#define Q00 (((bits *)&Q0)->b0) //取myvar 的地址(&myvar)強制轉換成bits 類型的指針
#define Q01 (((bits *)&Q0)->b1)
#define Q02 (((bits *)&Q0)->b2)
#define Q03 (((bits *)&Q0)->b3)
#define Q04 (((bits *)&Q0)->b4)
#define Q05 (((bits *)&Q0)->b5)
#define Q06 (((bits *)&Q0)->b6)
#define Q07 (((bits *)&Q0)->b7)
#define I00 (((bits *)&I0)->b0) //取myvar 的地址(&myvar)強制轉換成bits 類型的指針
#define I01 (((bits *)&I0)->b1)
#define I02 (((bits *)&I0)->b2)
#define I03 (((bits *)&I0)->b3)
#define I04 (((bits *)&I0)->b4)
#define I05 (((bits *)&I0)->b5)
#define I06 (((bits *)&I0)->b6)
#define I07 (((bits *)&I0)->b7)
#define I10 (((bits *)&I1)->b0) //取myvar 的地址(&myvar)強制轉換成bits 類型的指針
#define I11 (((bits *)&I1)->b1)
#define I12 (((bits *)&I1)->b2)
#define I13 (((bits *)&I1)->b3)
#define I14 (((bits *)&I1)->b4)
#define I15 (((bits *)&I1)->b5)
#define I16 (((bits *)&I1)->b6)
#define I17 (((bits *)&I1)->b7)