Warum überschreibt der Zweite das Erste?

MCUCR = ~(1<<ISC01);
löscht ISC01 bit und läßt den rest unverändert...

MCUCR = (1<<ISC00);

interessieren die restlichen Bits nicht, es wird nur ISC00 gesetzt, der Rest wird mit 0 beschrieben.
Solltest Du z.B im MCUCr irgendwas gesetzt haben, wird nach der zweiten Operation alles gelöscht sein, alles klar?
Deswegen hab ich geschrieben , daß die erste Zeile in diesem Zusammenhang unnötig ist.

Gruß Sebastian