Comunicación serial con microcontroladores AT89S52

0

Tengo un problema, necesito conectar dos microcontroladores y programar uno de ellos como transmisor y el otro como receptor. Intenté hacer esto pero no funciona y no sé por qué.

La comunicación en serie debe estar en Modo 0. El microcontrolador del transmisor tiene un interruptor DIP donde ingreso los datos (un número) y necesito mostrarlos en el Led conectado en el microcontrolador receptor.

Aquí está el código para ambos, espero que puedan ayudarme, gracias.

................. Transmisor .................

       MOV     SCON, #00H;    MODE 0 AS A TRANSMITTER
HERE:  MOV     A, P1;         MOVE THE DATA ON P1(DIP-SWITCH) TO ACCUMULATOR
       CLR     TI;            CLEAR THE BIT TI
       MOV     SBUF, A;       MOVE THE DATA TO SBUF
       JNB     TI,$ ;         PAUSE UNTIL THE TI BIT IS SET
       SJMP    HERE

.................. Receptor ...................

        MOV    SCON, #10H;    MODE O AS A RECEIVER                          
WAIT:   JNB    RI, WAIT;      PAUSE UNTIL THE RI BIT IS SET
        CLR    RI
        MOV    A, SBUF;       MOVE THE DATA SEND TO ACC        
        MOV    P1, A;         MOVE ACC TO P1 (LED'S)
        SJMP   WAIT
    
pregunta Darth Vader

1 respuesta

1

En un microcontrolador MCS-51 (MCU) como el AT89S52, el modo UART 0 es un puerto serie sincronizado sincronizado.

En modo 0 ...

(a) Cuando escribe un byte en el registro de puerto serie para iniciar una transmisión, el AT89S52 (a) genera 8 relojes en su salida TXD y (b) elimina 8 bits de datos en la salida RXD.

(b) Cuando lee un byte del registro de puerto serie (SFR) para iniciar una recepción, el AT89S52 (a) genera 8 relojes en su salida TXD y (b) se desplaza en 8 bits de datos en la salida RXD.

(c) TXD es siempre una salida de reloj serie. RXD es una línea de entrada / salida de datos en serie.

(d) La transmisión y la recepción solo ocurren cuando el software lee / escribe el SFR. Un puerto de recepción serial UART típico siempre está escuchando. Este UART es el Modo 0 no lo es.

So Mode 0 es ideal para controlar chips lógicos de serie a paralelo como expansores de E / S.

Y el Modo 0 no sirve para la comunicación entre dos microcontroladores. Utilice el Modo 2 en su lugar.

    
respondido por el TonyM

Lea otras preguntas en las etiquetas