Tastererkennung kurz / lang in C

Oft kommt es vor, dass man mit einem einzigen Taster zwei (oder mehrere) verschiedene Aktionen in einer Anwendung ausführen möchte. Z.B: Tastendruck kurz = Ein / Aus und Tastendruck lang = eine Lampe oder eine LED dimmen.

Im folgenden Programm wird zwischen einem kurzen und einem langen Tastendruck mit einem Taster unterschieden.
Ein langer Tastendruck dauert hier mindestens 300ms.
Der Taster ist Low-aktiv (schaltet gegen Masse) am PINC7 angeschlossen. Bei einem kurzen Tastendruck geht PB0 und bei einem langen Tastendruck PB1 auf High-Level.

Tastererkennung AVR