CNElectronics:
"it's stupid" or "use a libary...".
I'm sorry to say it, but it is even worse.
You are using low level writing to registers. When you are new to Arduino, you should start with the higher level Arduino functions.
You could start for example with the real interrupts and the function attachInterrupt().
Using Serial.println() in a ISR is not good. Using a delay in a ISR can't be right.
The Arduino has macro's for bits. You could write the bits instead of using an array and converting it.
Is there something to detect the start of a new databyte ?
Is the data always going in one direction ? That means it is a software SPI bus ?