Ejercicio 7 Practico 7

Re: Ejercicio 7 Practico 7

de Gustavo Brown -
Número de respuestas: 0

Perdón,

   Se me pasó por alto un problema en tu solución que es que prendés el extractor cuando hay escape de gas pero no lo apagás cuando ya no hay más escape.

Eso se arreglaría así (similar a como se resuelve en la solución del ejercicio 3 de práctico 10):

(en negrita los cambios)

void interrupt tiempo() {
    char estado_sensor = IN(SENSOR) & 1;
    char estado_accesorio = (IN(ACCESORIO) & 0xFE ) | estado_sensor;   // Prende o apaga extractor
    if (estado_sensor) { // Si hay peligro
        tics++;
        if (tics == threshold)  // Si paso el tiempo necesario, cerrar valvula
            estado_accesorio &= 0xFD;
    } else tics = -1; // Resetear contador de ciclos
    OUT(ACCESORIO, estado_accesorio); // Efectivizar cambios en accesorios
}

Saludos,
  Gustavo