ayuda con este pequeño código

es normal que a hacer una llamada a funciones tipo
serial.Read()
Serial.Write()
digitalWrite(…)
millis()

pierdas mis valores asignados a variables?..

para que esté la cosa un poco clara les pongo el código

//variables a usar
unsigned int t_motor;//milisegundos en abrir el motor
byte comando, bytelow, bytehigh;
byte pos, inbyte; //posición del motor.


//def. para las salidas analogicas
const int bobina1=3;
const int bobina2=2;


void setup() {
       
       //configuramos el puert serial
       Serial.begin(9600);
       
       pinMode(bobina1,OUTPUT);
       pinMode(bobina2,OUTPUT);
 
       }


void loop() {
     
if (Serial.available()>0){
   delay(50);
   comando=Serial.read(); 
   if (comando==99){
                    bytelow=Serial.read();
                    bytehigh=Serial.read();
                    t_motor=bytehigh+bytelow*256;
                    delay(5);
                    home(t_motor);//enviar a la subrutina del home
                    Serial.flush();
                   }
        
      
   if (comando==98){
                   inbyte=Serial.read();
                   move(inbyte);//enviar a la subrutina del home
                    Serial.flush();
                    
                   }

            }//fin del serial.available()
        
  
        
        

}//fin del loop
  
 
//--------------------------------------------------------------  
void home(unsigned int t_total){
int time, time_out;
  
time=millis();
time_out=time+t_total;//en total tarda en recorre 2.2segundos pasamos a miliseg.
  do{
  //motor arrancado a home
  digitalWrite(bobina1,HIGH);
  digitalWrite(bobina2,LOW);
  time=millis();
  }while(time<time_out);
  
  //paramos el motor
  digitalWrite(bobina1,LOW);
  digitalWrite(bobina2,LOW);
  ;  
}
//----------------------------------------------------------------


void move(byte newpos){
 unsigned long time, time_out;
 int sentido;
 long movetime;
 
sentido=newpos-pos;//si fuera newpos 50, y pos(posic. ant)=80 entonces sentido=-30
movetime=sentido*(t_motor/100);

 if (sentido<0){
   
   time=millis();
   time_out=time-movetime;//en total tarda en recorrer pasamos a miliseg.
  do{
  digitalWrite(bobina1,HIGH);
  digitalWrite(bobina2,LOW);
  time=millis();
  }while(time<time_out);


  }
  
  
  if (sentido>0){
   
   time=millis();
   time_out=time+movetime;//en total tarda en recorre 2.2segundos pasamos a miliseg.
  do{
  digitalWrite(13,HIGH);
  
  digitalWrite(bobina1,LOW);
  digitalWrite(bobina2,HIGH);
  time=millis();
  }while(time<time_out);


  }
  
   //paramos el motor
  digitalWrite(bobina1,LOW);
  digitalWrite(bobina2,LOW);
  pos=pos+sentido;
  
  
}

Le veis algún sentido que la variable t_motor se me pierda cuando llamo a las subrutinas?