www.mikrocontroller.net

Forum: Projekte & Code SDCC und Division


Autor: Uli Schwierzke (pumuckel123)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andreas K. (a-k)
Datum:

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

Autor: E. B. (roquema) Benutzerseite
Datum:

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

Autor: Uli Schwierzke (pumuckel123)
Datum:

Bewertung
0 lesenswert
nicht 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

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.