Ok, die letzte Erkenntnis:

1. ) Die IR-Dioden (Front und seitlich) arbeiten. Mit UartPutc wird was gesendet.
2.) Die Zeichen auf der Gegenseite lassen sich nicht rekonstruieren (empfange mit dem IR-Programmer) - scheint wohl Takt irgendwo noch nicht zu stimmen
3.) Die Abstandsmessung sendet keine IR-Signale

Meine Modifizierung (wegen ATMega16
Code:
uint8_t objekt_sichtbar(uint8_t distance)
{
	uint16_t j,z;

   	DDRD |= (1 << DDD1);   // Port D1 als Ausgang
   	PORTD &= ~(1 << PD1);   // PD1 auf LOW

#if defined(__AVR_ATmega168__)
	OCR2A  = 254-distance;   //OCR2=0xFE ( sehr nahe )
#else
	OCR2  = 254-distance;   //OCR2=0xFE ( sehr nahe )
#endif

	z=0;
	for(j=0;j<30;j++) // loop time: 5ms
	{
		if (PIND & (1 << PD0))z++;
		Sleep(6); // 6*Sleep(6)=1ms
	}
	if (z>=29) return FALSE; // Objekt nicht gefunden
	else return TRUE;

}

// der Rest ist unveraendert, denke ich

uint8_t abstand()
{
	uint8_t k,n;
	
	k=255;
	for(n=0;n<8;n++)
	{
	  if (!objekt_sichtbar(n)) k=n; // solange kein Objekt, Distanz erhoehen
	}  
	return k;
}

int main(void){
   	uint8_t n;
   
   	Init();

	FrontLED(ON);
	StatusLED(OFF);

	n = 0;

   	while(1)
	{   
	   	n=abstand();
			
		if(n!=255)
	   	{
	   		if (n<6) StatusLED(GREEN);
	   		if (n<4) StatusLED(YELLOW);
	   		if (n<3) StatusLED(RED);
	   		if (n<2) BackLED(ON,ON);
			
		}
		Msleep(10);
	}
}
Ich muss ehrlich sein: ich hab noch nicht geschaut, welcher Befehl einen "Beep" über IR-Diode sendet und welcher empfängt. Bin jetzt auch zu müde ...