почему нельзя занести этот бит в регистр без сдвига, зачем это придумано
UCSRA |= (1<<U2X);
В заголовочных файлах U2X определён как "номер бита U2X в регистре UCSRA", т.е. 1.
Если бы U2X был определён как "битовая маска поля U2X в регистре UCSRA" (т.е. 2), то все бы писали
UCSRA |= U2X;
. В ассемблерном коде avr оба эти варианта превратятся в инструкцию
sbi UCSRA, 1
, устанавливающую бит в регистре по номеру.
Имея номер бита перевести его в битовую маску гораздо легче, чем наоборот, из маски вывести номер бита (который, в общем случае, может быть и не один), я думаю, что отчасти поэтому у программистов работающих с железом есть тенденция определять поля регистров через номера битов.