Hi,

ich hab mir deine "Programme" jetzt nicht sehr detailiert angesehen (auch weil einige Sachen Fehlen, u.a. deklaration von BIT1/2/3/4), was mir aber auffällt:
- Du übergibst der Funktion eine Anzahl an Schritten, es werden aber immer 4x so viele gemacht.
- Um den Motor in die andere Richtung laufen zu lassen, reicht es, die (in deinem Fall) Vollschritte einfach rückwärts durchlaufen zu lassen.

Um wirklich die richtige Anzahl an Schritten zu fahren, könnte man eine Statemachine anwenden, das wäre hier eine elegante Lösung. Dann könntest du die Routine sogar in einer ISR ablaufen lassen und so währenddessen noch andere Sachen erledigen.
Wenn das dann noch mit Bitmasken der Steuerausgänge kombiniert wird, hat man eine (wie ich finde) sehr schöne Lösung. Außerdem wäre dann das ändern, sofern nötig, der Steuerausgänge bei einer neueren Version sehr schnell gelöst und man muss nicht lange im Code rumsuchen.

Gruß
Chris