www.mikrocontroller.net

Forum: Projekte & Code integer als String an UART


Autor: Nick Ma. (nickma)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Für alle die schon immer '65' Statt 'A' lesen wollten:
Folgender Code sendet jede Stelle eines integer einzeln.
Im Beispiel intout(123) wird zuerst 1, dann 2, dann 3 an den UART 
übergeben.

void intout(long int zahl)
{int mod=10,durch=1;
 long int temp;
 //Variablen der Längenerkenung
 int laenge=0;

  //Ermittlung der anzahl der Stellen in der Variabl Bsp: 123 -> 3 Stellen
  do{  laenge++;
    durch=durch*10;
  }while(zahl/durch>0);
  durch = 1;   //Reset der "durch" Variable
  
 uart_putc('-');
   //Ausgabe der einzelnen Stellenwerte, von links nach rechts (Für USART oder der Gleichen)
  int i,j, modtemp, durchtemp;
  for(i=laenge; i>0; i--)
  {  
    modtemp= mod;
    durchtemp = durch;
    for(j=1; j<i; j++) //Berechnen des Modulu und des Dividenden
    {  modtemp *= 10;
      durchtemp *=10;
    }
    temp=(zahl%modtemp)/durchtemp;
    uart_putc(temp+48); //Ausgabe
  }
 
  /*// Ausgabe der einzelnen Stellenwerte, von rechts nach links (Für LCD-Displays oder der Gleichen)
  do
  {temp=(zahl%mod)/durch;
    if(zahl/durch <10) //Wenn es die letzte auszugebende Zahl ist, verändert sich die Berechnung der Ausgabe
        temp=zahl/durch;
    mod *= 10;
    durch *= 10;
    temp += 48;
    uart_putc(temp); //Ausgabe
  }while (zahl/durch > 0); //End While */
 uart_putc('-'); 
}


Greez
Nick

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nick Ma. wrote:
> Für alle die schon immer '65' Statt 'A' lesen wollten:

Oder einfach ein anderes Terminalprogramm nehmen, dass die Werte auch 
dezimal anzeigen kann ;) ;) ;)

http://www.der-hammer.info/terminal/

Ansonsten habe ich mir den Code nicht weiter angeschaut (gibt btw. sowas 
auch schon öfters hier)

Macht aber nix - schließlich hast du dabei was gelernt, und dat is wohl 
dat wichtichste.

Autor: Hauke Radtki (lafkaschar) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>//Berechnen des Modulu und des Dividenden

Ist mir beim drüberfliegen so aufgefallen, das heißt Modulo ;) aber das 
ist wohl nicht so wichtig ;)

Sowas kann man nuten um Zahlen auf einem Seriellen Terminal auszugeben. 
Aber da ist es meist besser die Umwandlung vor dem Senden zu machen um 
nicht 2 verschiedene Sendemethoden aufrufen zu müssen. Ist aber 
geschmackssache ;)

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Man könnte aber auch mal in der Codesammlung suchen:

Beitrag "Zahlenausgabe"


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.