mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik RS232 komische Zeichen


Autor: Benshee (Gast)
Datum:

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

Autor: Oliver K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Versuch doch mal:

mov a, '3'

die meisten Assembler verstehen das.

...Kommt jetzt immer noch keine 3 raus?

Grüße
Oliver

Autor: thkaiser (Gast)
Datum:

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

Autor: Niglo (Gast)
Datum:

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

Autor: thkaiser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ups - das '#' vergessen..... sollte mov TMOD,#20h heißen...

Autor: Benshee (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wahnsinn , vielen DANK morgen probiere ich es gleich aus und wenn es 
geht dann mache ich einen LUFTSPRUNG bis zum MOND und schreibe euch dann 
eine Ansichtskarte !!!!!!!!!!

Autor: Benshee (Gast)
Datum:

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

Autor: niglok (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi.

Wenn die Frequenz nicht stimmt, dann kann es auch nicht gehen.
Mit BASCOM arbeite ich nicht, also keine Ahnung.

MfG, Niglo

Autor: Benshee (Gast)
Datum:

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

Autor: Niglo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Freut mich!

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.