www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik senden über uart


Autor: jimmii (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
ich möchte mit folgenden programm über die uart den untenstehenden
wert ausgeben leider haut das mit keil nicht hin.


#include <reg_c51.h>
char uart_data;
void main (void)
{
  SCON = 0x50;
  TMOD = 0x20 ;
  TH1  = 0xF3;
  TL1  = 0xF3;
  ES = 1;
  EA = 1;
  TR1 = 1;

while(1)

{

      SBUF = "fgh";
}
}

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>SBUF = "fgh";
Was soll ein ein-Byte-grosses Register mit einem String (Ansammlung von
Bytes)? Richtg: Passt nicht!

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn Du in SBUF ständig was reinschreibst (was zudem noch gar nicht
reinpasst, SBUF ist nur 8 Bit breit) und nicht mal wartest, bis es
gesendet wurde, dann kann nix ankommen. Bitte beschäftige Dich erst mal
eingehendst mit den Grundlagen.

Autor: jimmii (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok geht dann das?
#include "header.h"

char uart_data;


void main (void)
{
  SCON = 0x50;
  PCON |=  0x50;
  TMOD =  0x20 ;
  TH1  = 0xFD;
  TL1  = 0xFD;
  ES = 1;
  EA = 1;
  TR1 = 1;


while (1)
{
if (RI == 1)
  {
    RI = 0;
    uart_data = SBUF;
    TI = 1;
    SBUF = uart_data;
  }
  else TI = 0;

}

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sag mal: Sind mit dem Compiler keine Demos mitgekommen?

Ansonsten:
Schau mal ins ACR-gcc Tutorial. Ich weiss was du sagen willst:
Ich hab aber Keil. Schon. Aber im AVR-gcc Tutorial sind
auch die Grundlagen über USART-Behandlung drinnen. Die
Register heissen bei dir etwas anders, aber das Prinzip
wie das Teil funktioniert ist dasselbe (Kunststück: liegt
ja auch dieselbe Hardware drunter). Du hast noch nicht
verstanden wie das ganze 'im Prinzip' abläuft.

Autor: Lupin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich glaube nicht, dass er einen AVR programmiert. Ich hab keine ahnung
was RI oder TI ist.

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
[Werbung]
"Mikrocontroller-Kochbuch" von Andreas Roth. Für mich DIE
8051er-Bibel. Grundlagen von A-Z.
[/Werbung]

Autor: peter dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sollte gehen.
Das TI brauchst Du nicht, wenn Du es nicht testest.

Damit man weiß, daß wirklich die UART benutzt wird und kein Kurzschluß
ist, kann man folgendes machen:
while (1)
{ 
if (RI == 1) 
  {                         
    RI = 0;
    SBUF = SBUF + 1;
  }
}

Dann kriegst Du immer das nächst höhere Zeichen zurück (A->B usw.).


Peter

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.