Hallo,
ich probiers mal,
einfach mal was mir dazu einfällt:

- Die Variable I ist nur ein Zeichen lang, in der ISR wird aber immer ein weiteres drangehängt, kann sich auch mal überschneiden mit dem löschen von I ( länger dimesionieren)

- I wird nicht initialisiert, ich weiss nicht wie Bascom das macht

- Es wird der Timer1 verwendet, gebe nur zu bedenken, das bei Software-I2C auch ein Timer gebraucht wird ... nicht das das dergleiche ist.

- wenn man das "t" abfrägt, und das entsprechende Unterprogramm ausführt, könnten in der Zeit weitere Zeichen über UART kommen ... evtl. in der ISR kein I = I + ... sondern nur ein I = chr (UDR) !