//将r中第base位至第base+len-1位赋值 value #define SET_BIT(r, base, len, value) / do{ / int i; / int mask = 0; / for(i=0; i<len; ++i) / { / r &= ~(1<<(base+i)); / mask <<= 1; / mask |= 1; / } / r |= (value&mask)<<base; / }while(0) 比如要设置Reg13第12~15位(共4位)为0x0c,则输入: SET_BIT(Reg13, 12, 4, 0x0c);