TM4C123, only one timer works at a time?
Apperently your clock timer Timer0 is slower than data timer Timer1 so there nothing suprising in represented behaviour because your code skip every second event from Timer1 when you use while. 

I think there enough one timer with max used frequency - is Timer1. More over there should be one timer because data and clock must be synchronous and this condition not guaranteed by code represented in your question.

int main()
{
    char even = (char)0x1;
    GPIO_INIT();  
    TIMER_INIT();   //Timer0= 1/2 Timer1
    while (1) {
        while((TIMER1-&gt;RIS &amp; 0x00000001) != 1);    //Wait for TIMER1 to time out
        TIMER1-&gt;ICR |= (1&lt;&lt;0);             //Reset TIMER1 flag
        even ^= (char)0x1;
        if (even) GPIOF-&gt;DATA ^= (1&lt;&lt;1);   // Toggle PF1 [Clock]
        GPIOF-&gt;DATA ^= (1&lt;&lt;2);             // Toggle PF2 [Data]
    }
}


So your function DATA(long number, int iteration) will be:

void DATA(long number, int iteration) //number: data to be send serially
{ 
    long x=0;                           // iteration: number of bits to send
    char even = (char)0x1; 
    for(int y=0; y&lt;iteration;) {
        while((TIMER1-&gt;RIS &amp; 0x00000001) != 1){}   //wait until Timer1 times out
        TIMER1-&gt;ICR |= (1&lt;&lt;0);     //Reset Timer1 flag
        even ^= (char)0x1;
        GPIOF-&gt;DATA ^= (1&lt;&lt;2);     //Toggle clock
        if (even) continue;
        // data change every odd cycle
        x= number &amp; (0x1&lt;&lt;y);      //Get each bit individually  
        if(x==(0X1&lt;&lt;y))            //If bit is 1
            GPIOF-&gt;DATA |= (1&lt;&lt;1); //Make PF1 High 
        else if(x==0X0) //If bit is 0
            GPIOF-&gt;DATA &amp;= 0XFD;   //Make PF1 Low
        y++;
    }
}