Geschachtelte Funktionen mit Pointern

Gast #665155
Lesenswert?

Guten Abend!!!
Dies ist ein Teil aus meinem Quellcode:

void eingabe(int8_t *stelle, uint8_t *seg_stelle, struct bit *sig_bit)
{
     _delay_ms(ZEIT50);

     *stelle++;

     if(*stelle > 9)  *stelle = 0;

     bcd_seg(stelle, seg_stelle);
};

void bcd_seg(int8_t *bcd, uint8_t *seg)
{
  if(*bcd == 0)    *seg = 0xfc;
  else if(*bcd == 1)  *seg = 0x60;
  else if(*bcd == 2)  *seg = 0xda;
  else if(*bcd == 3)  *seg = 0xf2;
  else if(*bcd == 4)  *seg = 0x66;
  else if(*bcd == 5)  *seg = 0xb6;
  else if(*bcd == 6)  *seg = 0xbe;
  else if(*bcd == 7)  *seg = 0xe0;
  else if(*bcd == 8)  *seg = 0xfe;
  else if(*bcd == 9)  *seg = 0xf6;
};

Kurze Erklärung:

Funktion eingabe bekommt 3 Zeigen übergeben, *stelle enthält einen Wert 
von 0 bis 9, *seg_stelle entsprächende Wert für 7 Segment-Anzeige, 
*sig_bit ist zur Kontrolle (wird hier nicht benutzt). Mit der Hilfe von 
Funktion bcd_seg bekommt seg_stelle durch if-Anweisungen die Werte.

Meine Frage: Kann man das auf diese Weise realisieren? Bitte um die 
Korrektur!

MfG Nicki
Gast #665159
Lesenswert?

Warum so ein riesen Aufriß, um eine Zahl in ein Bitmuster
für eine 7seg Anzeige umzuwandeln?
1
unsigned char lookup[10] = { 0x60, 0xFC, 0xDA .... };
2

3
void eingabe(unsigned char * stelle, unsigned char * seg)
4
{
5
   // ...
6
   *seg = lookup[*stelle];
7
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren