Contenido>Indice>Intro Tutor

MODOS DE FUNCIONAMIENTO DE LA LINEA SERIE



El µC 8051 dispone de 4 modos de comunicación serie distintos. Estos modos se describen más detalladamente a continuación.

Modo 0

En el modo 0 el puerto serie funciona como un registro de desplazamiento de 8 bits. La entrada de datos se realiza a través de la patilla RxD (P3.0). Cada dato está compuesto por una palabra de 8 bits, siendo el primero en salir o en llegar el bit menos significativo, el LSB.

Tanto en transmisión como en recepción, la salida de los pulsos de clock se produce por la patilla TxD (P3.1). La lectura de datos en recepción se realiza en los flancos de subida de la señal de reloj.

El formato de la palabra es el siguiente:

formato_palabra.GIF (784 bytes)

La velocidad de comunicación es fija y vale fosc/12. Para fosc=11'0592MHz la velocidad de comunicación es:

Vcom=11.059.200/12=921.600 Baudios (bits/seg)

i088.gif (541 bytes)Este modo de comunicación es serie síncrono. Puede ser utilizado para ampliar en número de entradas y salidas del µC mediante el empleo de registros de desplazamiento externos conectados a la línea serie.

 

Funcionamiento como registro de desplazamiento (modo 0)

La transmisión (figura siguiente) es iniciada por una instrucción que emplea la dirección SBUF como destino (por ejemplo, MOV SBUF, A). La señal de <escritura en SBUF> que aparece en la última fase del ciclo de ejecución de la instrucción (S6P2) hace que se cargue un <<1>> en la novena posición del registro de desplazamiento de transmisión y arranca el ciclo de transmisión. Un ciclo máquina después de la aparición de esta señal, se activa la orden interna SEND. SEND habilita la salida del registro de desplazamiento por la patilla P3.0 (RxD) y habilita también la salida de reloj de desplazamiento por la patilla P3.1 (TxD).

El reloj de desplazamiento permanece a nivel bajo durante S3, S4 y S5 de cada ciclo de máquina y a nivel alto durante S6, S1 y S2. Mientras SEND está activa, el registro de transmisión es desplazado una posición a la derecha en cada instante S6P2 de cada ciclo máquina. Mientras los bits de datos salen por la derecha, se introducen ceros por la izquierda. Cuando el bit más significativo del byte de datos se encuentra en la posición de salida, el uno que se cargó inicialmente en novena posición se encuentra justo a su izquierda y todas las otras posiciones están ocupadas a ceros. Esta condición indica al bloque de control TX que debe de efectuar un último desplazamiento seguido de la desactivación de SEND y la puesta a 1 de TI (flag de transmisión). El conjunto de estas operaciones dura diez ciclos máquina desde la señal de escritura en SBUF.

La recepción (figura siguiente) es iniciada por la condición REN=1 y RI=0 (flag de recepción). En el periodo S6P2 del siguiente ciclo máquina, la unidad d control RX introduce los bits 11111110 en registro de recepción y la siguiente fase de reloj activa la señal RECEIVE, que a su vez activa la salida del reloj de desplazamiento por el terminal P3.1. El reloj cambia de estado en las fases S3P1 de cada ciclo máquina.

Mientras que RECEIVE está activado, el contenido del registro de desplazamiento se desplaza una posición hacia la izquierda en la fase S6P2 de cada ciclo máquina. El valor que entra por la derecha se obtiene al muestrear el terminal P3.0 durante la fase S5P2 del mismo ciclo máquina.

Los bits de datos desplazan hacia la izquierda los 1 que se cargaron inicialmente en el registro de recepción. Cuando el cero se encuentra en la última posición de la izquierda, el bloque de control RX realiza un último desplazamiento seguido de la carga de SBUF.

Considerando como origen de tiempos el instante en que el indicador RI se ha puesto a 0, la báscula RECEIVE se pone a 0 y el indicador RI a 1 en la fase S1P1 del décimo ciclo máquina.

El esquema de funcionamiento del puerto serie en modo 0 se representa en la figura siguiente.

puerto_modo0.gif (11609 bytes)

figura: PUERTO SERIE EN MODO 0

Modo 1

El puerto serie funciona como un UART de 8bits con velocidad de comunicación variable. La entrada de datos se produce a través de la patilla RxD y la salida de datos a través de la patilla TxD.

