Der Code wird nur einmal ausgeführt und hängt dann am Ende in der while-Schleife.

if (sw1 || sw2 && 0x01){

prüft ob sw1 und sw2 einen Wert != 0 haben. Das && 0x01 bedeutet ein unnötiges && true Deshalb kann man auch schreiben:

if (sw1 || sw2){

was eben nur auf einen Wert != 0 prüft.

Gurß

mic