(RXCIE0<<1)

das ist verdreht !

while (!(UCSR0A & (1<<RXC0)))
receiv = UDR0;
UDR0=receiv;
PORTB = receiv;


ist in der tat nicht ganz verständlich.
Code:
ISR(USART_RX_vect)
{
PORTB = UDR0;
}
sollte reichen, wenn der interrrupt mal funktioniert