Just a wild guess, but you may not be reading the status port at the right time. Your program loop should work like this simplified sequence.
1. Write clock & data to port data register
2. Read status register bits and compare to write
3. Clear clock and data bits
4. Repeat loop for next bit
If you try to read the status AFTER you have cleard the data, you will not see it.
Dialtone