The servo code didn't work

There are some problems when setting the registers. You must not use the |= operator, because there are bits set from arduino initializing, that must be cleared. Therefore use the '=' operator to set the control registers.
With a prescaler of 64, TOP must be set to 5000 to get a 20ms refresh rate.
Using 16-bit registers is ok, the compiler handles this correctly.

Try this:

  TCCR1A=(1<<COM1A1)|(1<<COM1B1)|(1<<WGM11);        //NON Inverted PWM 
  TCCR1B=(1<<WGM13)|(1<<WGM12)|(1<<CS11)|(1<<CS10); //PRESCALER=64 MODE=14(FAST PWM)
  pinMode(9,OUTPUT);
  pinMode(10,OUTPUT);
  ICR1=5000;  //fPWM=50Hz

N.B. You can have a better resolution with a prescaler of 8 and a TOP value of 40000.

In remote-controlled model flight, PPM is a mutliplex signal from the receiver that contains the information for all connected servos. Each individual servo receives a pure PWM signal, whereby the servo position does not depend on the pulse-pause ratio, but on the absolute pulse length ( 1..2ms ) with a constant repetition rate of 20ms ( the repetition rate is less important and may vary a bit without changing the servo position ).
And that's exactly what the timer creates. The timer pulses are much more stable than the ISR created pulses of the servo library.