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.
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
Hallo, kann es sein, das Du temp2 bzw r16 in dem Unterprogramm lcd_data veränderst ? Eckhard
Wenn er die Routinen von dieser Seite hat, ja. Aber wieso überhaupt temp2 verwenden? "subi temp1, -'0'" oder "subi temp1, -0x30" sollte genauso gehen.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.