Forum: Mikrocontroller und Digitale Elektronik 8051: Hex=>Dez an Hyperterminal


von einer (Gast)


Lesenswert?

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

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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.

von einer (Gast)


Lesenswert?

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!

von Karl H. (kbuchegg)


Lesenswert?

Ist zwar nicht für 8051 aber vielleicht hilfts ja trotzdem
http://www.mikrocontroller.net/articles/AVR-Tutorial:_LCD#Zahlen_ausgeben

von Stephan H. (stephan-)


Lesenswert?

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.

von einer (Gast)


Lesenswert?

gibt es eigentlich einen befehl, der mir ein carry setzt, wenn das 
ergebnis "negativ" ist?

von M. F. (sajuuk)


Lesenswert?

Nein gibts nicht. Bei 8085 gabs noch ein negativ-Flag lang it's her.

von Peter D. (peda)


Lesenswert?

einer wrote:
> gibt es eigentlich einen befehl, der mir ein carry setzt, wenn das
> ergebnis "negativ" ist?

Ja:
1
MOV C, ACC.7


Peter

von Pieter (Gast)


Lesenswert?

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

von Peter D. (peda)


Lesenswert?

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

von einer (Gast)


Lesenswert?

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

von die ??? (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.