Comunicación serie 8051

3

Estoy trabajando en cómo 8051 realiza la comunicación en serie. No pude averiguar cómo se realizan las operaciones de transmisión y recepción por el mismo registro, SBUF.

Para que sea más claro, daré un ejemplo. Supongamos que estoy recibiendo información a través del pin Rx continuamente. ¿Qué pasa si quiero transmitir información? ¿Cómo puedo interrumpir la recepción mientras transmito datos porque no quiero que los datos que puse en el registro SBUF sean reemplazados por los datos entrantes?

Hubo dos bits en SCON, a saber, recibir interrupción (RI) e transmitir interrupción (TI), pero se usaron para verificar si los datos se recibieron o se transmitieron con éxito, no para decidir si el chip va a transmitir o recibir.

Lo que estoy preguntando es, ¿no debería haber un poco en SCON como la habilitación de transmisión o la habilitación de recepción que permite una operación e inhibe la otra cuando está activada? En realidad hay una habilitación de recepción (REN) en SCON, pero en todos los ejemplos se afirmó tanto al transmitir como a la recepción, así que pensé que este bit era para otra cosa.

¿Qué es lo que me estoy perdiendo?

    
pregunta İlker Demirel

1 respuesta

3
  

Supongamos que estoy recibiendo información a través del pin Rx continuamente. ¿Qué pasa si quiero transmitir información? ¿Cómo puedo interrumpir la recepción mientras transmito datos porque no quiero que los datos que puse en el registro SBUF sean reemplazados por los datos entrantes?

Entiendo tu confusión. La explicación es un diseño bastante elegante ...

Desde fuera del dispositivo, tratamos el registro SBUF como una "cosa" única, utilizada para Tx cuando escribimos en ella, y utilizada para Rx cuando leemos. Esto tiene sentido, ya que no necesitamos hacer lo contrario (es decir, no necesitamos leer lo que acabamos de enviar para ser transmitidos).

Sin embargo, dentro del dispositivo, el registro de Tx y el registro de Rx son componentes físicamente diferentes . Ese hecho es lo que le permite transmitir y al mismo tiempo recibir, sin sobrescribir lo que se está recibiendo.

Hace mucho, mucho tiempo, recuerdo haber leído la hoja de datos en un UART u otro, lo cual explica esto. No estoy seguro de poder encontrarlo nuevamente, pero si lo encuentro (o algo similar) lo agregaré a la respuesta.

Actualización:

De Manual de hardware de microcontroladores Atmel 8051 :

  

Los registros de recepción y transmisión del puerto serie se acceden en el Registro de funciones especiales SBUF. Escribir a SBUF carga el registro de transmisión, y leer SBUF accede a un segundo registro de recepción físicamente .

[mi énfasis en la cita anterior]

Del mismo documento, aquí hay un diagrama de bloques del 8051 UART. He delineado los dos lugares donde se muestra "SBUF" en rojo, junto con el texto que muestra cuál es el registro físico de Tx SBUF y cuál es el registro físico de SBUF de Rx:

    
respondido por el SamGibson

Lea otras preguntas en las etiquetas