Цитата(aaarrr @ Apr 20 2014, 01:42)

Оно не лучше, оно для разных случаев.
"&=" или "|=" вместо "=" - типичная ошибка при работе с write-only регистрами.
Но как раз в случае STM так делать нельзя, по причине наличия такого примечания
для незадействованных битов в регистрах: Reserved, must be kept at reset value.
Так что только "&=" и "|=".
нет оно именно лучше.
если в регистре несколько битов - флагов, то
&= |=
срабатывая в 3 такта
забрать значение, изменить, записать обратно
может затереть возникший за эти три такта новый флаг, не говоря уже о чтение битов, которые предназначены только для записи.
Поэтому если в регистре есть биты которые должны оставаться всегда в ресет значениях, значит это должно быть учтено при
REGISTR = SBROS, в величине SBROS, но не как не означает что надо делать &=, |=....
REGISTR = (DEFAULT_VAL & (~INTERRUPT)); - правильно
REGISTR &= (~INTERRUPT) ==== REGISTR = REGISTR & (~INTERRUPT); - не правильно!