Replacing radio control with micro-controller control
How does the radio controller communicate with the speed control?
To figure this out, I spliced into the wiring between the radio receiver and the speed control and read the signal between the ground (black) and the control wire (white).

In all cases, the wave form was 3.2 V high. They were 10 ms apart. Thanks to (Rigol DS1052E Oscilloscope) for a good tutorial on taking screen shots with my oscilloscope, a Rigol DS1052E.

At 100% reverse, the wave form was 1 ms wide.

At neutral, the wave form was 1.5 ms wide.

At 100% forward, the wave form was 2 ms wide.

How can I imitate the radio receiver's signal with a micro-controller?
How can I specify the signal's height?
I need to step down the 5 V output from the micro-controller to the 3.2 V signal accepted by the speed control. To do this, I used a voltage divider (Voltage divider - Wikipedia).
Vout/Vin = R2/(R1+R2)
or, R1 = (Vin*R2)/Vout - R2
In my case,
Vin = 5 V
R2 = 2000 ohms
Vout = 3.2 V
so, R1 = 1125 ohms
How can I specify the signal's frequency?
To specify the signal's pulse width and frequency, I used the servo library (Servo - Arduino Reference). However, by default, the servo library has one cycle per 20 ms, as against the one cycle per 10 ms required by my speed control. To change the frequency, I followed the advice here (http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1251751699). I went to the servo library in notepad (in my case, it was in C:\Program Files\arduino-1.0\libraries\Servo\Servo.h). I changed the following line from:
#define REFRESH_INTERVAL 20000 // minumim time to refresh servos in microseconds
TO
#define REFRESH_INTERVAL 10000 // minumim time to refresh servos in microseconds
How can I specify the signal's pulse width?
While I was in the configuration file, I noticed that it had minimum and maximum pulse widths that were also different from my speed control. I changed them to better match:
#define MIN_PULSE_WIDTH 544 // the shortest pulse sent to a servo
#define MAX_PULSE_WIDTH 2400 // the longest pulse sent to a servo
TO
#define MIN_PULSE_WIDTH 1000 // the shortest pulse sent to a servo
#define MAX_PULSE_WIDTH 2000 // the longest pulse sent to a servo
I then tried out the library with the Sweep example (http://arduino.cc/en/Tutorial/Sweep), which moves the motor from 100% reverse to 100% forward to 100% reverse and so on.
Getting around throttle neutral protection
When I tried it at first, the green light on the speed control flashed and the motor didn't spin. By looking at the manual, I saw that this indicated that "throttle neutral protection" was activated. This means that the speed control will not engage the motor until the throttle spends a while in the neutral position (http://traxxas.com/sites/default/files/3018R_KC1306-R00%20XL-5%20LVD%20Addm.pdf)
To get around this, I tried switching the starting state from 0 degrees (1000 microsecond pulse width) to 90 degrees (1500 microseconds). I ran into the same issue. So, I gave it 10 seconds in neutral before accelerating to 100% forward. Finally, the motor would spin.