Guten Abend! Ich möchte mit diesem Programm eine weitere Subroutine erstellen. Jedoch habe ich das Problem, dass bei der Binären ausgabe das fünfte und das sechste Bit bei Eingabe von 0hex trotzdem gesetzt sind. Wäre sehr dankbar wenn da jemand drüber schauen würde. Hier die Unterprogramme: init: mov R1,#08h clr cy Eingabe: lcall SP_InWait ;endlos auf Zeichen warten jmp rotate_left vonRholen: mov A,ueberlaufR rotate_left: rlc A mov ueberlaufR,A jc Einsausgabe Nullausgabe: mov A,#30h lcall SP_OutA ;Ausgabe als ASCII auf die Serielle Schnittstelle ljmp dekrementieren Einsausgabe: mov A,#31h lcall SP_OutA dekrementieren: djnz R1,vonRholen Gruß Tom
Hi #30h ist das Zeichen für '0' im ASCII-Zeichensatz. Und da sind nun mal Bit 4 und 5 gesetzt. Eine 'binäre' Null wäre #00h. MfG Spess
Wow, mit so einer schnellen Antwort habe ich nicht gerechnet! Das hast du leider falsch verstanden. Die Zeichen werden einzeln nacheinander ausgegeben. Ich möchte also die einzelnen ASCII - Zeichen auf die serielle Schnittstelle ausgeben. Habe das Flussdiagramm im Anhang. MfG tom
Das erste Flussdiagramm war leider nicht ganz richtig. Habe das richtige in diesem Anhang MfG tom
Hi
Ok, da habe ich dich etwas falsch verstanden.
Aber ich würde mal darauf tippen, das du mit
> lcall SP_InWait ;endlos auf Zeichen warten
das ASCII-Zeichen für Null, und nicht 00h bekommst. Womit sendest du das
an den µC?
MfG Spess
mit
> lcall SP_InWait ;endlos auf Zeichen warten
wartet der µC auf eine Eingabe der Tastatur. Das ASCII - Zeichen ist
dann binär im Accu und soll dann binär über die serielle Schnittstelle
ausgegeben werden. Das funktioniert auch, jedoch sind die bits 4 und 5
auch gesetzt wenn ich z.B. null eingebe.
Vielen Dank für deine schnelle Antwort!
MfG
tom
>Das funktioniert auch, jedoch sind die bits 4 und 5 >auch gesetzt wenn ich z.B. null eingebe. Null ASCII ist 0x30. Binär 00110000. Da sind deine zwei ungewollten Bits;)
Hi Nochmal: Wo kommt deine '0' her? Das was du in deiner Ausgabe erhältst ist die binäre Schreibweise für das ASCII-Zeichen für Null. 30h = 00110000b MfG Spess
Besten Dank an Euch! Das Programm hat also von Anfang an funktioniert:) Das hätte mir nicht passieren dürfen, aber wenigstens habe ich es nun verstanden. mfg tom
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.