Hallo Michael,
rein codemäßig bringen beide Varianten keinen Unterschied.
Aus
UCSRB = _BV(RXCIE) | _BV(TXCIE) | _BV(RXEN) | _BV(TXEN);
wird
ldi r24,lo8(-40)
out 42-0x20,r24
und aus der (1<<x) Variante genauso. Das heißt beide Konstantenausdrücke werden vom Compiler aufgelöst und dementsprechend richtig ausgerechnet übersetzt.
Auch beim Zugriff auf Ports macht es keinen Unterschied welche Variante benutzt wird.
Sowohl PORTB |= _BV(PB2); als auch PORTB |= 1<<PB2;
wird zu: sbi 56-0x20,2
Viele Grüße
Jörg
Lesezeichen