Hallo

Dein Progamm sollte in einem "Grundgerüst" sein:

Code:
#include "asuro.h" 

int main(void) {

unsigned char sw; 

Init();

do{

sw = PollSwitch() ; 
MotorDir(FWD,BREAK) ; 
MotorSpeed(0, 0) ; 
if (sw & 0x01) 
MotorSpeed(30, 30) ; 
if (sw & 0x02) 
MotorSpeed(50, 50) ; 
if (sw & 0x04) 
MotorSpeed(80, 80) ; 
if (sw & 0x08) 
MotorSpeed(120, 120) ; 
if (sw & 0x10) 
MotorSpeed(160, 160) ; 
if (sw & 0x20) 
MotorSpeed(250, 250) ; 

}while (1);
return 0;
}

Ausserdem:

if (sw & 0x01)

sollte besser

if (sw && 0x01)

heisen. Bei einem & wird bitweise und-verknüpft und das Ergebniss in sw gespeichert. Alle weiteren sw-Abfragen funktionieren dann nicht mehr so wie gedacht. Bei && wird wird nur das Ergebnisse eines logischen Und gebildet und ausgewertet, sw bleibt dabei unverändert. (Das gilt natürlich auch für alle anderen IFs in deinem Code!)

Längerer Programmcode sollte in Code-Tags gepostet werden.

Meine asuro dreht die Rädchen erst bei MotorSpeed()-Werten ab ca. 100.

Gruß

mic