So ich hab jetzt hier mal einen Ansatz den ich auf meinem ATMega 32 mit 14745600Mhz programmiert habe:

Code:
volatile unsigned char tim0=0;
volatile unsigned char c=0;
volatile unsigned char data=0b10100001;

ISR(TIMER0_OVF_vect){
	TCNT0=249;//alle 3,75µs
//bei TCNT0 =0 tim0 wird in fosc/8 schritten hochgezählt! 0,54µs

//Clockleitung Toggeln	
	PORTB^=(1<<SCK);
//Sorgt dafür, das immer erst nach einmal High low an der CLOCKleitung üder die Datenleitung das nächste Bit rausgegeben wird
	if(tim0==0){
		tim0++;		
	//Data wird ausgegeben
		if(data&(1<<c)) {PORTB|=(1<<MOSI); }else {PORTB&=~(1<<MOSI);}
		if (c<7) {
		//damit beim nächsten aufrufen das nächste Bit rausgegeben wird
			c++;
		} else {
		//wenn das Byte raus is wird das nächste gesendet, wenn das auch gesendet wurde wird der interrupt abgeschalten und ein Beendet signal ans LCD ausgegeben(eine 1)
			c=0;
			if (data==0b10100001) {data=0b01011110;} else {TIMSK&=~(1<<TOIE0);c=0;LCD_ausgabe_int(0,3,1);}
		}
	}else{
		tim0=0;
	}
	
}

Der Timer ist mit einem Prescaler von 8 eingestellt und wird einfach nach einer kurzen Anfangssequenz(LED blicken) angemacht.
Dann sollte er ja eigentlich die Daten senden?!
Es funktioniert auf jedenfall so noch nicht...