Hilfe!

Gast #283001
Hallo!

Ich programiere einen AT89C51ED im 8051 Code komplett in ASM und habe
schon Routinen für LCD, I2C Bus geschrieben und funzt auch so weit.
Dort deklarierte ich im Bitadressierbaren Bereich Flags die ich
benötige zum steuern.

Jetzt zum problem: Zur Ausgabe einer Zahl rufe ich es über einen
seperaten LCALL befehl auf.
Beim Debuggen ist mir aufgefallen das beim sichern von PSW und die
Register R0-R7 auf denm Stack den Bitadressierbaere Bereich
überschreiben.

Das find ich ist doch nicht normal diese sollten doch auf dem Stack
abgelegt werden.

Weiss jemand rat was ich falsch mache?  irgendwie blick ich es nicht
was da falsch läuft.




Gruß Klaus
Gast
wie Peter schon erklärt hat mußt du denn SP auslagern. Nach einem RESET
liegt der auf Speicherstelle 0x07 im internen RAM.

Wächst der STACK an so schiebt er sich im internen RAM immer weiter
nach oben. Du zerstörst die weiteren Registerbänke, BIT Bereich usw.
usw.

Also mov SP,#60H z.B.

Joe
Gast
@Joe und Peter

Vielen Dank für den hinweis!

@Peter: ich habe den Stackpointer nicht verstezt.


Ich bin davon Ausgegangen das sich der Stack selber verwaltet und einen
eigenen Speicherbereich hat.

Muss wohl nochmal Datenblatt genauer anschauen.


Nochmals Danke!
Gast
"Ich bin davon Ausgegangen das sich der Stack selber verwaltet ..."

wenn Du in C programmierst, stimmt das auch.

Aber in Assembler muß man immer alles selber machen.


Peter

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 20 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.