Ok, kannst du mir denn sagen, was dann noch falsch sein soll? Ich denke, die Berechnung der Baudrate ist richtig, und auch sonst sollte alles stimmen, oder?

Code:
#ifndef F_CPU
	#define F_CPU 20000000UL
#endif
#ifndef UART_BAUD_RATE
	#define UART_BAUD_RATE 9600UL
#endif

/***************/
int main(void) {
/***************/

  USART_init(UART_BAUD_RATE);

  for(;;) {
    USART_transmit('A');
    _delay_ms(10);
    _delay_ms(10);
    USART_transmit('B');
    _delay_ms(10);
    _delay_ms(10);
  }

/***************/
static void USART_init(unsigned int baud) {    //nochmal genau ansehen und schöner formulieren!
/***************/
  UCSRA=0x00;

  UBRRL = (F_CPU/(16 * baud)) - 1;
  UBRRH=0x00;

  UCSRB = (1 << RXEN) | (1 << TXEN);
}

/***************/
void USART_transmit(unsigned char cData) {  //sendet ein Zeichen ans Terminal
/***************/
	while( !(UCSRA & (1<<UDRE)) ) {
		;//warten, bis der transmit buffer leer ist, so dass wieder übertragen werden kann
	}
	UDR = cData;
}