shedepe
07.06.2010, 20:38
Hallo zusammen,
Ich hab hier grad eine Siebensegmentanzeige rumliegen die ich an ein Schieberegister angeschlossen habe. Funktioniert auch alles soweit.
Jetzt frage ich mich jedoch (zu meinem funktionierenden code)
kann man das auch noch besser machen:
Zur Zeit habe ich eine Methode:
void DisplayNumber(uint8_t Number, uint8_t decimalPoint); //Nummer zwischen 0 und 9 wenn decimalPoint != 0 wird der DezimalPunkt angeschaltet
In der Methode sieht das ganze so aus (Nur mal als Beispiel wenn Number==0)
switch (Number)
{
case 0: //Ziffer Null
for(int i = 0; i < 8; i++) //Alle 8 bits durchgehen
{
if(i == 4 || i == 2) //Wenn entsprechendes Segment aus sein soll SERan (PORTC |= (1<<PC7);)
{
if(decimal ==AN) //Wenn der Decimalpunkt An sein soll SERaus (PC7 auf low)
{
if(i==2)
{
SERaus
}
else
{
SERan
}
}
else
{
SERan //Für den Fall dass der Dezimalpunkt nicht an sein soll PC7 auf high --> Segment aus
}
}
else
{
SERaus //Für alle anderen Segmente PC7 auf Low --> Segment an
}
Impuls(); //Schiebe"impuls"
}
break;
//Behandlung der anderen Ziffern
Meine Frage: Ist das Vorgehen so sinnvoll oder sollte ich es komplett anders machen bzw. was könnte ich daran noch optimieren ?
mfg shedepe
Ich hab hier grad eine Siebensegmentanzeige rumliegen die ich an ein Schieberegister angeschlossen habe. Funktioniert auch alles soweit.
Jetzt frage ich mich jedoch (zu meinem funktionierenden code)
kann man das auch noch besser machen:
Zur Zeit habe ich eine Methode:
void DisplayNumber(uint8_t Number, uint8_t decimalPoint); //Nummer zwischen 0 und 9 wenn decimalPoint != 0 wird der DezimalPunkt angeschaltet
In der Methode sieht das ganze so aus (Nur mal als Beispiel wenn Number==0)
switch (Number)
{
case 0: //Ziffer Null
for(int i = 0; i < 8; i++) //Alle 8 bits durchgehen
{
if(i == 4 || i == 2) //Wenn entsprechendes Segment aus sein soll SERan (PORTC |= (1<<PC7);)
{
if(decimal ==AN) //Wenn der Decimalpunkt An sein soll SERaus (PC7 auf low)
{
if(i==2)
{
SERaus
}
else
{
SERan
}
}
else
{
SERan //Für den Fall dass der Dezimalpunkt nicht an sein soll PC7 auf high --> Segment aus
}
}
else
{
SERaus //Für alle anderen Segmente PC7 auf Low --> Segment an
}
Impuls(); //Schiebe"impuls"
}
break;
//Behandlung der anderen Ziffern
Meine Frage: Ist das Vorgehen so sinnvoll oder sollte ich es komplett anders machen bzw. was könnte ich daran noch optimieren ?
mfg shedepe