Hallo Leute, ich wollte ein bischen mit C Code rum spielen und schauen wann was passiert. Wenn ich mit der Maus über eine Char Vareable blendet sich ein kleines Fenster auf wo ich alles über diese Verable sehen kann. Wie auf dem Bild zu sehen. Wenn ich jetzt das selbe mir der uint8_t Vareable zahl machen will klappt das nicht warum? Wie auf dem Bild müsste jetzt bei zahl 1 stehen. Da kommt aber nichts. Gehe ich einen Schritt weiter Wird die Rechnung Zahl + 10 gemacht was 11 ergibt. und aufeinmal kann ich 11 sehen. Die double Vareable wird pufferd wird nie angezeigt. Muss ich noch irgenwas einstellen damit mir mehr angezeigt wird? Hie nochmal den vollständigen Code:
1 | #include <avr/io.h> |
2 | #include <stdlib.h> |
3 | |
4 | int main(void) |
5 | {
|
6 | // Port als Ausgang definieren
|
7 | DDRB = 0xff; |
8 | // Pullups für die Eingänge aktivieren
|
9 | // PC6 ist Reset, PC7 Gibs bei ATMega8 nicht
|
10 | PORTC = ((1 << PC0) | (1 << PC1) | (1 << PC2) | (1 << PC3) | (1 << PC4) | (1 << PC5)); |
11 | PORTD = ((1 << PD0) | (1 << PD1) | (1 << PD2) | (1 << PD3) | (1 << PD4) | (1 << PD5) | (1 << PD6) | (1 << PD7)); |
12 | |
13 | // Vareablen deklarieren
|
14 | char pufferc[] = {"123"}; |
15 | char pufferc2[21]; |
16 | double pufferd; |
17 | uint8_t zahl; |
18 | |
19 | while(1) |
20 | {
|
21 | // Einfach mal zum Spaß einen Eingang abfragen - Frage ist eh wahr
|
22 | if (!(PIND & (1 << PD0))) |
23 | {
|
24 | // Zahl aus String holen
|
25 | pufferd = atol(&pufferc[0]); |
26 | // Zahl wieder in String umwandeln (neue Formatierung)
|
27 | dtostre(pufferd,pufferc2,20,0); |
28 | // versuchen eine einzelne Zahl aus dem String zu holen
|
29 | zahl = (int)pufferc2[0] - 48; |
30 | // Zahl einfach mal bearbeiten
|
31 | zahl = zahl + 10; |
32 | // Zahl ausgeben damit sie vom compiler nicht weg optimiert wird
|
33 | PORTB = zahl; |
34 | }
|
35 | }
|
36 | }
|