How to perform a synchronous output on the Arduino?
Add these steps to your algorithm:
0. Prepare first bit of data
...
3. Use external interrupt on rising edge to output prepared bit and put next bit into your bit holder variable. Count outputted bits.
* Step 3 will be automatically repeated 16 times (external device will trigger it).
4. When bit counter reaches 16, disable ext interrupt and set ready line back.

hint: on atmega168/328 any pin may be used as ext interrupt source on incoming edge transition with quite simple technique.

I hope your external device is not driving clock pulses too fast. Arduino is not very good at reaction speeds faster than 1MHz. I'd say you should expect this approach to work reliably up to 100 kHz clock. On higher speeds either hardware SPI should be used to clock out your data or tight assembly coding. In any case several MHz is max you can do with bare AVR here.