Se transmiten 10 bits:

1 bit de START
8 bits de DATOS (primero LSB)
1 bit de STOP (1), RB8 en recepción

El formato de la palabra es el siguiente:

modo1.GIF (1451 bytes)

La velocidad de comunicación es variable y la determina el Timer 1 al desbordarse. El Timer 1 puede ser configurado como temporizador o como contador en sus 4 modos de funcionamiento. Normalmente, para la generación de baudios se utiliza como temporizador en el modo 2 (temporizador de 8 bits con autorrecarga).

También hay que tener en cuenta el estado del bit SMOD del SFR PCON, el cual si está activado duplica la velocidad de comunicación del puerto serie en los modos UART (1, 2, 3). A este bit se le conoce con el nombre de " bit duplicador de velocidad".

El valor de la velocidad de comunicación nos vendrá dado por la formula:

wpe18.gif (1388 bytes)

 

Funcionamiento en modo 1

La transmisión (figura siguiente) es iniciada por la instrucción que utiliza SBUF como registro destino (por ejemplo. MOV SBUF, A). La señal de escritura en SBUF provoca que se cargue un 1 en la novena posición del registro de transmisión e indica a la unidad de control TX que se ha pedido una transmisión. Esta comienza en la fase S1P1 del siguiente ciclo máquina (el envío del bit con el contador divido por 16 con la señal de escritura en SBUF). La transmisión comienza con la activación de SEND que hace que el bit de START comience a salir por TxD. Un poco después se activa DATA, que habilita la salida del registro TxD.

A medida que los bits salen por la derecha, por la izquierda se introducen ceros. Cuando el bit de datos más significativo se encuentra en la posición de salida en el registro de desplazamiento, el uno que se había cargado inicialmente en la novena posición se encuentra en la segunda, seguido por una serie de ceros. Esta condición indica al bloque de control TX que se debe efectuar un último desplazamiento, desactivar SEND y poner a TI a 1.

La recepción (figura siguiente) se inicia al detectarse una transición de 1 a 0 en la patilla RxD. Éste es el motivo por el que RxD se muestrea a una frecuencia 16 veces mayor que la frecuencia de recepción. Al detectarse esta transición, se inicializa un contador de 16 y en el registro de desplazamiento se escribe el valor 1FFH.

Los dieciséis períodos del contador de 16 permiten dividir en dieciseisavos el período de recepción de un bit. En el séptimo, octavo y noveno períodos de este contador, el detector de bit muestrea el valor de RxD. El valor almacenado es el valor leído al menos dos veces de las tres. Este método aumenta el rechazo del ruido. Si el primer bit detectado no era un <<0>> (bit de START), el circuito de recepción se reinicializa y queda a la espera de una nueva transición de 1 a 0.

Si el bit de START es válido, se lleva a la entrada del registro de desplazamiento y se puede recibir el resto de los bits. A medida que los bits llegan por la derecha, la salida de los unos se produce por la izquierda. Cuando el bit de START se encuentra en la posición de salida (en el registro de 9 bits), la unidad de control RX ejecuta un último desplazamiento, carga el dato en SBUF y   RB8 y pone a 1 el indicador RI. La señal de carga de SBUF y de RB8, y la puesta a 1 de RI se produce si y sólo si se da la siguiente condición en el último desplazamiento:

RI=0 y (SM2=0 o bit STOP=1)

Si esta condición no es verdadera, la trama de recepción se pierde y RI no se pone a 1.

Si la condición es verdadera, el bit de STOP se coloca en RB8 y los 8 bits de datos se cargan en SBUF. En este instante, tanto si la condición ha sido satisfecha como si no, la unidad queda de nuevo a la espera de una transición de 1 a 0 en RxD.

El esquema de funcionamiento del puerto serie en modo 1 se representa en la figura siguiente.

puerto_modo1.gif (10956 bytes)

figura: PUERTO SERIE EN MODO 1

Modos 2 y 3

El puerto serie se comporta como un UART de 9 bits con velocidad de comunicación fija para el modo 2 y variable para el modo 3.

La entrada de datos se produce a través de la patilla RxD y la salida de datos a través de la TxD.

Se transmiten/reciben 11 bits:

