Acht Servos an den LEDs und ADC0/1:

Code:
// Vierbeiniger RP6 (erste Tests des neuen Beines)                24.2.2008  mic

#include "rblib.h"
#include "rblib.c"

#define vli_on  (PORTC|=SL1)
#define vli_off (PORTC&=~SL1)
#define vri_on  (PORTA |= 1)
#define vri_off (PORTA &= ~1)
#define hli_on  (PORTC|=SL2)
#define hli_off (PORTC&=~SL2)
#define hri_on  (PORTC|=SL3)
#define hri_off (PORTC&=~SL3)
#define vla_on  (PORTB|=SL4)
#define vla_off (PORTB&=~SL4)
#define vra_on  (PORTA |= 2)
#define vra_off (PORTA &= ~2)
#define hla_on  (PORTB|=SL5)
#define hla_off (PORTB&=~SL5)
#define hra_on  (PORTB|=SL6)
#define hra_off (PORTB&=~SL6)

uint8_t vli, vri, hli, hri, vla, vra, hla, hra; // Positionen der Servos
uint8_t i;

int main(void)
{
	rblib_init();
	cli();
	TCCR0 =  (0 << WGM00) | (1 << WGM01);					// CTC-Mode
	TCCR0 |= (0 << COM00) | (0 << COM01);					// ohne OCR-Pin
	TCCR0 |=	(0 << CS02)  | (1 << CS01) | (0 << CS00);	// prescaler /8
	TIMSK =  (1 << OCIE0); 										// Interrupt ein
	OCR0  = 9; // 100kHz?

	DDRC |= 0x70;		// LED1-3 auf Ausgang und low
	PORTC &= ~0x70;
	DDRB |= 0x83;		// LED4-6 auf Ausgang und low
	PORTB &= ~0x83;
	//DDRC |= 0x3;		// SCL und SDA auf Ausgang und low
	//PORTC &= ~0x3;
	DDRA |= 3;        // ADC0 und ADC1 auf Ausgang und low
   PORTA &= ~3;
   vli=vla=vri=vra=hli=hla=hri=hra=100;
	sei();
	delay(150);

		vri=120;delay(20);
		vli=80;delay(20);
		hri=120;delay(20);
		hli=80;delay(20);

		vri=80;delay(20);
		vli=120;delay(20);
		hri=80;delay(20);
		hli=120;delay(20);

	while(1){
		vla=90; vra=110; hla=110; hra=90; delay(5);
		vla=70; vra=130; hla=140; hra=60; delay(20);
		//for(i=0; i<40; i++) { vli=120-i; vri=80+i; hli=120-i; hri=80+i; delay(5); }
		vli=80; vri=120; hli=80; hri=120; delay(30);
		vla=90; vra=110; hla=110; hra=90; delay(10);
   	vla=vra=hla=hra=100; delay(5);
		vri=80;delay(5);
		vli=120;delay(5);
		hri=80;delay(5);
		hli=120;delay(5);
	}
	return 0;
}
ISR (TIMER0_COMP_vect)
{
	static uint16_t count=1; // Servoansteuerung

	(count>vli)?vli_off:vli_on;
	(count>vla)?vla_off:vla_on;
	(count>vri)?vri_off:vri_on;
	(count>vra)?vra_off:vra_on;
	(count>hli)?hli_off:hli_on;
	(count>hla)?hla_off:hla_on;
	(count>hri)?hri_off:hri_on;
	(count>hra)?hra_off:hra_on;

	if(count<2000) count++; else count=0;
}
Die Libs dienen nur zum debuggen, mit io.h und interrupt.h sollte es auch funktionieren. Mit der RP6-Lib ist kein Timer mehr frei :(

Ach, fast vergessen: delay() ist 'ne Zählschleife, die Servos brauchen ja auch etwas Zeit um die Positionen anzufahren:
Code:
void delay(uint8_t d)
{
	uint16_t d1, dummy;
	for (d1=d*255; d1>0; d1--) dummy^=d1;
}
Gruß

mic