Boa noite, estou tentando fazer um código de controle e não consigo, a contagem funciona como esperado sem o delay_ms (3000); mas quando coloco, a contagem fica bem superior , teria outra maneira de dar uma pausa sem usar esse delay? Obrigada desde já.
int16 minuto = 0;
int16 conta = 0;
#use delay(clock=4000000)
#INT_RA
//------------------------------------------------------------------------
void RA_isr(void)
{
clear_interrupt(INT_RA2);
if(input(PIN_A2))
{
conta++;
}
}
void main()
{
set_tris_a (0b0001100 );
enable_interrupts(GLOBAL);
enable_interrupts(INT_RA2);
clear_interrupt(INT_RA2);
output_low(pin_a0);
output_low(pin_a1);
while(TRUE)
{
if (conta >= 3600 )
{
conta = 0;
minuto++;
}
delay_ms (3000);
if(input(PIN_A3))
{
output_low(pin_a0);
output_low(pin_a1);
conta = 0;
minuto=0;
}
if( minuto <= 5 )
{
output_high(pin_a0);
}
if( minuto >= 5)
{
output_high(pin_a1);
}
if( minuto >= 15)
{
output_low(pin_a0);
output_low(pin_a1);
conta = 0;
minuto=0;
}
}
}