Hi,
hier mal ein Testprogramm. Ich hab zwei Leds an den Ports Portc2 und Portc3. Du kannst au ne andere Auswertung machen anstelle des An- und Ausschaltens der Leds. Bei mir läuft's mit HTerm, AVRTem usw...
Einstellungen: Baudrate: 9600, Databits: 8, Stopbits: 1, Parity: None

Code:
/*
Testprogramm:
Wartet auf Daten, wertet sie aus und gibt anschließend das
Ergebnis mittels zwei LEDs an Portc 2 und 3 aus.
Autor: Michael
Datum: 18.08.06
*/

//Header einbinden
#include <avr/io.h> 
#include <avr/interrupt.h> 
#include <avr/signal.h>

//Takt einstellen
#define F_CPU 16000000
//Baudrate angeben
#define USART_BAUD_RATE 	9600 
//Buadrate ausrechnen
#define USART_BAUD_SELECT 	(F_CPU/(USART_BAUD_RATE*16l)-1) 

//Variable für den Empfang anlegen
volatile char zeichen;

//Methode zum initialisieren
void init(){
	//Empfangsbit setzen
	UCSRB |= (1<<RXEN);
	//Empfangsinterrupt setzen
	UCSRB |= (1<<RXCIE);
	//Ausgerechneter Baudratewert ins Register schreiben
	UBRRL = (unsigned char) USART_BAUD_SELECT;
	DDRC  = 0xFF;
}

SIGNAL(SIG_UART_RECV){
	//Empfangsbuffer auslesen
	zeichen = UDR;
	//Irgendwas mit dem empfangenen Zeichen anstellen
	//Hier ein Vergleich:
	if(zeichen == 'a'){
		PORTC = (1<<PC2);
	}
	else{
		PORTC = (1<<PC3);
	}
}

int main(void){
	//Global Interrupts aktivieren
	sei();
	//Initialisierungmethode aufrufen
	init();
	//Endlosschleife
	while(1){
	}
}
Gruß Michi

[Edit] Da das Programm in einer Endlosschleife ist, wertet es kontinuierlich die Daten aus und zeigt das Ergebnis an [/Edit]