senden über uart

Gast #323246
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";
}
}
Gast #323248
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.
Gast #323249
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;

}
#323250
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.
Gast #323253
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:
1
while (1)
2
{ 
3
if (RI == 1) 
4
  {                         
5
    RI = 0;
6
    SBUF = SBUF + 1;
7
  }
8
}

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


Peter

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.