Table des matières

Bit Manipulation 101

OR

pour mettre un bit a 1

1
2
X | 0 = X
X | 1 = 1

AND

pour mettre un bit a 0

1
2
X & 0 = 0
X & 1 = X

SNIPPETS

1
2
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))

FLAG

1
2
3
4
5
6
7
8
9
10
11
12
13
14
uint8_t FLAGS = 0;
 
#define F_f1 0
#define F_f2 1
#define F_f3 2
#define F_f4 3
 
sbi(FLAGS,f1) //Set FLAG
 
if (FLAGS & _BV(F_f1)) //si flag ON
 
if (!(FLAGS & _BV(F_f2))) //si flag OFF
 
cbi(FLAGS,F_f1) //Clear Flag