バイトビットオペレーション

2927 ワード

一、シングルチップマシンでバイトビット操作を実現する方法:
1、ANSIC ,    “ -  - ”            ,   0“ ”  ,     0。  i   b0  0,     i=i&0xfe。   1“ ”  ,     1。  i   b0  1,     i=i|0x01。   1“  ”  ,      。  i   b0   ,     i=i^0x01。 

2 、             
  C               --  (BitField),                          。          。         ,             ,         : 
struct     { 

     }; 

       :         :     : 

struct k{ 

unsigned int a:1

unsigned int :2 

unsigned int b:3 

unsigned int :0     //   

}k1; 
  : 
1)            ,        ,          ; 
2)       ,      ,    ,             ; 
3)      ,                    ,   0。 
        , : 
k1.a=1; // k1 b0  1 
k1.b=7; // k1 b3-5  111 
         ,                 ,         ,       、  。

 
二、ビットドメインの応用:
//1、ビットドメイン方式.まずビットドメインを定義し、typedefstruct_bit_struct {   unsigned char bit0 : 1 ;   unsigned char bit1 : 1 ;   unsigned char bit2 : 1 ;   unsigned char bit3 : 1 ;   unsigned char bit4 : 1 ;   unsigned char bit5 : 1 ;   unsigned char bit7 : 1 ;   unsigned char bit6 : 1 ; }bit_field;//もう1つのマクロを使用して、操作するビットを指します.#defineLED            GET_BITFIELD(PORTB).bit0   #define BUTTON      GET_BITFIELD(PINB).bit 7//LED=0、LED=1、LED=0、LED=1など、LED=0、LED=1を直接判断するこの方法は、C 51におけるビット動作と同様である.直接.//2、シフトマクロ方式.主に3つあります.define Set_Bit(val, bitn)    (val |=(1< #define Clr_Bit(val, bitn)    (val&=~(1< #define Get_Bit(val, bitn)    (val&(1