Tja, leider geht's immer noch nicht, sieht jetzt folgendermaßen aus :
Code:
void initinterface(void)

{
	DDRA=0;
	DDRB |= 15;
	PORTB |= (1<<WE);
	PORTB |= (1<<RE);
	PORTB &= ~(1<<LE_high);
	PORTB &= ~(1<<LE_low);
}

void writemem(unsigned int addr, unsigned char value)
{
	PORTB |= (1<<WE);
	PORTB |= (1<<RE);
	
	DDRA=0xff;
	
	PORTA = (addr / 256);
	PORTB |= (1<<LE_low);
	_delay_ms(ws);
	PORTB &= ~(1<<LE_low);

	PORTA = (addr & 255);	
	PORTB |= (1<<LE_high);
	_delay_ms(ws);
	PORTB &= ~(1<<LE_high);

	PORTA = value;
	PORTB &= ~(1<<WE);
	_delay_ms(ws);
	PORTB |= (1<<WE);
	DDRA=0;
}

unsigned char readmem(unsigned int addr)
{
	unsigned int value;

	PORTB |= (1<<WE);
	PORTB |= (1<<RE);
	
	DDRA=0xff;
	
	PORTA = (addr / 256);
	PORTB |= (1<<LE_low);
	_delay_ms(ws);
	PORTB &= ~(1<<LE_low);

	PORTA = (addr & 255);	
	PORTB |= (1<<LE_high);
	_delay_ms(ws);
	PORTB &= ~(1<<LE_high);

	DDRA=0;
	PORTA=0;
	PORTB &= ~(1<<RE);
	_delay_ms(ws);
	value = PORTA;
	PORTB |= (1<<RE);
	return value;
}
sowie
Code:
void memtest(void)
{
	unsigned int addr;
	unsigned char value;
	initinterface();
	
	for (addr=0;addr<32767;addr++)
	{
		writemem(addr,42);
		value=readmem(addr);
		uart_putc(value);
				
	}
}
Irgendwie steh ich aufm Schlauch.....