mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik USART & Mega128


Autor: Helge (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Glaube meine Fragen werden langsam peinlich.Ich habe im Netz nichts 
darüber gefunden und hoffe mal wieder auf Hilfe von euch.
Arbeite mit Codevision und Mega128.
Wie gebe ich über die USART1 einen String aus?
Beim mega163 ging es ganz einfach mit puts(string).Hatte ja auch nur 
eine UART.
Gruß Helge

Autor: Dieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
könntest den string einzeln ausgeben.
also

putchar1(string[0]);
putchar1(string[1]);
putchar1(string[2]);

denn putchar wird bei der initialisierung mit codevision vom USART1 
declariert.

ist halt ein größerer schreibaufwand, aber dafür funktionierts.

Autor: Dieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
putchar1 wird natürlich declariert nicht putchar!

Autor: Helge (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Dieter

Also mit putchar(string[0]) geht es.
Aber ich würde ja gerne mit puts den gesamten string ausgeben.
Wenn gar nicht anders muß ich mir wohl ne Schleife basteln um die 
Zeichen einzeln auszugeben.
Kann man vielleicht etwas in der stdio.h ändern?

Autor: Dieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
na ich hab bis jetzt noch keine andere lösung gefunden.
wenns dir so wichtig ist den schreibaufwand zu sparen, gebs doch über 
den USART0 aus.

ansonsten versteh ich nicht, wo das problem ist, die zeichen einzeln 
auszugeben.

und über USART1 heißt es putchar1 nicht putchar.

ich mein ob du

puts(string);

oder

putchar1(string[0]);
putchar1(string[1]);
putchar1(string[2]);

ist doch egal.

und wenns ein zu langer string ist, machst du's halt mit ner schleife 
(i=0 bis i=n);

sind doch alles wunderschöne lösungen.

am ende ist doch egal was du fürn befehl verwendest, das ergebnis muss 
stimmen.

Autor: Dieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kannst dir ja auch ein kleines unterprogramm schreiben.
void stringausgabe() oder so, da kannst du dann die länge des strings 
mit übergeben.
und im unterprogramm steht halt die schleife, und fertig ist.

Autor: Helge (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja wenns nicht anders geht muß ich wohl damit leben.Etwas umständlich 
ist es schon. Puts wär die Lösung.Wußte nicht das es mit dem Mega128 
nicht geht.
Habe bei mir putchar1 programmiert nur vergessen in meinem Beitrag zu 
schreiben.
Vielen Dank für die prompte Hilfe

Autor: Sascha Weitkunat (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Aber ich würde ja gerne mit puts den gesamten string ausgeben.
> Wenn gar nicht anders muß ich mir wohl ne Schleife basteln um die Zeichen 
einzeln auszugeben.

Nun rate mal was die puts(..) Funktion macht? Zeichen für Zeichen des 
übergebenen Strings in den Sendebuffer ausgeben, eine Schleife.

Autor: Helge (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Sascha
Ich mach es mit einer Schleife.Werde vorher mit strlen die Länge 
ermitteln und dann gehts los.

Autor: Dieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
na dann viel spass

Autor: Sascha Weitkunat (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das mit strlen(..) ist ein unnötiger Aufwand:

// --------------------------
unsigned char c;

while (c = *string++)
  putchar1(c);
// --------------------------

Pseudocode, also bitte nicht hauen wenns nicht exakt so klappert.

Autor: Helge (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na dann versuch ich es mal ohne strlen.Die Zeichenkette wird gut 
ausgegeben mit strlen.
Hab momentan aber noch ein anderes Problem.Hab am RX0-Pin ein S35 
dran.Komischer weise gibt mein Handy jetzt keine Daten zurück. ---->aber 
morgen ist auch noch ein Tag :-))

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.