Routine für den Fall das ein unerwarterter Interrupt eintritt
Du hast die Interrupts garnicht eingeschaltet, damit ist das alles nicht nötig.
ldi R16,Low(RamEnd)
out spl, R16
und was ist mit dem SPH Register? oder hat ser 8535 nur 255 Bytes Ram ?
ldi R17, $E3
out DDRD, R17
sowas zu schreiben ist zwar kürzer, aber nicht unbedingt einfacher zu lesen,
schöner wäre es so:
Code:
ldi R17,(1<<PD7)|(1<<PD6)|(1<<PD5)|(1<<PD1)|(1<<PD0)
out DDRD,R17
naja, so sieht man zumindest sofort, welche Pins Du als Ausgang konfiguriert hast.
Ergibt hier keinen Sinn (gibt es überhaupt Register PIND2, habe mir die .inc nicht angeguckt )
Wogegen hängt Dein Taster, GND oder VCC?
Meistens soll er an GND und die internen Pullups sollen aktiviert werden, das hast Du auch nicht getan.
Damit fragst Du nur den Zustand von den Pullups ab, und nicht den Pinzustand.
Dein Programm läßt sich so schreiben:
Code:
reset:
ldi R17,(1<<PD7)|(1<<PD6)|(1<<PD5)|(1<<PD1)|(1<<PD0)
out DDRD,R17
ldi R17,(1<<PD2)
out PORTD,R17
;oder besser
;sbi PORTD,PD2
;um den Pullup einzuschalten
loop:
sbis PIND,PD2
sbi PORTD,PD6
rjmp loop
So müßte es eigentlich klappen
Gruß Sebastian
Lesezeichen