PIC单片机 C编程技巧(14)
发布时间:2021-06-06
发布时间:2021-06-06
static volatile bit b7 @ (unsigned)&myvar*8+7; static volatile bit b6 @ (unsigned)&myvar*8+6; static volatile bit b5 @ (unsigned)&myvar*8+5; static volatile bit b4 @ (unsigned)&myvar*8+4; static volatile bit b3 @ (unsigned)&myvar*8+3; static volatile bit b2 @ (unsigned)&myvar*8+2; static volatile bit b1 @ (unsigned)&myvar*8+1; static volatile bit b0 @ (unsigned)&myvar*8+0; 这样即可以对MYVAR操作,也可以对B --B7 这样即可以对MYVAR操作,也可以对B0--B7直接位 MYVAR操作 操作. 操作. 但不好的是,此招在低档片子,如C5X系列上可能会出问题. 不好的是,此招在低档片子, 系列上可能会出问题. 还有就是表达起来复杂,你不觉得输入代码受累么? 还有就是表达起来复杂,你不觉得输入代码受累么?呵呵 三:这也是一些常用手法: 这也是一些常用手法: #define testbit(var, bit) ((var) & (1 <<(bit))) //测试某一位,可以做BOOL运算 //测试某一位,可以做BOOL运算 测试某一位 BOOL #define setbit(var, bit) ((var) |= (1 << (bit))) //把某一位置 //把某一位置 1 #define clrbit(var, bit) ((var) &= ~(1 << (bit))) //把某一位 //把某一位 清0 付上一段代码 可以用MPLAB调试观察 付上一段代码,可以用MPLAB调试观察 MPLAB #i nclude<pic.h> #define testbit(var, bit) ((var) & (1 <<(bit))) #define setbit(var, bit) ((var) |= (1 << (bit))) #define clrbit(var, bit) ((var) &= ~(1 << (bit))) char a,b;