Serielle Schnittstelle fehlerhafte Zeichen

Gast #19222
Lesenswert?
• ▲
▼
Ich habe einen 8051 und einen MAX 232, wenn ich den in Bascom 8051 
programiere dann sendet die serielle Schnittstelle die richtigen 
zeichen. Aber wenn ich nur in Assembler mal die Zahl 100 übertragen will 
dann kommt jedesmal nur so ein komisches "y" mit ü Punkte oben drauf 
raus. Baudrate stimmt und sonnst weiss ich nicht mehr weiter.
                       Hier ist mal das Programm:
; 13.12.02 16:20:42

#cpu = 80C31  ; @24 MHz
           org 0h
    ; Stack auf 30h hinter Registerbänke und Bit-Area setzen
           mov sp,#30h
    ; Timer programmieren
           mov PCON,#00h
           mov TMOD,#22h
           mov TH1, #230
           mov TL1, #230
           setb TCON.6
           mov SCON,#052h

    start:
mov a,100
mov sbuf, a
         ajmp start
    END
Gast #19223
Lesenswert?
• ▲
▼
genau habe ich mir dein Programm/Initialisierung nicht angeschaut (ewig 
nichts mehr mit 51er Assembler gemacht), aber auf jeden Fall überfährst 
du mit deinem Programm die serielle Schnittstelle. Du mußt schon warten, 
bis das Byte rausgeschoben oder zumindest im Shiftregister ist, bevor du 
was neues reinschreiben kannst. Gibt irgendein Flag dafür, das anzeigt, 
daß man schreiben kann.
Gast #19226
Lesenswert?
• ▲
▼
Du möchtest "100" an den PC senden oder ASCII 100 = "d" ????
Dann solltest Du es im letzteren Fall mit

mov a,#100

versuchen.

Im ersteren Fall mußt Du drei Ascii-Zeichen übertragen.

Im jetzigen Prog liest er den Inhalt des internen SRAM.

Ansonsten schließe ich mich crazy horse an.
Gast #19228
Lesenswert?
• ▲
▼
Ich habe jetzt ein neues Programm geschrieben , daß geht besser.
Aber immer noch kommen nur komische zeichen anstat einer 100.

; 13.12.02 16:20:42

#cpu = 80C31  ; @24 MHz



;---------------------------------------------------------------

; Programmbeginn
;---------------------------------------------------------------
 ORG 0h
        jmp start


;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; ein Byte aus ACC ausgeben
serial_out:
;  auf Abschluß des letzten Sendevorganges warten
        jnb SCON.1,serial_out
        clr SCON.1
;  senden
        mov SBUF,a
  jmp main
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

; Initialisierung
;---------------------------------------------------------------
start:

; serielle Schnittstelle aktivieren
;  1200 Baud, Modus 1
        mov TL1, #204
        mov TH1, #204

; die SFR's initialisieren
        mov SP,  #20h
        mov SCON,#82
        mov TMOD,#32
        mov TCON,#64

; Hauptprogramm
;---------------------------------------------------------------
main:

mov a, #222

jmp serial_out

; Programmende
;---------------------------------------------------------------
ende:
        jmp ende
END

Antwort schreiben

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.

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.