Hallo

Ich beschäftige mich zur Zeit mit dem Anschluß einer PC-Tastatur an einen AVR. Da Maus und Tastatur die selben Protokolle verwenden kann dir vielleicht dieser Link hilfreich sein:

http://www.marjorie.de/ps2/ps2_protocol.htm

Ich habe das zwar noch nicht selbst ausprobiert, aber einige Stellen in deinem Code scheinen danach nicht ganz richtig zu sein:

Code:
unsigned char readByte(void){
signed char i;
unsigned char daten=0;
   
   delay_us(3);            //Sensor Zeit lassen um die Daten aus dem Register zu holen

   for (i=7; i>-1; i--){
      while (0==INPUT(clk));      // SCK =0 Sensor bereitet Daten auf fallender Flanke vor !
         
      delay_us(1);         //Sensor kurz Zeit lassen
      
      if(INPUT(data)==1){       //BIT einlesen
         daten |= (1<<i);
      }
	  else{
         daten &=~ (1<<i);         
      }         

   }
   return data;
}
Die Wartezeiten erscheinen mir zu kurz. Das LSB kommt zuerst! Start/Stop/Parity wird ignoriert. Das Taktende wird nicht abgewartet. Und schließlich sind die Daten bei fallender Flanke des Taktes (von 1 nach 0) gültig.

Achtung! Auch beim Schreiben gibt die Maus den Takt vor. Der Takteingang am Kontroller muss wohl immer hochohmig sein.

Viel Erfolg.

mic