Lectura latch versus read pin (8051)

0

Según tengo entendido, el microcontrolador 8051 es capaz de leer un pin

(1) al leer el pin real , asumiendo que el nFET está en corte (por lo que se escribe una lógica 1 antes de leer el pin)

(2) al leer el correspondiente pestillo

Ahora, ¿es cierto que suponer que leer el pestillo solo tiene sentido cuando se usa el pin como salida? ¿Y cuáles son las ventajas de leer el pestillo (que se usa en, por ejemplo, las instrucciones de lectura-escritura-modificación) en lugar del pin real?

    
pregunta Springbok

2 respuestas

0

Leer salida en búfer tiene una ventaja cuando quieres hacer algo como read-modify-write . P.ej. desea tomar el valor actual del pin y lógicamente AND con algún otro valor:

PIN = PIN & Value;

Si el PIN no está en el búfer, no podrá leer su valor, ya que se imprime, no se ingresa.

    
respondido por el Eugene Sh.
1

Para cambiar el estado de un solo latch de salida de E / S sin afectar a los demás, es necesario que el 8051 lea ocho latches, cambie uno de los bits y vuelva a escribir el resultado. Si esa operación de lectura informara el estado del pin en lugar del pestillo, cambiar el estado de un pin mientras se usaba otro pin como entrada, pero al presionarlo hacia abajo, haría que el otro pin comience a emitir bajo. No es divertido.

Normalmente, la necesidad de utilizar operaciones de lectura-modificación-escritura en los registros de retención se solucionará mediante el uso de direcciones de lectura separadas para los retenciones y los estados de los pines. Debido a que el espacio de direccionamiento direccionable a los bits es primordial (solo 16 registros de E / S pueden ser direccionables a los bits), los diseñadores del 8051 hicieron que la lectura de los puertos asociados con la E / S de propósito general (es decir, 0x80, 0x90, 0xA0, 0xB0) a veces proporcionará el contenido de los latches del puerto (cuando se usan la mayoría de las instrucciones de lectura-modificación-escritura, incluyendo BSET, CLR, etc.) o el estado de los pines (cuando se usa la mayoría de las instrucciones de entrada, incluyendo JB, JNB, etc.). Si bien a veces sería útil tener una forma de simplemente leer el estado de los registros de cierre, el 8051 no proporciona uno; las únicas instrucciones que leen el estado de bloqueo son aquellas que utilizan el valor de lectura simplemente como parte de una secuencia de lectura-modificación-escritura.

    
respondido por el supercat

Lea otras preguntas en las etiquetas