Im Moment ist bei meinem ASURO incl. US die Odometrie nicht kalibriert, aber probiere das mal so:
Code:
#include "asuro.h" //incl. US

int abstand=0;
int j=0;

void fahren (void)
{
   //EncoderInit();
   Go (200,150);
   Msleep(1000);
   Turn (85,150);
   Msleep(1000);
}

void entfernung(void)
{
  SerWrite("\r\n  --- ultrasonic test ---",29);
  Msleep(1000);

  do
  {
    abstand=Chirp();
    SerWrite("\r\n distanz in cm   ",16);
    Msleep(500);
    PrintInt(abstand);

    if(abstand > 25) 
    {
      StatusLED(GREEN);
      Msleep(500);
      fahren();
    }
    else 
    {
      StatusLED(RED);
      Msleep(500);
      Turn(180,200);
    }
  }
  while(1);
}


int main(void)
{
  Init();
  EncoderInit ();
  
  for (j = 0; j < 8; j++) 
  {
    entfernung();
    StatusLED(YELLOW);
    Msleep(500);
  }

  while(1);
  return 0;
}
Damit läuft er mal in den if- und mal in den else-Zweig, und er schickt ständig Werte auf das Hyperterminal. Damit kommst Du weiter.
Die for-Schleife in main() wird übrigens nur einmal ausgeführt, weil er sich ja in entfernung() in der do/while-Schleife fängt. Das macht bezüglich der Ablauflogik keinen Sinn. Das solltest Du ändern.