www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik binäre Ausgabe auf die Schnittstelle mit 8051


Autor: Tom B. (tom51)
Datum:

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

Autor: spess53 (Gast)
Datum:

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

Autor: Tom B. (tom51)
Datum:
Angehängte Dateien:

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

Autor: Tom B. (tom51)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Das erste Flussdiagramm war leider nicht ganz richtig.
Habe das richtige in diesem Anhang

MfG
tom

Autor: spess53 (Gast)
Datum:

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

Autor: Tom B. (tom51)
Datum:

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

Autor: holger (Gast)
Datum:

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

Autor: spess53 (Gast)
Datum:

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

Autor: Tom B. (tom51)
Datum:

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

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.