Abbruch einer Funktion

Hallo, ich bedanke mich schon mal im vorraus =)

Ich stell mir schon seit tagen die frage wie ich eine Funktion während sie abläuft unterbrechen kann zu jeder zeit sobald sich eine Variable ändert. Und zwar soll wenn befehl1 == 1 ist der Motor von Links nach rechts laufen und wenn ich mitten drin die 2 eingebe also befehl1 == 2 ist soll es zu jederzeit abbrechen und den servo laufen lassen. danach soll er seine Position einfach beibehalten vom Motor. ich arbeite grade an einem kleinen plotter der ein bild malen soll, dies ist aber nur der Prototyp für ein größeres CNC Projekt.

habe bisher nicht so viel erfahrung. Ich poste mal den Code hier rein.

// Initialisierung
  // AH_28BYJ48 ( int number_of_steps,
               // int motor_pin_1,
                //int motor_pin_2,
               // int motor_pin_3,
               // int motor_pin_4 );

   // Funktionen
   //void setSpeedRPM(long Speed);
   //void setSpeedHz(long Speed);
   //void step(int number_of_steps);
#include <AH_28BYJ48.h>
const int a = 600;  
const int b = 64*64;
AH_28BYJ48 Motor1(a,4,5,6,7);

#include <Servo.h>
Servo servo;
int pos = 0;
int sa = 100;
int sb = 130;
int serial = 0;
int befehl1 = 0;
int befehl2 = 0;


void setup() 
{
 Serial.begin(9600);
 servo.attach(9);
 servo.write(sa);
 Serial.println("Herzlich Wilkommen");
 Serial.println("");
 delay(2000);
 Serial.println("Hierbei handelt es sich um einen Prototypen");
 Serial.println("");
 delay(2000);
 Serial.println("wollen Sie die X-Achse abfahren, schreiben sie 1");
 Serial.println("wollen Sie den Servo testen, schreiben sie 2");
 
}

void loop() 
{
  if (Serial.available() >0)
  {
    befehl1 = Serial.read();
    if (befehl1 == '1' && befehl1 != '2')
   {
   Motor1.setSpeedHz(500);
   Motor1.step(-a);
   delay(1000); 
   Motor1.setSpeedHz(500);
   Motor1.step(a);
   Serial.println("x-Achse einmale abgefahren");
   }

   if (befehl1 == '2' && befehl1 != '1')
    { 
    Serial.println("startservo");
    delay(500);  
    servo.write(sa);
    Serial.println(sa);
    delay(100); 
    servo.write(sb);
    Serial.println(sb);
    delay(100);
    }
 }
}
  if (befehl1 == '1' && befehl1 != '2')

Doppelt gemoppelt ist nicht besser.

Damit Du jederzeit Serielle "Befehle" entgegennehmen kannst mußt Du auf delay() verzichten, die Zeitsteuerung mit millis() machen (siehe blink without delay - Beispiel in der IDE) und vorsehen bestimmet Steuerzeichen ( NL und CR) die das Terminal verschickt zu ignorieren.

Grüße Uwe