sieht nicht schlecht aus, habe nur die überflüssigen klammern in der if-abfrage weggemacht.
es heisst
if(bedingung){aktion}else{aktion}
und nicht
if(bedingung){{aktion}else{aktion}}

es gibt nur ein problem: die funktion sleep(255) wartet etwa 3 milliseknunden, aber der asuro wird länger brauchen um sich um 180 grad zu drehen.

probiers mal damit:

zuerst definierst du noch einen int i am anfang des programms.
dann machst du folgendes an der stelle, wo er sich drehen soll:

for(i=0;i<333;i++){
sleep(255);
}

dann wartet er 333*3ms=ca eine sekunde, bevor er anhält. ob er es in dieser zeit schafft, weiss ich nicht, aber du musst dann mit dem wert für i (der 333) experimentieren biss es hinhaut.

hier der neue code:
Code:
#include "asuro.h"

int main(void)
{   
   unsigned char ktaster;
   
   Init();
   
  
   
   StatusLED(GREEN)
   MotorDir(FWD;FWD);
   MotorSpeed(200,200);
   
   while(1){    
   if(switched==1){
   StatusLED(RED);
   MotorDir(FWD,RWD);
   MotorSpeed(100,100);
   Sleep(255);
   MotorDir(BREAK,BREAK);}
   else{
   StatusLED(GREEN);}
      
      switched=0
   }
   return 0;
}