Hallo

Das return() befindet sich innerhalb der deshalb nicht mehr endlosen while-Schleife:
Code:
#include "asuro.h"

int grad=0;

int main(void)
{

	Init();
	while(1)
	{

		if(PollSwitch()==0)
		{
			MotorDir(FWD,FWD);
			MotorSpeed(100,100);
		}
		else if(PollSwitch()!=0)
			{
				if(grad==0)
				{
					MotorDir(FWD,FWD);
					MotorSpeed(100,0);
					Msleep(200);
					grad = 1 ;
				}
			}
			else if(PollSwitch()!=0 && grad==1)
				{
					if(grad==1)
					{
						MotorDir(FWD,FWD);
						MotorSpeed(0,100);
						Msleep(400);
						grad = 0 ;
					}
				}

		return 0;
	}
}
Ich würde es vielleicht so formulieren:
Code:
#include "asuro.h"

int grad=0;

int main(void)
{
	Init();
	while(1)
	{
		if(PollSwitch()==0)
		{
			StatusLED(GREEN);
			MotorSpeed(100,100);
		}
		else
		{
			if(grad==0)
			{
				StatusLED(RED);
				MotorSpeed(100,0);
				Msleep(200);
				grad = 1;
			}
			else
			{
				StatusLED(YELLOW);
				MotorSpeed(0,100);
				Msleep(400);
				grad = 0;
			}
		}
	}
	return 0;
}
(ungetestet)

Der Ansatz erscheint mir etwas zu einfach.

Gruß

mic