Strasznie ten kod zagmatwany. Nie możesz użyć "switch" i "case"? Nie ma schematu a z kodu nie chce mi się zgadywać ile jest led, przypuśćmy, że są 3
oczywiście należy dopisać case 3, 4.. wygaszające zaświecone ledy. To samo robisz dla drugiego kierunku. W przerwaniu np 200ms rozstrzygasz czy i jaki kierunek jest włączony i wywołujesz prawo() lub lewo(). Jeśli nie wybrano żadnego kierunku to wygaszasz wszystkie ledy. Kod będzie bardziej przejrzysty przez co trudniej popełnić błąd a jeśli się go zrobi to łatwiej go znaleźć.
Kod:
void prawo(void){
switch( krok )
{
case 0: led1on(); break;
case 1: led2on(); break;
case 2: led3on(); break;
}
if( ++krok >= 3 ) krok=0;
}