Perhaps instead of turning off interrupts and using delay() and nops for timing you could use a timer interrupt to send the bits at the right time.
Perhaps instead of turning off interrupts and using delay() and nops for timing you could use a timer interrupt to send the bits at the right time.