www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik schleifenproblem


Autor: tommy (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Wolle (Gast)
Datum:

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

Autor: tommy (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Wolle (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.......

Autor: tommy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
schade aber

danke!

Autor: Christof Krüger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.