PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 18F2520 Rechenfehler beim Dividieren mit Rest (%)



stalky13
14.02.2009, 20:28
Hi,

Ich Programmiere mit der MPLAB IDE V7.6 und als Compiler verwende ich C18.
Ich bekomme bei einer Division mit Rest ein Falsches Ergebnis ...


/* D I S P L A Y N U M B E R **************************************************/
void DSP_DrawNumberLeft( static unsigned short numb, static unsigned char len, static unsigned char posx, static unsigned char posy )
{
static unsigned short DrawNumb;
static unsigned char DrawPoint;

//Noch mehr Code

DrawNumb = numb; //Nummer Speichern

//Noch mehr Code

DrawNumb %= 10; //Rest ermitteln

//Noch mehr Code

}

numb bekommt bei der Parameterübergabe der Funktion den Wert 2.
DrawNumb enthält am ende der Funktion aber nicht 2 sonder 233 ... Ich kann leider nicht die Ganze Variable sehen sondern nur das erste Byte weil ich nur über UART debuggen kann. Ein zweites Byte Hinterherschiken wäre so aus dem Stand sehr aufwändig. Trotzdem müsste das Ergebnis 2 sein.
Den Kot drumherum habe ich bereits auskommentiert es steht wirklich nurnoch das in der Funktion was ich oben geschrieben habe.

Wo liegt das Problem? Bzw. weis Jemand wie die Syntax aushehen muss dammit es Funktioniert?

MfG Stalky13

andi.studi
16.03.2009, 22:28
hi,

wenn numb den wert 2 hat,

DrawNumb = numb; //Nummer Speichern

DrawNumb %= 10; //Rest ermitteln

sollte hier in DrawNumb auch 2 stehen programiertechnisch kann ich hier keinen fehler sehen.

kannst es ja eftl etwas eingränzen, schreib doch mal DrawNumb = 2; und schau dir das ergebnis an, damit könntest du eine falsche parameterübergabe ausschließen.

für alles andere müssste man mehr quellcode sehen, den da ist wie gesagt kein fehler zu sehen.
2 sollte 2 bleiben, aus 13 sollte 3 werden und aus 234 wird 4