Auf jeden Fall sieht man schon mal, dass die goto Konstruktion sowas in der Art darstellen soll
Code:
void Justierung() {
  static uint8_t motor = 1;
  
  switch(motor) {
	case 1:
		if (JustPin == HIGH) {
		   // ...
		}
		
		// ...
		
		motor++;
		
		// ...
		break;
	case 2:
	   // Ähnlich für 2. Motor 
	
	case 3:
	case 4:
	case 5:
	case 6:
	
	default:
		// irgendwas tun, wenn alle Motoren fertig
		break;
  }
Dabei wird immer noch viel Code dupliziert. Wahrscheinlich könnte man das, was in einem case-Block steht in eine oder mehrere Funktionen packen, die man dann aus jeden Block mit anderen Parametern aufruft.

Was mir beim Durchsehen aufgefallen ist
Code:
if (JustPin == HIGH)
wie wird JustPin geändert ?

Außerdem scheint da ja ein Timer zugange zu sein. Wahrscheinlich wird da was öfter oder in anderer Reihenfolge aufgerufen, als erwartet.