Ето и един код (отново на CCS) за управляването на серво чрез adc модула на микроконтролера 
#device adc=8 // ako adc=10, то долу трябва да е разделено на 1024 
#define min_pulse 500
#define max_pulse 2400
void main(){
int i;
/*
code
*/
set_adc_channel(0); // PIN_A0
for (;;)
     for (i=0;i<50;i++){
          k=read_adc();
          pulse_width=min_pulse + (max_pulse-min_pulse)/256*k;
          output_bit(PIN_A1,1);  //Servo pin High - Pulse Start
          delay_us(pulse_width); 
          output_bit(PIN_A1,0); //Servo pin Low - Pulse End
          delay_us(20000-pulse_width);
      }  
} 
Но имам въпрос- Когато искам да изпратя от друг микроконтролер на къде да се върти, се получава така, че сервото всъщност не реагира на промяната на тримера и "държи" в първоначалната позиция. 
Кодът на получаващият микроконтролер : 
unsigned char k;
for(;;){
       for(i=0;i<50;i++){
          k=getc();
          pulse_width=min_pulse + (max_pulse-min_pulse)/256*((int)k);
        
          output_bit(PIN_A1,1);
          delay_us(pulse_width); 
          output_bit(PIN_A1,0);
          delay_us(20000-pulse_width);
      }   
   
  }
Кодът на изпращащият микроконтролер : 
set_adc_channel(0);
for(;;){
      data=read_adc();
      putc(data);
      delay_ms(20); //да изчака др. микроконтролер да бъде готов 
   }
RS-232 работи до колкото знам добре (тествах го да изпраща 'A' или 'B' и другият обработваше информацията така, като трябва).