UART with PC : Reciving absurd characters in PC
Your baud rate divisor seems to select a baud rate of 19200 instead of 9600:

baud = (clock speed) / ( 16 * (UBRR + 1) )


Try to set UBRR_VALUE to 103 and see if your communication gets better.

A proper way would be to define F_CPU and BAUD, and let the macros from setbaud.h do the calculation:

#include &lt;avr/io.h&gt;

#define F_CPU 16000000

static void
uart_9600(void)
{
#define BAUD 9600
#include &lt;util/setbaud.h&gt;
    UBRRH = UBRRH_VALUE;
    UBRRL = UBRRL_VALUE;
#if USE_2X
    UCSRA |= (1 &lt;&lt; U2X);
#else
    UCSRA &amp;= ~(1 &lt;&lt; U2X);
#endif
}