Ja, den gibt es:

setzten eines Bits geht so:

PORTD |= ( 1 << PORTD5);

und löschen so:

PORTD &= ~(1 << PORTD5);

Zum Vergleich:

if( i & 0x01 ) macht eigentlich folgendes: if( (i & 0x01) != 0)
i & 0x01 ist hierbei ein bitweises UND.
Mit der if-Anweisung prüfst du quasi, ob das Bit mit dem Wert 0x01 gesetzt ist.

if( i == 1) prüft, ob i den Wert 1 hat.

if ( i = 1) ist nicht das, was du haben willst und vergleicht NICHT i mit 1.


Viel Erfolg und frohes Fest,
Thomas