Demora esperando datos del puerto serie

Hola, estoy realizando un proyecto que utiliza RFID. El arduino solo se encarga de la lectura y escritura en la tarjeta, y debe comunicarse mediante puerto serie con otro micro para enviarle lo leido, y recibir que escribir.
La idea del programa con el arduino seria la siguiente
Leer datos de la tarjeta, y enviarlos al otro micro
Recibir los nuevos datos a escribir, y escribirlos en la tarjeta

leer los datos de la tarjeta ya esta solucionado (utilizando la libreria MFRC522)
luego de leer esos datos y enviarlos el programa tendira que estar esperando hasta recibir por puerto serie el/los nuevos datos a escribir, para asi poder escribirlos en la tarjeta.
El problema que estoy teniendo es con quedarme esperando y luego continuar con el programa. Lo que pasa es lo siguiente:
el ardunio lee la tarjeta (y muestra lo leido por puerto serie para probar que todo va bien), luego me pide “ingresar el nuevo dato por puerto serie” al ingresar por puerto serie el nuevo dato no sucede nada hasta la siguiente leida de la tarjeta que es cuando lo muestra.
Como podria solucionarlo? Es decir que se quede esperando a que le llegue el dato, lo cargue en un buffer y siga con el resto del programa no en la siguente lectura de la tarjeta?
Gracias!

void loop() {

  // Prepare key - all keys are set to FFFFFFFFFFFFh at chip delivery from the factory.
  MFRC522::MIFARE_Key key;
  for (byte i = 0; i < 6; i++) key.keyByte[i] = 0xFF;

  //some variables we need
  byte block;
  byte len;
  MFRC522::StatusCode status;

  //-------------------------------------------

  // Look for new cards
  if ( ! mfrc522.PICC_IsNewCardPresent()) {
    return;
  }

  // Select one of the cards
  if ( ! mfrc522.PICC_ReadCardSerial()) {
    return;
  }

  Serial.println(F("**Card Detected:**"));

  //-------------------------------------------

  Serial.print(F("Saldo: "));

  byte buffer1[18];

  block = 2;
  len = 18;

  //------------------------------------------- GET SALDO
  status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &key, &(mfrc522.uid)); //line 834 of MFRC522.cpp file
  if (status != MFRC522::STATUS_OK) {
    Serial.print(F("Authentication failed: "));
    Serial.println(mfrc522.GetStatusCodeName(status));
    return;
  }

  status = mfrc522.MIFARE_Read(block, buffer1, &len);
  if (status != MFRC522::STATUS_OK) {
    Serial.print(F("Reading failed: "));
    Serial.println(mfrc522.GetStatusCodeName(status));
    return;
  }

  //PRINT SALDO
  for (uint8_t i = 0; i < 16; i++)
  {
    if (buffer1[i] != 32)
    {
      Serial.write(buffer1[i]);
    }
  }
  Serial.print(" ");

  //----------------------------------------

  Serial.println(F("\n**End Reading**\n"));


//-----------------------------------------------------
//ACA ES DONDE ESTARIA TENIENDO PROBLEMA 
  Serial.println("ingrese saldo a descontar");
   int i;
   int j;
   int saldo[10]; // almacenar el dato serie  while(!Serial.available())
   int aux=0;
  
   
    while(Serial.available()) 
    {
      saldo[i] = Serial.read();
      i++;
    }
    
      
      for(j=0;j<(i-1);j++)
      {
        if(j==0)
          Serial.println("He recibido: ");
      Serial.write(saldo[j] );
      }
   
    
  delay(1000); //change value if you want to read cards faster

  mfrc522.PICC_HaltA();
  mfrc522.PCD_StopCrypto1();
}
//*****************************************************************************************//

disculpa, el problema lo tienes al ingresar un dato para continuar o quieres hacerlo de manera automática podrías mostrarme la manera en la que lo haces

Sin código es dificil que se te pueda ayudar.
Lee las normas del foro y usa etiquetas (</>) para postearlo debidamente. Mira otros hilos.

Perdon, ahi esta subido el codigo. Puse la lectura de uno de los campos (por si eso llega a traer algun problema) y la parte donde recibo el parametro que quiero modificar indicando //ACA ES DONDE ESTARIA TENIENDO PROBLEMA
Gracias