Hi vlt. kann ja mal jemand kurz das Programm anschauen. Nach dem ich die einzellnen Programmteile in Unterfunktionen eingeteilt habe geht gar nichts mehr.
Vorher kam wenigstens noch was im Hyperterminal an und die Räder haben sich gedreht (auch wenn im Hyperterminal immer 0.00 xx stand/vlt weiß da ja auch jemand woran das lag)
Die inaktiven LED-Funktionen sind zum Kontrollieren des Programmablaufs
Code:
#include <asuro.h>
#include <string.h> // für strlen


/*Left min/max, right min/max values da minimiert auf acht bit *4 

+00150 *4  =	600			744				//data[0] left
+00222 *4  =	888 
										798
+00190 *4  =	760 		852					//data[1] right
+00236 *4  =	944 

//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//---------------------------------------------------------------------------*/

//Statische Vergabe

#define Triggerlevel 798
#define Hysteresis 15
#define LOW 0
#define HIGH 1
#define einticklaenge 2 	// /10 da 0,2mm		//Gefahrene Strecke bei einem Tick

//Variablenverageb

int speed;									//PWM des Rades
float cmsleft;								//Metre pro Sekunde (Radgeschwindigkeit links
float cmsright;								//Metre pro Sekunde (Radgeschwindigkeit rechts

float cmsleft1;								// Vorherige Geschwindigkeit (für a)
float cmsright1;								// Vorherige Geschwindigkeit (für a)
	
float cmleft;								//Gefahrene Strecke links
float cmright;								//Gefahrene Strecke rechts

float aleft;								//Beschleunigung linkes Rad
float aright;								//Beschleunigung rechtes Rad

unsigned int data [2];  					//Array erstellen mit 2 Speicherzellen für Odometriedaten
											//data [0] links T11
											//data [1] rechts T12 
	
signed int status[2]={0,0};

int Zeit = 1000;							//Zeit in der die Impulse gezählt werden 1s
int Zeit1;								//letzte Zeit zur bestimmung der Zeit dif (für a)

int leftimpuls;							//gezählte Impulse pro Zeit links
int	rightimpuls;							//gezählte Impulse pro Zeit rechts

unsigned int long stopzeit;


