Пример последовательного ВЫВОДА. Программу легко изменить для последовательного ВВОДА.
do { // Transmit all 16 bits
if (data & (1<<15)) // Set the data bit
DDS_PORT |= SDATA_BIT; //
else //
DDS_PORT &= ~SDATA_BIT; //
DDS_PORT &= ~SCLK_BIT; // Form clock pulse
data <<= 1; // Prepare to send next bit
DDS_PORT |= SCLK_BIT; //
} //
while (--_cnt); //