Hallo Daniel

Ich hab mich auch damit beschäftigt. Ich benutze ebenfalls einen Mega8 zum Experimeentieren.

Hier mal 2 Beispiele

Code:
#include <stdlib.h>
#include <avr/io.h>

void uart_init (void);
void uart_transmitt (unsigned char data);
void uart_puts (char *s);

/* Initialisierung des UARTs für Mega8, F_CPU = 8 MHz; Baud = 9600*/
void uart_init (void)
{
	UCSRB |= (1 << TXC);
	UCSRC |= ((1 << URSEL) | (3 << UCSZ0));
	UBRRH = 51;
	UBRRL = 25;
}

void uart_transmitt (unsigned char data)
{
	while (!(UCSRA & (1 << UDRE)))
		UDR = data;
}

void uart_puts (char *s)
{
    while (*s)
    {   /* so lange *s != '\0' also ungleich dem "String-Endezeichen" */
        uart_transmitt(*s);
        s++;
    }
}

int main (void)
{
	uart_init();
	uart_transmitt('a');
	return(0);
}
2. Beispiel mit Hilfe der Procyon Lib

Code:
#include <stdlib.h>
#include <avr/io.h>
#include "uart.h"
#include "rprintf.h"

int main (void)
{
	int i = 5;
	uint16_t a;

	uartInit();
	uartSetBaudRate(9600);
	
	rprintfInit(uartSendByte);
	rprintf("TEST %d", i);	
	
	for(;;)
	{}
	
	return(0);
}
Das Empfangen von Daten verstehe ich selbst noch nicht. Schau dir mal das GCC-Tutorial auf www.mikrocontroller.net an. Das hat mir sehr geholfen.

mfg Robert