¿Cómo hacer que un bucle while se ejecute durante un tiempo específico (digamos 5 segundos)?
while(1)
{
int time=0,timeinsec=5;
while(timeinsec>=time)
{
ADMUX = 0xC1;
ADCSRA = 0xE7; // wait until conversion starts
while((ADCSRA & (1<ADIF))==0); // wait for convarsion to be finish
lcd_out(1,1,"Current");
lcd_out(2,1,"temp. is");
Delay_ms(10);
a = ADCL;
b = ADCH;
a=(a*2.56/1024)*100;
inttostr(a,disp);
if (a>=35 && a<40)
{
lcd_out(3,1,disp);
delay_ms(200);
Lcd_Cmd(_LCD_CLEAR);
}
else if(a>40)
{
Lcd_Cmd(_LCD_CLEAR);
lcd_out(2,1,disp);
lcd_out(3,1,"High Temp.:");
lcd_out(4,1,"Sending Msg.");
delay_ms(200);
}
else{
Lcd_Cmd(_LCD_CLEAR);
lcd_out(3,1,"normal");
delay_ms(200);
// UART1_Write(disp);
}
//lcd_out(3,1,disp);
}
// UART1_Init(9600);
while(timeinsec>=time)
{
ADMUX = 0xC0;
ADCSRA = 0xE7; // wait until conversion starts
while((ADCSRA & (1<ADIF))==0); // wait for convarsion to be finish
lcd_out(1,1,"Current");
lcd_out(2,1,"Press. is");
Delay_ms(10);
a = ADCL;
b = ADCH;
a=(a*2.56/1024)*100;
inttostr(a,disp);
if (a>=35 && a<40)
{
lcd_out(3,1,disp);
delay_ms(200);
Lcd_Cmd(_LCD_CLEAR);
}
else if(a>40)
{
Lcd_Cmd(_LCD_CLEAR);
lcd_out(2,1,disp);
lcd_out(3,1,"High Pres.:");
lcd_out(4,1,"Sending Msg.");
delay_ms(200);
}
else{
Lcd_Cmd(_LCD_CLEAR);
lcd_out(3,1,"normal Pres");
delay_ms(200);
// UART1_Write(disp);
}
//lcd_out(3,1,disp);
}
} //UART1_Write(disp); // and send data via UART
}
el bucle while externo se está ejecutando infinitos veces & Quiero hacer el primer ciclo interno mientras que el bucle debe ejecutarse durante 5 segundos y amp; luego el segundo interior mientras que el bucle para 5 segundos y amp; esto debería ocurrir infinitas veces (mientras que (1)) ...
entonces, ¿cómo es posible ????