case estado_A:
{
/* valorTemporizado es de tipo unsigned*/
valorTemporizador = funcionQueLeeTMR1(); //valor de 16 bits
variableAuxParaTarea1 = 33333;
estadoTarea1 = estado_B;
break;
}
case estado_B:
{
if ((funcionQueLeeTMR1() - valorTemporizador) > 7500) //cuando pasa 30 ms, el if es verdadero
{
variableAuxParaTarea1--;
if (0 == variableAuxParaTarea1) //el if es verdadero cuando ha pasado 1 segundo
{
/*Tu código de lo que desees hacer cuando han pasado 1000 ms*/
}
else // Si variableAuxParaTarea1 aun no es cero, debes capturar un nuevo valor del temp para nuevamente generar 30 ms
{
valorTemporizador = funcionQueLeeTMR1();
}
}
break;
}