ich hab's jetzt mal so probiert:
hab außer RXD und TXD noch eine Verbindung zwischen den beiden Contoller hergestellt.
Jetzt setze ich den einen Pin high und der Sender soll das erste Byte schicken. Danach wieder low und beim 2. high soll er das 2. Byte schicken (der Sender zählt die Anzahl der highs/ Impulse mit).
Das funktioniert so aber nicht, mein Display zeigt die beiden Werte abwechseln an.

Code vom Sender:

Code:
void uart_putc(unsigned char zahl)
{
    while (!(UCSRA & (1<<UDRE)))  /* warten bis Senden moeglich */
    {
    }
    UDR = zahl;                      /* sende Zeichen */
}
int main(void)
{
		//Steuerleitung
		DDRA  &= ~(1<<DDA6);		//Eingang
		
		//init UART
		UBRRH  = 0;                             // Highbyte ist 0
		UBRRL  = 3;                            // Lowbyte ist 51
		UCSRB |= (1<<TXEN);		//auf senden gestellt
		UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); 
		
		unsigned char Bsp1 = 43;
		unsigned char Bsp2 = 78;
		int i = 0;
		
	for( ; ; )
	{	
		if(i==0)
		{
			if (PINA & (1<<PINA6))
			{
				uart_putc(Bsp1);
				i=1;
			}
		}
		else if (i==1)
		{
			if (PINA & (1<<PINA6))
			{
				uart_putc(Bsp2);
				i=0;
			}
		}
	}
	return 0;
}
hier der Code vom Empfänger:

Code:
unsigned char uart_getc(void)
{
    while (!(UCSRA & (1<<RXC)))
	{
	} 								// warten bis Zeichen verfügbar
    return UDR;                    // Zeichen aus UDR zurueckgeben
}
int main(void)
{
	lcd_init(LCD_DISP_ON);	//Display
	lcd_clrscr();
	
	//init UART
	UBRRH  = 0;                             // Highbyte ist 0
	UBRRL  = 3;                            	// Lowbyte ist 51
	UCSRB |= (1<<RXEN);					//auf empfangen gestellt
	UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
	
	//Steuerleitung
	DDRD |= (1<<PD2);		//Ausgang
	
	
	char buffer1[6];
	char buffer2[6];
	int a;
	int b;
	
	while(1)
	{
		
		PORTD |= (1<<PD2);
		a = uart_getc();
		PORTD &= ~(1<<PD2);
		
		
		PORTD |= (1<<PD2);
		b = uart_getc();
		PORTD &= ~(1<<PD2);
		
		itoa( a, buffer1, 10 );
		lcd_gotoxy(0, 0);
		lcd_puts(buffer1);
		
		itoa( b, buffer2, 10 );
		lcd_gotoxy(0, 1);
		lcd_puts(buffer2);
		
		
	}
	return 0;
}