//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//Subfunktionen
void Odometrie (void){	
			
			
		//	StatusLED(GREEN);
			leftimpuls = 0;					//Impullse vor Zählvorgang auf null
			rightimpuls = 0;				//Impullse vor Zählvorgang auf null
			
			//Detektierung der Impulse
			stopzeit=Gettime()+Zeit; 	 	//1 sekunde Hell Dunkel Wechsel detektieren

	
	do {
				OdometrieData(data);								//Odo daten bereitstellen
					
					//Wechselt linker Sensor von niedrig auf hoch?
					if((status[0]==LOW)&&(data[0]>Triggerlevel+Hysteresis)){  //Wenn vorher Low und jetz HI dann									 
						status[0] = HIGH;
					//	 FrontLED(ON);											//
					//	 FrontLED(OFF);											//
						 leftimpuls++;											//1 impuls ausgeben
						 }	

					//Wechselt linker Sensor von hoch auf niedrig?
					if((status[0]==HIGH)&&(data[0]<Triggerlevel-Hysteresis)){
						status[0] = LOW;
					//	 FrontLED(ON);
					//	 FrontLED(OFF);
						 leftimpuls++;
						 }
						
					//Wechselt rechter Sensor von niedrig auf hoch?
					if((status[1]==LOW)&&(data[1]>Triggerlevel+Hysteresis)){
						status[1] = HIGH;
					//	 StatusLED(GREEN);
					//	 StatusLED(OFF);
						 rightimpuls++;	
						 }
 
					//Wechselt rechter Sensor von hoch auf niedrig?
					if((status[1]==HIGH)&&(data[1]<Triggerlevel-Hysteresis)){
						status[1] = LOW;
					//	 StatusLED(GREEN);
					//	 StatusLED(OFF);
						 rightimpuls++;	
						 }
			
			} while (stopzeit>Gettime());
			return;}			//das ganze bis Zeit um (1s)
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
void Auswertung (void){
				
			//	BackLED(ON,OFF);

//Auswertung der Impulse
								
								
				//Zurückgelegter Weg
				cmright = (rightimpuls  *(einticklaenge /10)); // /5 da Übersetzungsverhältniss 1/5
				cmleft	= (leftimpuls  *(einticklaenge /10));
				
				//Geschwindigkeit
				cmsright = cmright * (Zeit/1000);
				cmsleft = cmleft * (Zeit/1000);	//da ms
				
				//Beschleunigung
				aright = (cmsright-cmsright1) / (Zeit-Zeit1);
				aleft = (cmsleft-cmsleft1) / (Zeit-Zeit1);
					
				Zeit1 = Zeit;			//jetzige Zeit Zwischenspeichern für a beim nächsen turn
				cmsright1 = cmsright;	//jetzige Geschwindigkeit Zwischenspeichern für a beim nächsen turn
				cmsleft1 = cmsleft;		//jetzige Geschwindigkeit Zwischenspeichern für a beim nächsen turn


		//	BackLED(OFF,OFF);
			
return;}
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
void Ausgabe (void){
//Ausgabe
		//	BackLED(OFF,ON);
			
			//rechts
			SerPrint("Rechtes Rad    ");
			PrintFloat(cmright,2,2);
			SerPrint (" cm    ");
			PrintFloat(cmsright,2,2);
			SerPrint(" cm/s"    );
			PrintFloat(aright,2,2);
			SerPrint(" cm/s²");
			
			//Zeilenwechsel zwischen rechts und links
			SerPrint("\n\r\n\r");
			
			//links
			SerPrint("Linkes Rad    ");
			PrintFloat(cmleft,2,2);
			SerPrint (" cm    ");
			PrintFloat(cmsleft,2,2);
			SerPrint(" cm/s    ");
			PrintFloat(aleft,2,2);
			SerPrint(" cm/s²");
			
			//2*absatz
			
			SerPrint("\n\r\n\r\n\r\n\r");
		//	BackLED(OFF,OFF);
			
			return;}
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
void Nullen_Sekunderwerte_a (void){

		//	StatusLED(RED);

		Zeit1 = 0 ;
		cmsright1 =0;
		cmsleft1 =0;
		
		//	StatusLED(OFF);
			
return;}	
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
int main(void)
{
BackLED(OFF,OFF);							//alle LED werden im Programm zur Veranschaulichung genutzt
StatusLED(OFF);								//d.h. wo bin ich im Prog. die Backeled´s sind aus da Odometrie an
	

	Init();
	while(1){ 
//  StatusLED(OFF);
//-----------------------------------------------------------------------------
//Intro für Hyperterminal
//----------------------------------------------------------------------------- 
SerPrint("\t\t\tTelemetriedaten\n\r\n\r");

//Überschrift im Hyperterminal für Vorwärts

SerPrint("\t\tVorwärts\n\r\n\r");											
//----------------------------------------------------------------------------- 
//Los gehts 			beschleunigen
//----------------------------------------------------------------------------- 
	MotorDir(FWD,FWD);					//Richtung festlegen
		
	Nullen_Sekunderwerte_a();
	
	StatusLED(GREEN);
	
	//FrontLED(ON);
	
	for (speed=80;speed<245;speed +=10){   //Geschwindigkeit von 80 auf 255 in 10er schritten speed kleiner 245
		MotorSpeed(speed,speed);			//Geschwindigkeit einlesen
					
			Odometrie();			
			
			Ausgabe();
				
			Ausgabe();			
			}
//----------------------------------------------------------------------------- 
//Langsamer werden
//----------------------------------------------------------------------------- 
		Nullen_Sekunderwerte_a();
	 
		for (speed=255;speed>85;speed -=10){
		MotorSpeed(speed,speed);
			
			Odometrie();			
			
			Ausgabe();
				
			Ausgabe();	
			}		
//-----------------------------------------------------------------------------
//Rückwärts
//----------------------------------------------------------------------------- 


//Überschrieft im Hyperterminal

SerPrint("\t\t\t\tRückwärts\n\r\n\r");
//----------------------------------------------------------------------------- 
//Los gehts 			beschleunigen
//----------------------------------------------------------------------------- 	
		MotorDir(RWD,RWD);
		
		Nullen_Sekunderwerte_a();
		
	for (speed=80;speed<245;speed +=10){
		MotorSpeed(speed,speed);
						
			Odometrie();			
			
			Ausgabe();
				
			Ausgabe();
			}		
//----------------------------------------------------------------------------- 
//Langsamer werden
//----------------------------------------------------------------------------- 
	Nullen_Sekunderwerte_a();
		
	for (speed=255;speed>85;speed -=10){
		MotorSpeed(speed,speed);			
			
			Odometrie();			
			
			Ausgabe();
				
			Ausgabe();	
			}	
		} 		
		MotorSpeed(0,0);	
		return 0;}
Danke schon mal im Voraus