Control reverse motor DC

i'm using one Radio Transceiver, for Radio Receiver and finally come for Arduino. Arduino map data and give on outputs for H-Bridge.
My range of Transceiver it's 0 - 1024, and that range control PWM. 500 - 1024 forward and 450 - 0 backward.
My problem is:
When the engine of motor is turning to right, he can't turning for left if he don't stop. Anda i need program to Wait the motor stop to reverse turning.
Look the program:

/*
Projeto Slider TCC - Bancada 4
Integrantes do grupo: Brenno Rodrigues
Fernando Henrique
Jeferson Vicente Ferreira
Jonatas Souza
Marcos Danilo
Rodolfo Takeshita

Controle Quanum Aeromodelismo
Arduino UNO e Ponte H dupla

*/

//variáveis de entrada
int ch1_direcao ; // declarando variáveis
int ch2_frente_tras;
int ch3_liga;
//variáveis de saida
const int DIR1 = 3; //motor da direita direção
const int PWM1 = 9; //motor da direita liga e desliga
const int DIR2 = 10; //motor da esquerda direção
const int PWM2 = 11; //motor da esquerda liga e desliga
const int FR = 4;// Freio
//variáveis auxiliares
int volante;
int aceleracao;
int velocidade;
int freio;

//setup inicial
void setup() {

pinMode(5, INPUT); // Portas de entrada
pinMode(6, INPUT);
pinMode(7, INPUT);

Serial.begin(9600); // Faixa de leitura
pinMode(DIR1, OUTPUT); //
pinMode(PWM1, OUTPUT);
pinMode(DIR2, OUTPUT);
pinMode(PWM2, OUTPUT);
pinMode(FR, OUTPUT);

}

//programa
void loop() {
ch1_direcao = pulseIn(5, HIGH); // faz a leitura do canal 1
ch2_frente_tras = pulseIn(6, HIGH); // faz a leitura do canal 2
ch3_liga = pulseIn(7, HIGH); //faz a leitura do canal 3

volante = map(ch1_direcao, 1080, 2060, 0, 1024); //mapeando o canal 1 de 0 a 1024 de range
aceleracao = map(ch2_frente_tras, 1170, 2050, 0, 1024); //mapeando o canal 2 de 0 a 1024 de range

if (ch3_liga == HIGH) { //Freio
digitalWrite(DIR1, LOW);
digitalWrite(PWM1, LOW);
digitalWrite(DIR2, LOW);
digitalWrite(PWM2, LOW);
digitalWrite(FR, LOW);
}

if (500 > aceleracao < 400){ //Slider parado
digitalWrite(DIR1, LOW);
digitalWrite(PWM1, LOW);
digitalWrite(DIR2, LOW);
digitalWrite(PWM2, LOW);
digitalWrite(FR, HIGH);
}
if ((aceleracao > 450 && aceleracao < 500 && volante > 600 )){ // Slider 360 a direita
velocidade = map(volante, 600, 1024, 0, 254); //controla a velocidade
digitalWrite(DIR1, HIGH);
analogWrite(PWM1, velocidade);
digitalWrite(DIR2, LOW);
analogWrite(PWM2, velocidade);
digitalWrite(FR, HIGH);
}
if ((aceleracao > 450 && aceleracao < 500 && volante < 350 )){ // Slider 360 a esquerda
velocidade = map(volante, 0, 350, 254, 0); //controla a velocidade
digitalWrite(DIR1, LOW);
analogWrite(PWM1, velocidade);
digitalWrite(DIR2, HIGH);
analogWrite(PWM2, velocidade);
}

if (aceleracao > 500 && volante < 600 && volante > 350 ){ //Slider pra frente
velocidade = map(aceleracao, 500, 1024, 0, 254); //controla a velocidade
digitalWrite(DIR1, HIGH);
analogWrite(PWM1, velocidade);
digitalWrite(DIR2, HIGH);
analogWrite(PWM2, velocidade);
digitalWrite(FR, HIGH);
}
if (aceleracao > 500 && volante > 600 ){ // Slider para frente a esquerda
velocidade = map(aceleracao, 500, 1024, 0, 254); //controla a velocidade
digitalWrite(DIR1, HIGH);
analogWrite(PWM1, velocidade);
digitalWrite(DIR2, LOW);
digitalWrite(PWM2, LOW);
digitalWrite(FR, HIGH);
}
if (aceleracao > 500 && volante < 350 ){ // Slider para frente a direita
velocidade = map(aceleracao, 500, 1024, 0, 254); //controla a velocidade
digitalWrite(DIR1, LOW);
digitalWrite(PWM1, LOW);
digitalWrite(DIR2, HIGH);
analogWrite(PWM2, velocidade);
digitalWrite(FR, HIGH);
}

if ((aceleracao < 450 && volante < 350 )){ // Slider para tras a direita
velocidade = map(aceleracao, 500, 1024, 254, 0); //controla a velocidade
digitalWrite(DIR1, LOW);
digitalWrite(PWM1, LOW);
digitalWrite(DIR2, LOW);
analogWrite(PWM2, velocidade);
digitalWrite(FR, HIGH);
}
if ((aceleracao < 450 && volante > 600 )){ // Slider para tras a esquerda
velocidade = map(aceleracao, 500, 1024, 254, 0); //controla a velocidade
digitalWrite(DIR1, LOW);
analogWrite(PWM1, velocidade);
digitalWrite(DIR2, LOW);
digitalWrite(PWM2, LOW);
digitalWrite(FR, HIGH);
}

if ((aceleracao < 400 && volante < 600 && volante > 350)){ // Slider pra tras
velocidade = map(aceleracao, 500, 1024, 254, 0); //controla a velocidade
digitalWrite(DIR1, LOW);
analogWrite(PWM1, velocidade);
digitalWrite(DIR2, LOW);
analogWrite(PWM2, velocidade);
digitalWrite(FR, HIGH);
}

Serial.print("Volante:"); // Canal 1
Serial.println(volante); // Centro 512

Serial.print("Aceleracao:"); // Canal 2
Serial.println(aceleracao); // centro 512

// Fim da programação