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
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?
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
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ß ??
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.