Mit asuro.h läuft es nicht mehr auf meinem RP6, deshalb ungetestet:
Code:
#include "asuro.h"

unsigned char i, j, k, servo_stellzeit;

void servo(unsigned char winkel0, unsigned char winkel1, unsigned char winkel2)
{
	unsigned int count=0;
	do{
	   count++;

	   if(winkel0){
		PORTB |= (1 << PB0);
	   Sleep(winkel0);
	   }
	   PORTB &= ~(1 << PB0);

	   if(winkel1){
	   PORTB |= (1 << PB1);
	   Sleep(winkel1);
	   }
	   PORTB &= ~(1 << PB1);

	   if(winkel1){
	   PORTB |= (1 << PB2);
	   Sleep(winkel2);
	   }
 	   PORTB &= ~(1 << PB2);

   	Sleep(255-winkel0); Sleep(255-winkel1); Sleep(255-winkel2);
	}while (count<servo_stellzeit);
}

int main(void) {

	Init();
	DDRB |= (1 << PB2) | (1 << PB1) | (1 << PB0);

	do{
		servo_stellzeit=35;
		servo(51, 51, 51);
		servo(90, 90, 90);
		servo(51, 51, 51);
		servo(15, 15, 15);

		servo_stellzeit=2;
		for (i=15; i<88; i+=2) servo(i, 0, 0);
		for (j=15; j<88; j+=2) servo(0, j, 0);
		for (k=15; k<88; k+=2) servo(0, 0, k);
		for (i=90; i>17; i-=2) servo(i, 0, 0);
		for (j=90; j>17; j-=2) servo(0, j, 0);
		for (k=90; k>17; k-=2) servo(0, 0, k);
	}while (1);
return 0;
}