ich hab dich vollständig verstanden und dennoch wird wenn vorher im flag register vorher eine 122 steht und ich

register |= (1<<0) ;

schreibe, danach im register 0 stehen!

denn GENAU WEIL das setzen des bit es nach der operation löst einfach alles zu 0 wird

ich schreibs mal bitweise auf

10010010 // register =
10010010 | // register |
00000001 | // (1<<0)
=
00000000 // denn das setzen einer 1 löscht das bit, das setzen einer 0 lässt es unverändert

im konkreten beispiel ist TOV0 UND ICF1 gesetzt

TIFR also xx1xxxx1

wenn cih jetzt

xx1xxxx1 |= 00000001

also

xx1xxxx1 |
xx1xxxx1 |
00000001

rechne kommt

TIFR = 00000000

raus, denn wenn x bereits 1 ist im flagregister, löscht es sich durch das ver-odern selbst aus, wenn x aber 0 ist blleibt es eben unbverändert 0