Forum: Projekte & Code SDCC und Division


von Uli S. (pumuckel123)


Lesenswert?

Hallo Leute, ich hab ein ganz profanes Problem mit dem SDCC. Ich habe 
bis jetzt Assembler und manchmal BASCOM zur Programmierung von 8051er 
benutzt und bin was C angeht absoluter newbee. Obwohl ich bereits 
vielgesucht und gelesen habe, konnte ich für folgendes Problem keine 
Lösung finden. Ich hoffe hier kann mir jemand helfen!
Ich möchte eine Integerzahl (oder auch unsigned char) in einen 3 
Stelligen String umwandeln.

Wenn ich folgenden Code kompiliere, macht die Division immer -1

if (zahl<100)
 string{0]=48;
else
 temp = zahl/100; //temp soll der Ganzzahligen Teil des Ergebnisses sein
 zahl = zahl-temp*100; //damit soll der "hunderter anteil" subtrahiert 
werden
 string[0] = 48+temp;
......

Die 48 ist der Lcd Character Code für "0". Ist die "zahl" z.B. 222 
sollte in temp eine zwei stehen und nach der Subtraktion sollte in 
"zahl" 22 stehen.
Aber in temp steht nach der Division offensichtlich -1, da in string[0] 
anschliessend 47 steht obwohl dort eigentlich 50 stehen sollte.

Was mache ich falsch ? Wo ist der Denkfehler?

Danke für Eure Hilfe
Gruss Uli

von Andreas K. (a-k)


Lesenswert?

Die Datentypen fehlen. Ist "zahl" zufällig 8 Bit gross und mit 
Vorzeichen?

von E. B. (roquema) Benutzerseite


Lesenswert?

Bibliotheksfunktion (stdlib.h) verwenden?
1
 void uitoa(unsigned int value, char* string, int radix)
oder ist das oversized?

von Uli S. (pumuckel123)


Lesenswert?

Hallo zusammen, die Variablen sind natürlich vorher initialisiert 
worden:

unsigned char zahl=0;
unsigned char temp=0;

stdlib.h habe ich noch nicht versucht, werde es aber mal probieren !!
Gruss Uli

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.