Ejercicio 5

Re: Ejercicio 5

de Manuela Viola Pastori -
Número de respuestas: 0

Yo lo que hice fue esto:

 

#Define EST0 as 10H
#Define EST1 as 12H
#Define EST2 as 14H
#Define EST3 as 16H
#Define DATO0 as 11H
#Define DATO1 as 13H
#Define DATO2 as 15H
#Define DATO3 as 17H
#Define DATOS as 20H
#Define salDef as 0FFH

bool salidaOcupada;

void main(){
  salidaOcupada = false;
  while(true){
    if(!salidaOcupada){
       OUT(DATOS,salDef);
    }
  }
}

void interrupt INT_ENTRADA(){
  if(IN(EST0)%2){
    while(salidaOcupada);
      salidaOcupada = false;
      OUT(DATOS,0);
      while(salidaOcupada);
      salidaOcupada = false;
      OUT(DATOS,IN(DATO0));
    } else if(){
         .
         . lo mismo para los otros casos
         .
         .
    }

}

void interrupt INT_SALIDA(){
    salidaOcupada = false;
}

 

Aca no pierdo ningun dato creo pero esta mal que lo deje esperando todo el tiempo a que espere la salida, no? ademas si el primero interrumpe muy seguido los otros nunca se llegan a atender.