Guten Tag. Ja, wahrscheinlich werden sich gleich wieder Menschen aufregen, da ähnliche Fargen schon oft beantwortet wurden. Aber ich komme einfach momentan nicht weiter. Also folgendes Problem: Der AD-Wandler meines 8051 spuckt mir einen Hex-Wert (z.B. 3Bh) aus. Wie schaffe ich es denn jetzt bitte den passenden Dezimalwert (in diesem Fall natürlich 59) per Hyperterminal auszugeben. Im Moment schmeisst mir mein tolles Programm leider nur die betroffenen Symbole (;) aus dem ASCII-Code an den Bildschirm. Bitte melden. Ich verzweifle grade. Es bedankt sich EINER
Du musst den Wert in eine Klartextrepräsentation umwandeln. Also aus dem einen Byte mit dem Wert 59 die drei Zeichen "0", "5" und "9" erzeugen und diese dann nacheinander an die serielle Schnittstelle ausgeben. In C kann man das mit printf oder itoa machen.
Leider programmiere ich in Assembler und habe mich momentan völlig in meinem Programm verirrt. Hat vielleicht jemand einen Tipp oder eine kleine Routine, um mich zu befreien? Schonmal Danke!
Ist zwar nicht für 8051 aber vielleicht hilfts ja trotzdem http://www.mikrocontroller.net/articles/AVR-Tutorial:_LCD#Zahlen_ausgeben
normale Umwandlung von HEX nach Dez. Dann noch Nibbeln und raus damit. Um ASCII draus zu machen zu jedem Nibbel noch 30H dazu. bzw Terminalprogramm so einstellen das die "richtigen" Werte angezeigt werden. Hier im Forum gibts ein gutes Terminalprogramm.
gibt es eigentlich einen befehl, der mir ein carry setzt, wenn das ergebnis "negativ" ist?
Nein gibts nicht. Bei 8085 gabs noch ein negativ-Flag lang it's her.
einer wrote: > gibt es eigentlich einen befehl, der mir ein carry setzt, wenn das > ergebnis "negativ" ist? Ja:
1 | MOV C, ACC.7 |
Peter
moin moin, ulk, natürlich gibts ein SetB C, das löst aber nicht das Problem mit negativen Zahlen. Wie soll der ADU aber negative Zahlen erzeugen? und schon mal gegoogelt? "8051 hex dec" -> http://www.8052.com/codelib.phtml mfg Pieter
einer wrote: > Der AD-Wandler meines 8051 spuckt mir einen Hex-Wert (z.B. 3Bh) aus. > Wie schaffe ich es denn jetzt bitte den passenden Dezimalwert (in diesem > Fall natürlich 59) per Hyperterminal auszugeben.
1 | ; ACC = Zahl (0..255) |
2 | MOV B, #100 |
3 | DIV AB |
4 | CALL NUMOUT |
5 | MOV A, B |
6 | MOV B, #10 |
7 | DIV AB |
8 | CALL NUMOUT |
9 | MOV A, B |
10 | NUMOUT: |
11 | ADD A, #'0' |
12 | CHAROUT: |
13 | MOV SBUF, A |
14 | JNB TI, $ |
15 | CLR TI |
16 | RET |
Peter
danke für eure hilfe. hatte tatsächlich mal ein brett vorm kopf. das mit dem teilen war meine erste idee, aber ich hatte leider das Übertragen vom Rest vergessen. So weiter gehts mit zumindest etwas größeren schritten in der welt der µ-technologie. Es bedankt sich EINER
Warum denn so kompliziert? Nimmst du HTerm und gut ist's (ist eh besser als das stupide Hyperterminal). Da kannste dir die Werte als binäre, hexadezimale, dezimale, ... Werte angucken. http://www.der-hammer.info/terminal/hterm.zip
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.