Es gibt doch sehr viele Threads darüber...

Hier eine Möglichkeit:

für char:
Code:
void zeichen_senden(char zeichen)
{ 
     while (!(UCSRA & (1<<UDRE))); 
     UDR = zeichen; 
}
für string:
Code:
void string_senden(char *string) 
{ 
     while (*string) 
     { 
         while (!(UCSRA & (1<<UDRE))) 
         {} 
         UDR = *string++; 
     } 
}
Init für Atmega 32:
Code:
void usart_init(void)
{
     /* Baudrate: 115200*/
     UBRRH  = 0;                               
     UBRRL  = 7;
	 UCSRB = (1<<RXCIE)|(1<<RXEN)|(1<<TXEN); 
	 UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);                             
}
Gruß
Stefan