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