ich verstehe es nicht:

zwei programme, hier färt der asuro geradeaus:
Code:
#include "asuro.h"  // bitte die neue Datei benutzen 
                    // asuro.h und asuro.c vom 31.03.05 

#define aus MotorDir(BREAK,BREAK) 
#define go {MotorSpeed(150,150);MotorDir(FWD,FWD);} 
#define backturn { MotorSpeed(150,250);MotorDir(RWD,RWD);Msleep(1000);} 

/************************************************************************************* 

  ASURO discovers your apartment 

  program made by stochri july, 2005 

*************************************************************************************/ 

int speed() 
{ 
   int rightspeed,leftspeed; 
   int leftold,rightold; 

   Encoder_Set(0,0);      // reset encoder 


   leftold=encoder[LEFT]; 
   rightold=encoder[RIGHT]; 
   Msleep(300); 
   leftspeed=encoder[LEFT]-leftold; 
   rightspeed=encoder[RIGHT]-rightold; 

   //SerWrite("  speed Left,Right ",19); 
   //PrintInt(leftspeed); 
   //PrintInt(rightspeed); 
   return leftspeed+rightspeed; 
} 

int main(void) 
{ 
   int n,v,nullspeed; 

   Init(); 
   Encoder_Init(); 
   StatusLED(OFF); 
   SerWrite("\n\rASURO OK\n\r",8); 

   go; 
   Msleep(500); 

   nullspeed=speed()-10; 

   while(1) 
   { 
      v=speed(); 
      SerWrite("\n\r speed ",9); 
      PrintInt(v); 

      if(v<nullspeed) 
      { 
         backturn; 
         go; 
         Msleep(500); 
      } 

   } 
   return 0; 
}
das zweite (jetzt das richige), hier zieht er beim vorwärtsfahren nach rechts:
Code:
/**************************************************************************
 *
 * File Name:   kollisiontest.c
 * Project  :   ASURO
 *
 * Description: Kollisionstest mit Hilfe der Tastensensoren
 *
 * Ver.     Date         Author               Comments
 * -------  ----------   -----------------    -----------------------------
 * 1.0      10.09.2005   Peter                initial build
 * 1.1      08.01.2006   Peter                2x PollSwitch + Vergleich, 
                                              anstelle 8x PollSwitch
 * 
 * benoetigt die modifizierte Asuro Bibliothek 'asuro.c' 
 * von waste, stochri und andun. Zu finden bei www.roboternetz.de
 */
/***************************************************************************
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   any later version.                                                    *
 ***************************************************************************/

#include "asuro.h"

/* Um eventuelle Unterschiede zwischen linken und rechtem Motor auszugleichen 
 * definieren wir 2 Werte für fullspedd links und rechts
 */
#define FULL_L 125    /* Fullspeed linker Motot */
#define FULL_R 125    /* Fullspeed rechter Motor */

/* Motor vorwärts */
void MotorFwd(void)
{
  MotorDir(FWD,FWD);
  MotorSpeed(FULL_L,FULL_R);
}

/* Motor rückwärts */
void MotorRwd(void)
{
  MotorDir(RWD,RWD);
  MotorSpeed(FULL_L,FULL_R);
}

/* Motor rückwärts Links */
void MotorRwdL(void)
{
  MotorDir(RWD,RWD);
  MotorSpeed(FULL_L,0);
}

/* Motor rückwärts Rechts */
void MotorRwdR(void)
{
  MotorDir(RWD,RWD);
  MotorSpeed(0, FULL_R);
}

/* Motor stop */
void MotorStop(void)
{
  MotorSpeed(0,0);
}

int main(void)
{
  unsigned char t1, t2;

SerWrite("\n\r  kollision_wiki_2007_02_19 ",29); // wer bin ich
  Init();
  while(1)
  {
    t1 = PollSwitch();
    t2 = PollSwitch();
    if(t1 == 0 && t2 == 0)         /* keine Taste */
    {
      MotorFwd();          /* vorwärts fahren */
      FrontLED(ON);
      BackLED(OFF,OFF);
    }
    else if (t1 && t2 && t1 == t2)
    {
      MotorStop();
      if(t1 & 0x07) /* Tasten links gedrückt? */
      {
        MotorRwdL();       /* Rückwärtskurve links fahren */
        FrontLED(OFF);
        BackLED(ON,OFF);
      }
      if (t1 & 0x38) /* Tasten rechts gedrückt? */
      {
        MotorRwdR();       /* Rückwärtskurve rechts fahren */
        FrontLED(OFF);
        BackLED(OFF,ON);
      }
      Msleep(1000);        /* 1 Sekunde fahren */
    }
  }
  return 0;
}
woran kann das liegen?