Gast
#1537335
Hallo Zusammen Ich beschäftige mich seit einigen Tagen mit Assembler und habe Probleme mit einer Programmschleife, die ich in einem Buch gefunden habe. Es soll ein LED durch die positive Flanke vom Taster ein- und ausgeschaltet werden. Bei einer positiven Flanke am Port D.2 wird der externe Interrupt 0 (EXT_0) ausgelöst und dadurch eine Verzögerungszeit von 50 µs (50 µs = 185 Takte / 8 Befehle = 23) gestartet um den Taster zu entprellen. In der Hilfe (SiSY AVR) wird mit dem Befehl cpi (Compare) ein fixer Wert mit dem Inhalt eines Register auf true oder false geprüft um die Schleife zu bearbeiten. false = Schleife verlassen --> verstanden Mein Problem ist, dass ich nicht verstehe wie bzw. wann die Programmschleife in diesem Fall beendet wird. EXT_0: push r16 ldi r16, 23 ; 23 Befehle debounce: in r17, PIND andi r17, 0b00000100 cpse r18, r17 ; Springe wenn ungleich ldi r16, 23 mov r18, r17 dec r16 brne debounce ......... Vielen Dank für eure Unterstützung! mfg, dom