I2C zacyklení při přerušení komunikačních vodičů

while(!kbhit()&&(++timeout<50000))
ceka dokud neni prijmutej znak po uartu (kbhit()) a zaroven promena timeout neni vetsi nez 50k,pokud neni tak se vykona instrukce nasledujici takze delay_us(10); , po vykonani 10u se opet testuje to co je v while,
pokud prijde znak tak se podminka splni a opusti to while nebo znak nepride a opusti se az kdyz bude timeout vetsi nez 50k a to ve spojeni s delay 10u je pul sekundy,
takze cekas az prijde znak , kdyz nepride tak se ti to po 0.5s ukonci aby se ti to tam nezaciklilo
if(kbhit())
return(getc());
else {
timeout_error=TRUE;
return(0);
pokud prisel znak tak ti ho to vrati , kdyz ne tak ti vrati 0 s nastavenym erorem