Hallo,
das Problem liegt hier :

Code:
loop:
   in temp2, PINB         ;Taster betätigt?
   cpi temp2, 0b00001000
   breq rechts <--------------- Falsch

   rjmp loop
Hier wird hingesprungen
Code:
rechts:
   ldi temp, 0b00000001   ;Timer 0 Start
   out TCCR0, temp
   ldi k, 1
   reti <------------- Hopla

Du darfst nich mit einem breq irgendwo hin springen und dann mit ret oder reti zurückspringen.
Das zerlegt Dir den Stack.
Ich würde das Programm nochmal überdenken.