Effektiver als die von mir beschriebene Lösung geht nicht.
Wenn man sich mal den compilierten Assembler-Code von meinem Programm anschaut, macht es folgendes:
- Das array aus dem Speicher laden - 2 Takte (LDS-Anweisung)
- Ein Bit des Wertes abfragen - 1-3 Takte - (SBRS bzw. SBRC)
- Je nachdem, wie das Ergebnis ausfällt, den PC hochzählen - 2 Takte (RJMP)
Du brauchst also maximal 5 Takte um einen Vergleich zu machen. Diese Operationen benötigst Du auf jeden Fall (Laden - Vergleichen - Verzweigen).
Alles, was Du jetzt noch dazubastelst - welche Operation auch immer das sein mag - benötigt nur zusätzliche Rechenzeit.
Effektiver geht's echt nicht...
Gruß,
askazo
Lesezeichen