Hallo

ISR (USART0_RX_vect) //USART, Rx Complete
{
Time = UDR0; //UDR0 in Variable 'Time'
UDR0 = Time; //Echo
}

Liest ein Zeichen und sendet es zurück. Wenn du 255 sendest sind die Zeichen "2", "5" und "5". Nun wird der Overflow neu gesetzt:

if (overflow == Time)

Time enthält nun aber nicht wie erwartet 255, es enthält nacheinander die Ascii-Werte der Zeichen: "2", "5" und "5".

Ganz einfacher Lösungsansatz:

volatile unsigned int Time;
ISR (USART0_RX_vect) //USART, Rx Complete
{
Time = UDR0; //UDR0 in Variable 'Time'
UDR0 = Time; //Echo
Time = (1+Time-'0')*25;
}

'0' wäre dann overflow==25, '9' wäre 250.

Steiniger Weg: Die USART-ISR erkennt den Start eines neuen Wertes (der sich aus mehreren Ascii-Zeichen '0'-'9' zusammensetzt), speichert alle zum Wert gehörenden Zeichen bis das Ende erkannt wird. Dann werden die gespeicherten Zeichen in einen Wert umgerechnet und an Time übergeben. Hier könnte ein Ansatz etwa so aussehen:

Code:
volatile unsigned int Time=0;
ISR (USART0_RX_vect)			//USART, Rx Complete
{
	static unsigned char zeichennummer=0; // Zeiger im String
	static unsigned char zeichenkette[4]={0,0,0,0}; // String mit Endekennung '0'!
	unsigned char zeichen;
	zeichen = UDR0;				//UDR0 in Variable 'zeichen' ???

	switch(zeichen)
	{
	   case '*':	zeichennummer=0; break; // Start des Parameters erkannt
	   case '#':	if(zeichennummer==3) // 3 Zeichen im String?
	               {
							Time=atoi(zeichenkette); // Wert berechenen und übergeben
						}
						else
					 	{
					 		zeichennummer=0; // Neustart!
					 		zeichen='!'; // Fehlermeldung senden
					 	}
					 	break;
	   default:		if((zeichen >= '0') && (zeichen <= '9') && (zeichennummer < 3))
	             	{
							zeichenkette[zeichennummer++]=zeichen; // Zeichen im String speichern
					 	}
					 	else
					 	{
					 		zeichennummer=0; // Neustart!
					 		zeichen='!'; // Fehlermeldung senden
					 	}
					 	break;
	}
	UDR0 = zeichen;				//Echo oder Fehler senden
}
(Nicht getestet!)

Der Parameter sollte in dieser Form gesendet werden: "*123#"

* = Startkennung
123 = Wert
# = Endekennung

Gruß

mic