Forum: Mikrocontroller und Digitale Elektronik Funktion vereinfachen


von Luki (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Zusammen

Ich würde gerne den Code im Anhang vereinfachen, am liebsten die 
Funktion parametrisieren. Denn diese Funktion enthält noch 6 weitere 
Taster (welche ich nun nicht im Code beigelegt habe, da sie sehr quasi 
identisch sind) abfragen die im gleich Programmiert sind, jedoch ist der 
inhalt der If verzweigungen immer leicht anderst. Ansonsten Funktioniert 
das Programm so wie es sollte. Es geht hier auch wirklich nur um diese 
Funktion.

Mein Vorschlag:

void ReadT( bool* Pushed,  long* Timeout, int PortBit, int*Mseconds )
{
  if( *Pushed)
  {
    *Pushed=false;

    if( Status==Zero)
    {
      PORTB|= _BV( PortBit);
      *Timeout= Timer()+ *Mseconds;
    }

                if (Status==One)
                {
                 ....
                }
                ...

  }
}

Was denkt ihr, bin da auf dem richtigen Weg? oder habt ihr bessere Ideen 
wie sich die Funktion vereinfachen lässt ohne das ich den code am 
schluss x-mal kopieren muss?

Vielen Dank.

von Chris D. (m8nix)


Lesenswert?

Hi Luki,

> Ich würde gerne den Code im Anhang vereinfachen, am liebsten die
> Funktion parametrisieren.

.... und warum tust Du es dann nicht... weiter?
Led(Nr, X);
State(Condition, Y);
Timeout(Timer, Time);

Dein >"if(Status==One Two Three)"< Konstukt ist ziemlich kompliziert, 
versuchs mal mit switch/case.

von Forist (Gast)


Lesenswert?

Luki schrieb:
> jedoch ist der inhalt der If verzweigungen immer leicht anderst.

Ja verflucht noch mal, wie soll dir hier jemand verraten können, wie es 
sich vereinfachen läßt, wenn du nicht verräts "wie anders".

Normalerweise würde ich so ein Zeugs immer über Arrays laufen lassen und 
nur mit dem Index arbeiten, aber wer weiss, ob das mit dem Inhalt 
deiner geheimen If-Verzweigungen die Sache vereinfachen würde.

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
Noch kein Account? Hier anmelden.