Umwandlungsalgorithmuß optimieren?
-
Servus, ich schreibe gerade ein Programm für einen Mikrocontroller.
dabei ergibt sich das Problem das ich aus dem AD-Wandler ne 4 stellige Zahl zb
1234 auslese und diese nun in 4 einzelne chars umwandeln muß damit sie auf den 4 segmenten darstellbar sind.
Also 1,2,3,4, wobei als sonderbedingung die Stelle 4 immer 0 ist.
Da der Algorithmus recht lang ist frag ich mich ob sich da noch etwas optimieren läßt?
void ausgabe(int displaywert) { unsigned char seg1_1000=0x0; unsigned char seg2_100=0x0; unsigned char seg3_10=0x0; unsigned char seg4_1=0x0; // Immer = 0 int n; for(n=0; n<=displaywert+1; n++) { if(n>(((seg1_1000)*1000)+1000) && n <= 10000) { seg1_1000++; } } displaywert-=seg1_1000*1000; for(n=0; n<=displaywert+1; n++) { if(n>(((seg2_100)*100)+100) && n <= 1000) { seg2_100++; } } displaywert-=seg2_100*100; for(n=0; n<=displaywert+1; n++) { if(n>(((seg3_10)*10)+10) && n <= 100) { seg3_10++; } } //Ausgabe auf Display }
-
Kennst du Arrays?
void ausgabe(unsigned int display_wert) { unsigned char segments[4] = {0, 0, 0, 0}; display_wert /= 10; for (unsigned int i = 2; display_wert != 0; display_wert /= 10) { segments[i] = display_wert % 10; --i; } // Ausgabe... }
-
void ausgabe(int displaywert) { unsigned char seg1_1000 = displaywert/1000; unsigned char seg2_100 = (displaywert-seg1_1000*1000)/100; unsigned char seg3_10 = (displaywert-seg1_1000*1000-seg2_100*100)/10; unsigned char seg4_1=0x0; // Immer = 0 // Ausgabe auf display // printf ("%c %c %c %c\n", seg1_1000+'0', seg2_100+'0', seg3_10+'0', seg4_1+'0'); }
-
#include <stdio.h> #include <stdlib.h> void CoNvErToR( int num ) { char buf[5] = {0}; itoa( num, buf, 10 ); // Die 10 ist die Basis des gewünschten Zahlensystems. printf( "%c %c %c %c\n", buf[0], buf[1], buf[2], buf[3] ); return; } int main() { CoNvErToR(1234); return 0; }