mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 0851 Ausgabeproblem auf Serielle Schnittstelle (UART)


Autor: Markus Amsteg (krokodi)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Markus Amsteg (krokodi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Antwort.

Muss es demfalls umschreiben. Dachte mir nur das mit dem String währe 
eine schöne Lösung.

Nun das Ende meines Stringes kenzeichne ich mit derm Wert 0FEH und der 
Abfrage:

CJNE A,#0FEh,SEND2
RET

Gruss Markus

Autor: Stephan Henning (stephan-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
die Inhalte von Speicheradressen werden mit @R0 und @R1 geladen.

zB.   MOV R0, Speicheradresse
      MOV A,@R0

oder  MOV A,@R1


und anders herum auch.

   zB.  MOV @R0,A

Das geht auch nur mit R0 und R1.

Meintest Du daß ??

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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.