Hi Tob,
ich habe Dein Programm mal gewaltig zusammengestrichen, um Dir den Strukturfehler zu zeigen:
Code:
.org 0x0000
rjmp main
.org OVF0addr
reti
main:
;....
ldi temp, 0b00000010 ;Timeroverflow Interrupt Ein
out TIMSK, temp
sei
loop:
in temp2, PINB ;Taster betätigt?
;....
breq rechts ; dieser Sprung führt zu einem Problem.... (s.u.)
rjmp loop
rechts:
;...
reti ; ...denn wie soll der PC hier wieder korrekt gesetzt werden?
Siehtst Du, was hier passiert? Aus "loop" kann nach "rechts" gesprungen werden. Am Ende von "rechts" steht "reti". Da aber kein Interrupt vorliegt, liegt auf dem (Hardware-)Stack keine geeignete Rücksprungadresse! Du musst da noch einiges korrigieren, aber jetzt kennst Du erst einmal das Hauptproblem.
Gruß
Fred
Lesezeichen