a=100;
while(1){;}
}
六:五的方法还是烦琐,可以用粘贴符号的形式来简化它.
#include<pic.h>
typedef struct {
unsigned b0:1, b1:1, b2:1, b3:1, b4:1, b5:1, b6:1, b7:1;
} bits;
#define _paste(a,b) a##b
#define bitof(var,num) (((bits *)&(var))->_paste(b,num))
char myvar;
char a,b;
void main(){
a=bitof(myvar,0);
b=bitof(myvar,1);
if(bitof(myvar,7))
a=255;
else
a=100;
while(1){;}
}
有必要说说#define _paste(a,b) a##b 的意思:
此语句是粘贴符号的意思,表示把b 符号粘贴到a 符号之后.
例子中是
a=bitof(myvar,0);--->(((bits *)&(myvar))->_paste(b,0))--->(((bits *)&(var))->b0)可以看出来,_paste(b,0)的作用是把0 粘贴到了b 后面,成了b0 符号.
总结:C语言的优势是能直接对低层硬件操作,代码可以非常非常接近汇编,上面几个例子的位操作代码是100%的达到汇编的程度的.另一个优势是可读性高,代码灵活.上面的几个位操作方法任由你选,你不必担心会产生多余的代码量出来.
上一页 [1] [2]
本文关键字:程序 PIC单片机,单片机-工控设备 - PIC单片机