Forum: Projekte & Code integer als String an UART


von Nick M. (nickma)


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.

1
void intout(long int zahl)
2
{int mod=10,durch=1;
3
 long int temp;
4
 //Variablen der Längenerkenung
5
 int laenge=0;
6
7
  //Ermittlung der anzahl der Stellen in der Variabl Bsp: 123 -> 3 Stellen
8
  do{  laenge++;
9
    durch=durch*10;
10
  }while(zahl/durch>0);
11
  durch = 1;   //Reset der "durch" Variable
12
  
13
 uart_putc('-');
14
   //Ausgabe der einzelnen Stellenwerte, von links nach rechts (Für USART oder der Gleichen)
15
  int i,j, modtemp, durchtemp;
16
  for(i=laenge; i>0; i--)
17
  {  
18
    modtemp= mod;
19
    durchtemp = durch;
20
    for(j=1; j<i; j++) //Berechnen des Modulu und des Dividenden
21
    {  modtemp *= 10;
22
      durchtemp *=10;
23
    }
24
    temp=(zahl%modtemp)/durchtemp;
25
    uart_putc(temp+48); //Ausgabe
26
  }
27
 
28
  /*// Ausgabe der einzelnen Stellenwerte, von rechts nach links (Für LCD-Displays oder der Gleichen)
29
  do
30
  {temp=(zahl%mod)/durch;
31
    if(zahl/durch <10) //Wenn es die letzte auszugebende Zahl ist, verändert sich die Berechnung der Ausgabe
32
        temp=zahl/durch;
33
    mod *= 10;
34
    durch *= 10;
35
    temp += 48;
36
    uart_putc(temp); //Ausgabe
37
  }while (zahl/durch > 0); //End While */
38
 uart_putc('-'); 
39
}


Greez
Nick

von Simon K. (simon) Benutzerseite


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.

von Hauke R. (lafkaschar) Benutzerseite


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 ;)

von Peter D. (peda)


Lesenswert?

Man könnte aber auch mal in der Codesammlung suchen:

Beitrag "Zahlenausgabe"


Peter

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.