MicaelKarlsson skrev:Har du testat:
Kod: Markera allt
#define bit_get(p,m) ((p) & (m))
#define bit_set(p,m) ((p) |= (m))
#define bit_clear(p,m) ((p) &= ~(m))
#define bit_flip(p,m) ((p) ^= (m))
Det märks att jag är nybörjare på C. Det tog lite tid att fatta dessa macron, särskilt den översta tills jag fattade att den inte är en "operation" utan ett uttryck.
men
bit_clear(PORTB,1<<PB2); skulle vara ett korrekt användande väl?
I så fall kanske jag kunde köra
istället, så slipper jag 1<< för varje bit.... (om nu bitarna definieras som 0,1,2,3 och inte 1,2,4,8,16...). Nackdelen är förstås att detta macro bara kan nolla en bit åt gången, men det var ju också det jag ville åt. Om detta nu översätts till sbi PORTB,(1<<PB0) så blir det ju grymt bra.