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.