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!