[2018][Diciembre][Problema 1]

[2018][Diciembre][Problema 1]

de Federico Silveira Bonino -
Número de respuestas: 2

Hola, que tal? Hice este ejercicio y luego vi la solución planteada y tengo algunas dudas:

Para abrir el café ustedes hacen: OUT( DISPENSADOR, IN(DISPENSADOR) | 0x02);

¿No alcanza con hacer OUT( DISPENSADOR, 0x02);? La misma pregunta me surge cuando voy a abrir la leche.

La otra duda es similar pero para el caso de cerrar, por ej para cerrar la leche hacen: OUT(DISPENSADOR, IN(DISPENSADOR) & 0xFB);

¿Es incorrecto cerrarla haciendo OUT(DISPENSADOR, 0); ?


Desde ya gracias.

Saludos,

Federico


En respuesta a Federico Silveira Bonino

Re: [Diciembre 2018, Prob 1]

de Gustavo Brown -
Federico,
La solución intenta mantener los demás bits como estaban, por eso hace IN(DISPENSADOR) aplicando luego una máscara con or (|) para activar ciertos bits o con and (&) para desactivarlos.
Pero la letra no pide explícitamente que se haga eso y se podría perfectamente resolver el problema colocando las constantes adecuadas en el puerto.
Por ejemplo, OUT(DISPENSADOR, 0) cierra ambas valvulas, OUT(DISPENSADOR, 2) abre la valvula de café y cierra la de la leche.
Parece que la solución publicada para ese problema esta compleja de más, entiendo que se podría hacer bastante más compacta.

Saludos,
Gustavo