Interesting. So the PIC implementation of I2C may be useful. I'll have to try it.

Unfortunately, i've only just ordered the EEPROM chip today, so I have to wait for it to arrive to try it out

The reason the timer interrupt is 6mS is because it takes 2 of these interrupts to read 1 row of the matrix, and there are 6 rows, so it takes 72mS to read the entire matrix.