Was ist hier falsch

Gast #24839
Lesenswert?

HAllo,
ich habe einen Assemblercode geschrieben der im Anhang ist! Er soll wenn 
die PD0 gedrückt ist die led am PB5 ausschalten!
Dieser macht es dann auch machnmal wenn ich drücken aber irgenwann hängt 
er sich auf! Manchmal erst nach dem vierten mal dann schon ganz am 
Anfang! DAnn wird die LED nur nochmal kutz heller!
Ich benutze das STK200 mit den Leuchtdioden und Taster die da drauf 
sind!
Peter
Angehängte Dateien:
Gast #24841
Lesenswert?

In solchen Fällen sollte man mal auf dem Papier durchgehen, was der 
Prozessor so macht:

:loop3: PortB auf Ausgang, da ist alles OK.
:Dann wird an loop so lange gewartet, bis PIND(0) high wird (sbis = 
Sprung, wenn Bit =1). Auch OK.
:loop2: solange der Portpin (D:0) 1 ist, springt er zu loop3 = 
Hauptschleife.
Und da liegt er begraben: Solange der Kontakt prellt, scheint das zu 
funktionieren. Denn wenn in loop2 die Bedingung PIND(0) = 0 erreicht 
wird, springt er einen Befehl weiter - und das ist die Endlosschleife am 
Ende = er tut nix mehr.

loop:  sbis PIND,0
       rjmp loop
       cbi PORTB,3
loop2: sbic PIND,0
       rjmp loop2
       rjmp loop3

So sollte es funktionieren. Den Endlosloop am Ende braucht man in diesem 
speziellen Fall nicht.

Übrigens: der "." ist zwischen "," und "-" rechts unten auf der Tastatur 
- Hier fliegen einem ja die Ohren weg, bei diesen vielen 
Ausrufezeichen... g

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren