Wenn du dir dein Programm mal in den Bascom-Simulator läst und laufen lässt, wirst du sehen, dass deine Variable "Shoulder_curr_pos" kurz überläuft, dadurch auf 0 zurückspringt und die For-Schleife von vorne losgeht.

Wenn du "Shoulder_curr_pos" als Word anstatt als Byte deklarierst bleibt die For-Schleife bei 255 hängen.

Woher hast du die Syntax für deine For-Schleife?
For Shoulder_curr_pos = Shoulder_curr_pos To Shoulder_goto_pos Step Schritt

For Shoulder_curr_pos = Shoulder_curr_pos macht irgendwie wenig Sinn, da die Bedingung immer erfüllt ist.