binäre Ausgabe auf die Schnittstelle mit 8051

OP #1782064
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
OP #1782093
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
Angehängte Dateien:
Gast #1782117
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
OP #1782126
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
Gast #1782128
>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;)
Gast #1782134
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.