Ich habe das mal etwas umformatiert, damit die Fehler leichter zu finden sind:
Was mir auf den ersten Blick ins Auge springt ist das "while(0)", denn wenn ich mich nicht sehr irre dürfte die Schleife so eigentlich garnicht ausgeführt werden. (0 entspricht ja einem logischen "false")Code:int main(void) { unsigned char t1, t2; Init(); { while(0) { t1 = PollSwitch(); t2 = PollSwitch(); if(t1 == 0 && t2 == 0) { MotorFwd(); FrontLED(ON); BackLED(OFF,OFF); } else if (t1 & 0x38 || t2 & 0x07) MotorRwd(); Msleep(1000); break; } MotorStop(); return 0 ; } }
Was mit dieser Formatierung auch leichter sichtbar wird: im "else if"-Zweig wird nur "MotorRwd()" ausgeführt, die beiden folgenden Befehle jedoch werden, unabhängig vom Zustand deiner Variablen, immer ausgeführt.
Außerdem ist der Code nach "Init()" nochmal in einem Block zusammengefasst, was eigentlich nicht nötig wäre.







Zitieren

Lesezeichen