RS232 komische Zeichen

Gast #20485
Lesenswert?

Ich habe einen AT89C2051 auf einer Platiene und einen MAX232 auf der 
anderen. Und ich verbinde die Datenleitung mit einem 10cm langen Kabel. 
Und dann von dem MAX232 in den PC Win 3.11 Terminal.
Wenn ich das Programm für den Mikrocontroller in BASCOM schreibe dann 
überträgt er die richtigen Zeichen . Aber wenn ich es in Asembler 
schreibe dann kommen da nur so komische zeichen raus .

; 07.01.03 19:51:51

#cpu = 80C31  ; @24 MHz


; Initialisierung






; serielle Schnittstelle aktivieren
;  4800 Baud, Modus 1
clr TR1

mov TL1, #243
        mov TH1, #243

; die SFR's initialisieren
        mov SP,  #20h
        mov SCON,#42h
        mov TMOD,#10h
        mov TCON,#40h
       mov IE,#0h
main:
mov a,#33h




serial_out:
;  auf Abschluß des letzten Sendevorganges warten
        jnb SCON.1,serial_out
        clr SCON.1
;  senden
        mov SBUF,a
        jmp main

end

ICh habe auch die Baudrate im Terminalfenster richtig eingestellt. Ich 
weiss nicht mehr weiter. 33h ist doch eigentlich die Zahl 3 oder??? Das 
heist der Controller müßte ständig eine 3 auf den PC schreiben , ins 
Terminalfenster.
Gast #20487
Lesenswert?

Hallo,
mit mov a,'3' gehts auch nicht weiter, damit lädtst Du den Inhalt des 
Internen RAM Adresse 33h....

Meine MCS-51-Kenntnisse sind zwar schon ein wenig eingerostet, aber ich 
denke, es liegt am Timer.
Du mußt Timer1 im Reload-Modus laufen lassen, also:

mov TMOD,20h

Dadurch wird Timer1 in zwei 8-Bit Register gesplittet, das Low-Byte wird 
bei jedem Maschinenzyklus um 1 erhöht, bei einem Überlauf wird 
automatisch das High-Byte ins Low-Byte übertragen.
Du brauchst also nur TH1 mit 243 zu initialisieren. Außerdem hast Du das 
Timer-Run Bit gelöscht und nicht mehr gesetzt, somit läuft der Timer 
nicht und eigentlich kann das Programm nichts senden.
By the way: Du hast den Transfer-Interrupt freigegeben, bei gesetztem 
EAL und keinem definierten Sprungvektor kann dies auch recht 
interessante Effekte haben. Also in SCON nur eine 40h reinschreiben.

Hoffe, Dir geholfen zu haben
Gast #20488
Lesenswert?

Hi.

So müsste es klappen.
Denn den Timmer im 16Bit Modus verwendet, du musst ihn aber im 
8-bit-autoreload-modus verwenden (TMOD,#20h).


; Initialisierung
;---------------------------------------------------------------

; serielle Schnittstelle aktivieren
;  4800 Baud, Modus 1
        mov TL1, #243
        mov TH1, #243

; die SFR's initialisieren
        mov SP,  #20h
        mov SCON,#42h
        mov TMOD,#20h
        mov TCON,#40h

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


MfG, Niglo
Gast #20491
Lesenswert?

Geht immer noch nicht . Ich habe mal die Frequenz vom Quarz gemessen und 
die liegt nur bei 20 Mhz und nicht bei 24 wie drauf steht .
Kann das daran liegen ?? Aber warum geht es dann bei BASCOM???
Gast #20493
Lesenswert?

Ich habe jetzt das Bascom Programm mit einen Disasembler in 
Maschienencode umgewandelt und habe mir den CODE angeschaut und dann das 
Programm zum Teil übernommen und jetzt geht es , warum auch immer ??

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren