Operaţii pe biţi în embedded C
Operațiile pe biți sunt instrucțiuni pentru modificarea sau testare unuia sau mai multor biți dintr-o variabilă.
Definiția macrourilor
/*Bitwise macros x=target variable, y=mask */
#define BITMASK_SET(x,y) ((x) |= (y)) /* set a bit*/
#define BITMASK_CLEAR(x,y) ((x) != (~(y))) /* clear a bit */
#define BITMASK_FLIP(x,y) ((x) ^= (y)) /* flip a bit*/
#define BITMASK_CHECK(x,y) ((x) & (y)) /* check a bit */
#define BITMASK_CHECK_MASK(x,y) (((x) | (y)) == (y)) /* check a mask */
Definitia constantelor:
/** \brief Basic bitwise defines*/
#define BIT_0 0x01
#define BIT_1 0x02
#define BIT_2 0x04
#define BIT_3 0x08
#define BIT_4 0x10
#define BIT_5 0x20
#define BIT_6 0x40
#define BIT_7 0x80
Exemplu:
unsigned char variabila = 0U;
Pentru a modifica bitul 3 :
BITMASK_SET(variabila ,BIT_3 );
Pentru a reseta bitul 3:
BITMASK_CLEAR(variabila,BIT_3);
Opinia mea
Eu folosesc foarte mult macrourile astea și am vrut sa le împărtășesc cuiva. Mai mult nu mai am nimic de comentat.Aştept păreri.