IO操作常用技巧

     对于做驱动的来说,IO操作,就是家常便饭。如果没有一个良好的技巧,这种针线活可不好做。这里介绍一些常用的技巧函数,也算是一个汇总:

1:BITCSET
#define BITCSET(X, CMASK, SMASK)   

( (X) = ((((unsigned int)(X)) & ~((unsigned int)(CMASK))) | ((unsigned int)(SMASK))) )

//意义:把值X上的CMASK对已的值设置为SMASK的值。一般CMASK的位置和SMASK的位置是一样的,否则很容易引起歧义。

分析: X &~CMASK:得到CMSK位置的位置设置为0。

          | SMASK :把上述结果的SMASK的为一的位置再置为1。

2:BITSCLR
#define BITSCLR(X, SMASK, CMASK)    ( (X) =

((((unsigned int)(X)) | ((unsigned int)(SMASK))) & ~((unsigned int)(CMASK))) )

//意义:把值X上的指定位SMASK清空。一般SMASK和CMASK的位置也是一样的。

3:BITSET

#ifndef BITSET
#define    BITSET(X, MASK)                ( (X) |= (unsigned int)(MASK) )

//意义:把X的指定MASK位标志位1。

 

4:BITCLR

BITCLR
#define    BITCLR(X, MASK)                ( (X) &= ~((unsigned int)(MASK)) )

//意义:把X的指定位置置为0。

 

实际过程中用的最多的还是后面两个,BITSET,BITCLR,前面的只是后面的两种融合,也不建议使用前面的2种,让人理解不是很干脆。后面的两种简单易懂。

你可能感兴趣的:(IO)