1 bit de START (0)
8 bits de DATOS (primero LSB)
1 bit de DATO, el 9º bit, programable por  el usuario y que normalmente se utiliza    como bit de paridad. En recepción es el    bit RB8 y en transmisión el TR8, ambos    del SFR SCON
1 bit de STOP (1), RB8 en recepción

El formato de la palabra es el siguiente:

modo2_3.GIF (1556 bytes)

Los modos 2 y 3 se diferencian únicamente en la velocidad de comunicación. La velocidad de comunicación del modo 3 se obtiene de la misma forma que para el modo 1, es decir, a través del timer T1.

wpe19.gif (1388 bytes)

La velocidad de comunicación en modo 2 ofrece 2 posibilidades, en función del estado binario del bit SMOD del registro PCON.

wpe1A.gif (1172 bytes)

 

Funcionamiento en los modos 2 y 3

La transmisión (figuras siguientes) se inicia mediante una instrucción que emplee SBUF como registro destino. La señal de escritura de SBUF carga e noveno bit del dato , situado en TB8, en la novena posición de registro de desplazamiento, e indica a la unidad de control TX que se requiere una transmisión. La transmisión comienza el el periodo S1P1 del ciclo máquina que sigue al paso a 0 del contador divisor por 16.

La transmisión comienza con la activación de SEND, que pone el bit de START en TxD. Un periodo de bit después se activa DATA, señal que habilita la salida por TxD del bit saliente del registro de desplazamiento. El primer impulso de desplazamiento aparece un período de bit más tarde.

Este primer impulso introduce el 1 del bit de STOP en la novena posición del registro de desplazamiento. Después de esto, hay una serie de ceros que se introducen por la izquierda durante los desplazamientos. Cuando el bit de TB8 está en la posición de salida y el bit de STOP justo a su izquierda, el resto de los bits del registro de desplazamiento son ceros. Esta condición indica a la unidad de control TX que debe de realizar un último desplazamiento, desactivar SEND y poner a 1 el indicador TI. Esta situación se produce en la duodécima vuelta del contador divisor por 16 desde la escritura en SBUF.

La recepción (figura siguiente) se inicia cuando se detecta una transición de 1 a 0 en la patilla RxD. Para ello, la patilla RxD se muestrea a una frecuencia 16 veces mayor que la frecuencia de recepción que se ha establecido. Cuando se detecta la transición, se reinicializa el contador divisor por 16 y se escribe el valor 1FFH en el registro de desplazamiento de entrada.

Los dieciséis periodos del contador de 16 permiten la división en dieciseisavos del periodo de recepción de un bit. El detector de bit muestrea el valor de RxD en los periodos séptimo, octavo y noveno del citado contador. El valor que se almacena es el valor leído al menos dos veces de la tres.Este método aumenta el rechazo del ruido. Si el primer bit detectado no fuera un <0> (bit de START), el circuito de recepción se reinicializaría y esperaría una transición de 1 a 0. En el caso de ser válido el bit de START, éste se lleva a la entrada del registro de desplazamiento y se pueden recibir el resto de los bits.

A medida que los bits llegan por la derecha, la salida de los unos se produce por la izquierda. Cuando el bit de START se encuentra en la posición más a la izquierda (en el registro de 9 bits), la unidad de control RX ejecuta el último desplazamiento. La carga del dato en SBUF y en RB8, y la puesta a 1 del indicador RI se producen si y sólo si se da la siguiente condición en el último desplazamiento:

RI=0 y (SM2=0 o noveno bit=1)

Si esta condición no es verdadera, la trama de recepción se pierde y RI no se pone a 1.

Si la condición es verdadera, el noveno bit se coloca en RB8 y los 8 primeros bits se cargan en SBUF. Pasado un período de bit, tanto si la condición ha sido satisfecha como si no, la unidad queda de nuevo a la espera de una transición de 1 a 0 en RxD.

El esquema de funcionamiento del puerto serie en modos 2 y 3 se representan en los diagramas de bloques y en el cronograma que es equivalente para ambos modos.

puerto_modo2.gif (11198 bytes)

figura: PUERTO SERIE EN MODO 2

puerto_modo3.gif (6941 bytes)

figura: PUERTO SERIE EN MODO 3

   


   Contenido>Indice>Intro Tutor