// Solo para darle nombres a los valores.
enum estado {
DESCARGA,
CARGA
};
void main(void)
{
// Aca la configuracion de pines / comparadores, etc
enum estado x;
x = DESCARGA; // Comienzo como "DESCARGA"
while(1)
{
if ( C1OUT == 1 )
{
// Bateria 5V
// Uso bateria, apenas llegue el voltaje de la bateria al correcto cambio
x = DESCARGA; // Descarga
}
else if ( C2OUT == 1 && x == DESCARGA )
{
// Bateria por encima de los 3V
// Uso bateria, supongo que estoy en regimen de descarga por eso el x==0
// Aca no modifico x, solo se modifica en los extremos
}
else if ( C2OUT == 0 && x == DESCARGA )
{
// Bateria agotada del regimen de descarga
// Activo Cargador, modifico x, ya que es un extremo del valor de la bateria
x = CARGA; // Carga
}
}
}