www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik UART mit 8051 (AT89C51AC2)


Autor: Jan Stiels (jochenw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo.
Ich bin auf der suche nach Hilfe :)
Hab einen µC 8051 und will die Serielle Schnittstelle ansprechen.
Ich hab es geschafft das ich senden kann aber naja es kommen nur 
kommische Zeichen Raus.
Less den Port mit einem VB Programm aus.
Ich will nur ein Zeichen senden und es soll auch dieses Zeichen 
übertragen werden.
Hat jemand eine Idee oder einen kleinen Quellcode ?
grüße
J

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn schon etwas ankommt, ist es immerhin nicht der falsche Timer (ein 
Fehler, den ich mal an dieser Stelle gemacht habe). Ich würde mir eher 
um die Quarzfrequenz sorgen machen. Wieviel Abweichung hat die Baudrate, 
rechnerisch? Und ist der Pegelwandler (MAX232 o.ä.) in Ordnung?

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein Test mit Terminalprogramm kann auch nicht schaden. Wenn's kein ASCII 
ist: Es gibt auch binäre Terminalprogramme. Hatte mal eines, habe aber 
leider den Namen vergessen.

Autor: markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!
Sind die Baudraten von µC und dem VB-Programm gleich eingestellt?

Ich habe die serielle Schnittstelle bei meine AT89C51ED2 immer so 
initialisert (in C!):
// ************ X2 feature ******************************
CKCON0=0xFF; // X2 fast mode, peripherie NORMAL 12 cycles
//115000 Bd. for a generic 8051, running @ 22.118 MHz:
  // Set up UART - Find the description in the User's manual!
  PCON |=0x80;  // Baudrate double
  SCON = 0x50;  // 8 Bit UART - PC-compatible
  TH1=0xFF;       // Baudrate 115k
    TMOD |=0x20;  // use timer 1 as baudrate generator
    TCON=0x40;    
  ES=0;    // Enable Serial IRQ (if required)
  EA= 1;    // Enable general IRQs (if required)
        TI=1;

Die Berechnung der Baudraten ist im Datenblatt zu finden.
Welche Entwicklungsumgebung verwendest du? Bei Keil µVision2 (oft reicht 
die Freeware- Version aus) können Daten formatiert per printf() über die 
serielle Schnittstelle gesendet werden.

Sonst probiers mal mit dem Terminalprogramm hterm (da kannst du dir die 
Übertragenen Binärdaten anschauen...)

lg markus

Autor: hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Jan

hier ein Link für ein Terminalprogramm.

http://www.docklight.de/

die Demo reicht

gruß hans

Autor: Jan Stiels (jochenw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich danke euch schon mal :)
Werd mal schauen wie ich das ändern kann :)
Im mom kommt nur datenmüll hehe

und die baudraten sind alle auf 9600 eingestellt.

werd mich nun mal dran setzten und alles überprüfen :)

Autor: Jan Stiels (jochenw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi
Hab es gehschafft zu senden :). es lag an der Baudrate.

Nun hab ich aber noch ein Problem.
Würd gerne ein einzelnes Bit eines Registers Ansprechen wie z.B. R0.1
und R0.2
Nun meine Software sagt das es nicht geht.
Wie könnte ich das realisieren ??

Autor: Thomas B. (detritus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jan Stiels wrote:
> Hi
> Hab es gehschafft zu senden :). es lag an der Baudrate.
>
> Nun hab ich aber noch ein Problem.
> Würd gerne ein einzelnes Bit eines Registers Ansprechen wie z.B. R0.1
> und R0.2
> Nun meine Software sagt das es nicht geht.
> Wie könnte ich das realisieren ??

Du kannst Register auch nicht bitweise adressieren. Das geht nur im Akku 
sowie in dem speziellen, dafür ausgelegten RAM-Bereich.
Ansonsten noch mit maskieren und schieben, aber das macht auf dem 8051 
keinen Sinn, wenn man eh bitadressieren kann.

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.