The way to really get some speed is to send two bytes only. The TXregister is copied to the transmit shift register one clock cycle after you load the TX register, then the TX register can be loaded immedately again. Your routine can proceed while the bytes are being sent.

If you send more than two bytes, your routine has to wait until all but the last two bytes are shifted out.

Sending two bytes takes only microseconds (in program time), while sending more than two bytes takes those same microseconds + ((number of bytes - 2)* byte send time).

Another way to make things go fast - as Tenaja has said, don't use the ADCIN command. Instead, do it manually.

1. Set up the ADC channel and start the conversion.
2. Send some data.
3. Read the result of the conversion you started in step 1.
4. Set up the ADC channel and start the conversion.
5. Send some data.
7. Read the result of the conversion your started in step 4.
8. Go back to step 1.