0851 Ausgabeproblem auf Serielle Schnittstelle (UART)

OP #493802
Lesenswert?

Hallo,

Also ich habe da ein kleineres Problem mit der Ausgabe auf den Serial 
Port.
Das Projekt geht um die Spannungsmessung 0 bis 5V-1LSB mit dem 
AD-Wandler.

Programmscprache: Assembler
Hardware: Infinion XC866 Evulations Kit

Ich machte Foldendes:

Als erstes definierte ich mir volgende Platzhalter:

Result  equ 030H     ;Resulrat der A/D-Wandlung
Result1   equ 031H   ;Vorkommastelle von dem Resultat
Result2   equ 032H    ;Erste Kommastelle von dem Resultat
Result3   equ 033H    ;Zweite Kommastelle von dem Resultat

Danach Rechnete ich meinen Eingabewert um in ASCI-Zeichen (30h-39h)

Diese Werte Schrieb ich in die Speicherzellen 31h-33h (Result1-Result3)

Nun möchte ich den Wert auf die Serielle Schnittstelle Ausgeben mit 
volgendem Algo.

;-----------------------------------------------------------------------
SEND:  MOV DPTR,#OUT
SEND1:  CLR A
  MOVC A,@A+DPTR
  CJNE A,#0FEh,SEND2
  RET

SEND2:  MOV SBUF,A

TI_SET:  JNB TI,TI_SET
  CLR TI
  INC DPTR
  JMP SEND1


OUT:  DB  Result1,02EH,Result2,Result3,05FH,056H,P3_DATA,0FEH
;-----------------------------------------------------------------------

Nun sieht aber die Ausgabe folgendermassen aus:

1.23_V°

Also er schreibt mir die Speicheradresse von Result1-Result3 und P3_DATA 
auf den Serial Port.

Nun Meine Frage: Wie kann ich dem Programm beibringen, das es den Inhalt 
von den Speicherzellen herausspukt und nicht die Speicheradresse. Was 
ist Falsch an meinem String:
OUT:  DB  Result1,02EH,Result2,Result3,05FH,056H,P3_DATA,0FEH?


Ich habe noch das kompletten Code hochgeladen, wenn meine Angaben nicht 
genügen sollten :-).

Danke für die Hilfe.
Gruss Markus
Angehängte Dateien:
Persönliche Seite #493810
Lesenswert?

DB definiert einen konstanten String, eine Dereferenzierung von darin 
stehenden Adressen gibt es nicht.
In Deinem String steht 0x31 0x2e 0x32 0x33 0x5F 0x56 ... - woher soll 
Deine Stringausgabefunktion wissen, daß sie den Wert 0x31 als Adresse, 
den Wert 0x2e aber als Zeichenkonstante auswerten soll?

Du musst schon selbst Deinen String zusammenbasten - am einfachsten, in 
dem Du an den entsprechenden Positionen Deines Strings die Werte 
einträgst.

Das müsste sogar mit Deinen bisherigen Bezeichnern funktionieren

OUT:
Result1: DB 0, 02eh
Result2: DB 0
Result3: DB 0, 05fh, 056h

etc...

(alternativ ist Result1 == OUT, Result2 == OUT + 2, Result3 == OUT + 3)

Womit kennzeichnest Du eigentlich das Ende Deines "Strings" OUT?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren