Hallo Leute, ich möchte eine Zahl --> 999.999 (neunhundert99tausendend999) runterzählen. Die Zahl habe ich vorher per Tastendruck (jede Stelle hoch/runter ok --> nächste Stelle) in ein char-Array eingelesen. Nun ist meine Frage wie ich diese Zahl runterzählen kann... Eine Möglichkeit wäre mit verschachtelten Schleifen zu arbeiten... z.B. do{ Cycles[5] = Cycles[5] - 1; set_cursor(5,1); lcd_data(Cycles[5]); long_delay(100); }while(Cycles[5]!=48); if(Cycles[4]!=48){ Cycles[4] = Cycles[4] - 1; set_cursor(4,1); lcd_data(Cycles[4]); Cycles[5] = Cycles[5] + 9; set_cursor(5,1); lcd_data(Cycles[5]); } Dies auf alle 6 Stelle anzuwenden würde jedoch viel zu lange dauern. Gibt es eine Möglichkeit das Array in eine long Zahl zu wandeln und diese dann einfach per -- Befehl runterzuzählen???? Vielen Dank schonmal für die Antworten!
die Stellen entsprechen ihrer Wertigkeit addieren und das Ergebnisregister (bzw. die Variable) runterzählen. bye Frank
Ja. Die Möglichkeit gibts, genauso wie es hier im Forum [ c ] gibt, um C-Code farblich hervorzuheben.
1 | char digits[4]; |
2 | uint16_t counter = 0; |
3 | uint8_t i; |
4 | |
5 | for (i = 0; i < 4; i++) { |
6 | counter *= 10; |
7 | counter += digits[i]; |
8 | }
|
Sowas in dem Dreh.
Okay aber uint16_t --> 16Bit 2hoch16 = 65.536 Meine Zahl ist aber 999.999 Ich brächte mindestens 17 Bit (-: für das Ergebnisregister
Stefan Z. wrote: > Okay aber uint16_t --> 16Bit 2hoch16 = 65.536 Meine Zahl ist aber > 999.999 Ich brächte mindestens 17 Bit (-: für das Ergebnisregister Und? nimm halt uint32_t ...
super! Es funktioniert anscheinend... Aber leider kann die LCD_Display Funktion so große Zahlen nicht anzeigen. Ich verwende die Funktion lcd_string() aus dem gcc Tuturial --> oder geht das bei euch? char Buffer[20]; zyklen_einlesen(); set_cursor(0,2); lcd_data(Cycles[0]); lcd_data(Cycles[1]); lcd_data(Cycles[2]); lcd_data(Cycles[3]); lcd_data(Cycles[4]); lcd_data(Cycles[5]); uint32_t cycles_neu = 999999; // zum Test der LCD fkt itoa( cycles_neu , Buffer, 10 ); set_cursor(0,1); lcd_string(Buffer);
Das Problem liegt vermutlich eher in "itoa". Probier dein Glück mal mit "ultoa".
ich danke dir --> ultoa hat funktioniert! echt klasse wie schnell man hier im Forum hilfe bekommt! DANKE!!!!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.