Optimize "Software-SPI-Slave-Mode" ISR

I'm not too familiar with AVR assembly but this looks like it could be improved...

        if (p & B01000000)    // if the Data In pin (PD6) is HIGH
        {
          rec += bn;          // add bit to received byte 
        }
        bn = bn << 1;         // shift to the next bit to receive

You could use rec += 1 and shift rec instead of bn. That way, you might pick up an immediate operand and save a cycle or two. Also try |= instead of +=.

See if you can get rid of that if statement:

rec += (p&B01000000) >> 6;

Not sure which is more expensive, shifting of branching, but it might be worth trying.