Forum: Mikrocontroller und Digitale Elektronik schleifenproblem


von tommy (Gast)


Angehängte Dateien:

Lesenswert?

hallo!

habe ein problem mit mit meinen schleifen:

setdata0 wird aufgerufen (passt)
!aber danach wird an den anfang des files gesprungen und nicht dorthin
zurück wo der aufruf herkam!

den stackpointer habe ich gesetzt

finde den fehler nicht...

vielen dank im vorhinein!

lg
tommy

von Wolle (Gast)


Lesenswert?

ersetze mal
>brne setdata0  durch
 rcall setdata0 ;nächster Befehl nach Rücksprung

von tommy (Gast)


Lesenswert?

vielen dank erstmal

aber ich will ja den sprung von einer abfrage abhängig machen,
geht das denn so nicht?

ich könnte ja auch in setdata0 bzw. setdata1 einen weiteren
sprungverweis nach oben einbauen
aber:
ich will setdata0 in einen noch nicht programmierten teil
wiederverwenden und dann würde dieser weitere sprungverweis in den
schon programmierten teil springen und nicht dorthin zurück wo er
aufgerufen worden ist

von Wolle (Gast)


Lesenswert?

Bei einem bedingten Befehl, abhängig von einer Abfrage (0 oder
nicht;gleich oder nicht;gösser oder nicht; etc.) funktioniert das mit
einer Bedingung nur einmal, weil nach dem Rücksprung die Bedingung
nicht mehr vorhanden ist.
Es bleibt dir keine andere Wahl, jedesmal vor einem bedingten Sprung
eine neue Abfrage auf die Bedingung zu starten.
Das geht dann mit
if xxx, yy
....bedingter Sprung
else xxx, aa
....bedingter Sprung
endif
Damit kannst du zu zwei verschiedenen Unterprogrammen hüpfen.

Puh....was für Bedingungen und das am frühen Morgen.......

von tommy (Gast)


Lesenswert?

schade aber

danke!

von Christof Krüger (Gast)


Lesenswert?

Um normal den unterschied herauszustellen: brxx (also breq, brne etc.)
sind bedingte Sprungbefehle, die einfach nur den Program Counter
ändern, die Rücksprungadresse wird hierbei NICHT auf den Stack
geschrieben, Das geschieht nur bei den call-Aufrufen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.