Práctico 8 - Ejercicio 7

Re: Práctico 8 - Ejercicio 7

de Santiago Pablo Ramirez Rios -
Número de respuestas: 0

ACCESORIO y SENSOR son puertos de E/S, no se implementan. La única rutina es TIEMPO().

Yo lo pense como una maquina de estados, con 3 estados: NORMAL,ESCAPE (donde se activa solo el extractor) y VALVULA ( cuando pasan 30 seg desde el escape).
Me quedo algo asi:


enum Estados {NORMAL, ESCAPE, VALVULA};
Estados estado;
int time;

void TIEMPO(){
 time++};

void MAIN(){

disable()
//instalo rutina TIEMPO();
time=0;
estado=NORMAL;
OUT(ACCESORIO,0x02)
enable();

while (TRUE){

 switch (ESTADO){
   case NORMAL : if ( IN(SENSOR) & 1){
                            estado= ESCAPE;
                            OUT(ACCESORIO,0x03);
                           }else
                            time=0;
                           BREAK;
   case ESCAPE : if (IN(SENSOR)&1){
                           if(time>300){
                            estado=VALVULA;
                            OUT(ACCESORIO,0x01);}
                         }else{
                           estado=NORMAL;
                           OUT(ACCESORIO,0x02);
                           time=0;
                          };
                          BREAK;
   case VALVULA : if (!( IN(SENSOR) & 1)){
                            estado= NORMAL;
                            OUT(ACCESORIO,0x02)
                            time=0;
                           };
                           BREAK;

}

};

 

No estoy seguro de que sea correcto. Saludos!