Hilfe!

Gast #283001
Lesenswert?
• ▲
▼
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 #283003
Lesenswert?
• ▲
▼
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 #283004
Lesenswert?
• ▲
▼
@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!

Antwort schreiben

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.

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.