Forum: Mikrocontroller und Digitale Elektronik BCD zu ASCII


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Luigi Aronica (Gast)


Lesenswert?

Ich möchte eine BCD Zahl in ASCII umwandeln durch diesen Code

ldi temp2, 0x30           ;Hex 30 in r16 laden
mov temp1, tausender      ;tausender Stelle nach r17
add temp1, temp2          ;Hex 30 zur taudender stelle adden
rcall lcd_data            ;wert an lcd rausgeben

mov temp1, hunderter      ;gleiches mit Hunderter Stelle
add temp1, temp2
rcall lcd_data

mov temp1, zehner         ;gleiches mit zehner St.
add temp1, temp2
rcall lcd_data

mov temp1, einer           ;gleiches mit einer St.
add temp1, temp2
rcall lcd_data

das lcd zeigt allerdings bis auf die einer Stelle nur Sonderzeichen an.

Hat jemand einen Rat? Die Inhalte in den Registern 
tausender,hunderter,zehner und einer sind definitiv bcd Zahlen zwischen 
0 und 9.

von Reiner (Gast)


Lesenswert?

hi
sieht soweit ganz gut aus. Du hast ja auch daran gedacht die ASCII-Null 
'0' zu addieren.
Zwinge doch mal die Inhalte vorher auf einen bekannten Inhalt
z.B.
 ldi tausender,1
 ldi hunderter,2
 ldi zehner,   3
 ldi einer,    4

zeigt die Ausgabe dann vorerst richtig an?

Reiner

von Eckhard (Gast)


Lesenswert?

Hallo,

kann es sein, das Du temp2 bzw r16 in dem Unterprogramm lcd_data 
veränderst ?

Eckhard

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Wenn er die Routinen von dieser Seite hat, ja. Aber wieso überhaupt 
temp2 verwenden? "subi temp1, -'0'" oder "subi temp1, -0x30" sollte 
genauso gehen.

von Luigi Aronica (Gast)


Lesenswert?

Hallo Freunde !Danke an alle!

Eckhard du hast recht gehabt temp2 wurde im Unterprog lcd_data verändert 
und so hab ich nir Schrott herausbekommen.

Habe temp2 komplett entfernt und auf Andreas Vorschlag mit subi temp1, 
-0x30 umgestellt.

Es funkt jezt prima.

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]
  • [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.