Was mir auffällt ist das du in der ISR schreibst "if (taster == r) ; {". Somit wird switch immer ausgeführt. Und warum prüfst du auf "r"? Du kannst einfach auf "1" oder "!0" prüfen.

MfG Hannes