Está en la página 1de 23

El Microprocesador 8051 CAP 9

CAPITULO 9

Comunicaciones

9.1. INTRODUCCION

El puerto serie de los Microcontroladores 8052/8051 trabaja en el modo full-


duplex, lo que significa que puede recibir y transmitir simultáneamente. Como
receptor tiene un buffer que le permite recibir un segundo byte, antes de que el
byte previamente recibido haya sido leído por el registro receptor. (Sin embargo, si
el primer byte no ha sido leído en el tiempo en que el segundo byte se completa,
uno de los dos bytes se pierde.) A los registros receptor y transmisor de los
puertos serie se accede por un único registro que se denomina SBUF, estando
situado en la dirección 99H del SFR (Special Function Register). Escribiendo en el
SBUF carga el byte a transmitir y leyendo del SBUF se accede al byte recibido.

El puerto serie puede operar en cuatro modos seleccionados utilizando los bit 6 =
SM1 y bit 7 = SM0 del registro SCON (Apartado 9.3):

• Modo 0: Los datos en serie entran y salen a través de la línea RXD. TXD
presenta los impulsos de desplazamiento del reloj. La palabra de
información a transmitir o recibir es de 8 bits, siendo el primero en salir o en
llegar el bit menos significativo. La velocidad de transmisión expresada en
baudios (baudio = bits/seg) está dada por la relación 1/12 de la frecuencia
de reloj del microcontrolador .

• Modo 1: Es una comunicación más acorde con los estándares habituales.


Utiliza 10 bits que son transmitidos a través de TXD o recibidos a través de
RXD. Los bits utilizados tienen la siguiente función:
- 1 bit de start (0) (señala el comienzo).
- 8 bits de datos (LSB = primero).
-1 bit de stop ( 1 ).
La velocidad de transmisión puede ser ajustada por el usuario dentro de un
amplio rango.

• Modo 2: Transmite a través de TXD y recibe por RXD como en el caso


anterior. Utiliza 11 bits distribuidos de la siguiente forma:
-1 bit de slart (0).
-8 bits de datos (LSB primero).
-1 bit de dato (9.0 bit) (programable).
-1 bit de Stop (1)
_________________________________________________________________________
ITMAR, Mazatlán 117 Ing. Rufino J. Domínguez Arellano
El Microprocesador 8051 CAP 9

El noveno bit, en la transmisión, puede ser «0» o «1» y es la imagen del bit
TB8 en el registro SCON. Así, el bit de paridad (P, en PSW) puede ser
cargado en TB8 y asignado a este noveno bit en la transmisión. En la
recepción este noveno bit se refleja en el bit RB8 del registro SCON,
mientras el bit de Stop es ignorado. La velocidad de transmisión es
programable bien a 1/32 o 1/64 de la frecuencia del oscilador.

• Modo 3: Como en el caso anterior, 11 bits son transmitidos a través de TXD


o recibidos por RXD, de la siguiente manera:
-1 bit de slart (0).
-8 bits de datos (LSB primero).
-1 bit de dato (9.o bit).
-1 bIt de stop ( 1).

Como se puede observar, el Modo 3 es igual al Modo 2 excepto en la


velocidad de transmisión. En el Modo 3 la velocidad de transmisión puede
ser ajustada por el usuario dentro de un amplio rango.

En los cuatro modos, la transmisión es iniciada mediante cualquier instrucción que


use el registro SBUF como destino. La recepción se inicia en MODO 0 por la
condición R1=0 y REN=1 y en los otros modos Modo 1, 2 y 3, cuando se recibe el
bit start y REN=1.

9.2. COMUNICACIONES EN EL ENTORNO MULTIPROCESADOR

Los Modos 2 y 3 tienen una especial adaptabilidad para las comunicaciones en el


entorno multiprocesador. En estos modos se reciben 9 bits de datos, siendo
capturado el noveno para el indicador RB8 del registro SCON y finaliza con el bit
de stop. El puerto puede ser programado de tal manera que, cuando el bit de stop
se recibe, la interrupción del puerto serie se activará, sólo si RB8 =1. Esta opción
es permitida activando el bit SM2 en el registro SCON. Veamos seguidamente una
forma de utilizar esta opción en el entorno multiprocesador.

Cuando el procesador «maestro» quiere transmitir un bloque de datos a uno de los


«esclavos», primero envía un byte de dirección que identifica el «esclavo». Un
byte de dirección difiere de un byte de datos en que el «noveno bit» es «1» en el
byte de dirección, y «0» en el byte de datos. Con SM2 =1, ningún «esclavo» será
interrumpido por el byte de datos. Un byte de dirección, sin embargo, interrumpirá
a todos los «esclavos», de manera que cada uno pueda examinar el byte recibido
y ver si se refiere a su dirección para entrar en comunicación con el «maestro». El
«esclavo» direccionado borrará el bit SM2 y se preparará para recibir el byte de
datos que le será enviado. Los procesadores «esclavos» que no han sido
direccionados dejan activo su bit SM2 y continúan sus procesos ignorando el byte
de datos que es enviado por el «maestro».

_________________________________________________________________________
ITMAR, Mazatlán 118 Ing. Rufino J. Domínguez Arellano
El Microprocesador 8051 CAP 9

SM2 no tiene ningún efecto en Modo 0, y en Modo 1 puede utilizarse para compro-
bar la validez del bit de Stop. En una recepción en Modo 1, si SM2=1, la
interrupción de la recepción no se verá activada a no ser que se reciba un bit de
Stop válido, es decir, a nivel alto.

9.3. EL REGISTRO DE CONTROL DEL PUERTO SERIE (SCON)

El registro SCON (Serial PorI Control Register) (Cuadro 9.1) es el registro de


control y de estado del puerto serie, situado en el SFR. Este registro contiene:

-Modo de trabajo {Modo 0, 1, 2 y 3) y de selección de velocidad de


comunicación.
-Noveno bit de dato para transmitir y recibir (TB8 y RB8).
-Gestión de interrupciones del puerto serie (TI y RI).

CUADRO 9.1

_________________________________________________________________________
ITMAR, Mazatlán 119 Ing. Rufino J. Domínguez Arellano
El Microprocesador 8051 CAP 9

9.4. VELOCIDAD DE COMUNICACION

La velocidad en baudios de comunicación en Modo 0 se fija por la relación:

frecuencia del oscilador del microcontrolados


BAUDIOS en modo 0 =
12

Los baudios en, Modo 2 dependen del valor del bit 7 (SMOD) del registro PCON
en el SFR. Si SMOD =0 (valor por defecto después del RESET) los baudios son
1/64 de la frecuencia del oscilador-reloj del microcontrolador. Si SMOD = 1 la
velocidad de comunicación es 1/32 de la frecuencia del oscilador-reloj del
microcontrolador, es decir:

2SMOD
BAUDIOS en modo 2 = (frecuencia del oscilador)
64

En el 8051, los baudios en, Modo 1 y 3 son determinados por la relación de


«desbordamiento» del Timer 1. En el 8052 la velocidad de comunicación puede
ser obtenida utilizando el Timer 1 o el Timer 2 o con ambos (uno para transmitir y
el otro para ret:ibir).

9.4.1. El Timer 1 como generador de baudios

Cuando el Timer 1 es utilizado como generador de baudios, éstos son obtenidos


en Modo 1 y 3, por el valor de carga y «desbordamiento» del registro contador del
Timer y el valor de SMOD como sigue:

2SMOD
BAUDIOS en modos 1 y 3 = (relación de desbordamiento Timer 1)
32

El Timer 1I puede ser configurado bien como temporizador o como contador y en


cualquiera de sus tres modos. Se aconseja, porque así se utiliza en la mayoría de
las aplicaciones, configurarlo como temporizador en modo autorrecarga (TMOD =
20H). En este caso los baudios vienen dados por la fórmula:

2SMOD  frecuencia del oscilador 


BAUDIOS en modos 1 y 3 =  
32  12(256 - TH1) 

_________________________________________________________________________
ITMAR, Mazatlán 120 Ing. Rufino J. Domínguez Arellano
El Microprocesador 8051 CAP 9

Se pueden lograr velocidades de comunicación muy bajas con el Timer 1,


permitiendo la interrupción y configurando el Timer para el conteo con 16 bits
(TMOD = 10H) y usando la interrupción del Timer para efectuar la recarga sobre el
registro de conteo.

La Tabla 9.1 lista algunas de las velocidades de comunicación comúnmente


utilizadas y cómo pueden ser obtenidas utilizando el Timer 1.

TABLA 9.1

Así, por ejemplo, para obtener una velocidad de comunicación de 9.600 baudios
con el Timer 1 en modo «autorrecarga» como temporizador. Es decir, con el Timer
1 en Modo 2. Si SMOD = 0, y TH1 = FDH = 253, y aplicando la fórmula:

2SMOD  frecuencia del oscilador 


BAUDIOS en modos 1 y 3 =  
32  12(256 - TH1) 

1  11059x103 
BAUDIOS =   = 9599.83 ≅ 9600
32  12(256 - 253) 

9.4.2. El Timer 2 como generador de baudios

En el 8052 el Timer 2 es configurado como generador de baudios inicializando


TCLK y/o RCLK en el registro T2CON tal como se indica en el Cuadro 9.2

_________________________________________________________________________
ITMAR, Mazatlán 121 Ing. Rufino J. Domínguez Arellano
El Microprocesador 8051 CAP 9

CUADRO 9.2

Se puede observar a la derecha de la Figura 9.1, que las velocidades en baudios


para la transmisión y recepción pueden ser diferentes, según se active RCLK y/o
TCLK y así poder actuar simultáneamente con el Timer 1 y el Timer 2.

EI modo generador de baudios actúa de forma similar que el modo «autorrecarga»


estudiado en el Capítulo 7. Al producirse el ciclo de «desbordamiento» en TH2, los
registros de conteo del Timer 2 son recargados con los valores de 16 bits de los
registros RCAP2H y RCAP2L que previamente fueron inicializados por software.

Los baudios en Modo 1 y 3 son determinados por la relación de desbordamiento


del Timer 2. De una forma general se pueden expresar así:

Relación de desbordamiento Timer 2


BAUDIOS en modos 1 y 3 =
16

Figura 9.1
_________________________________________________________________________
ITMAR, Mazatlán 122 Ing. Rufino J. Domínguez Arellano
El Microprocesador 8051 CAP 9

Concretando, el Timer 2 puede ser configurado bien como temporizador o como


contador. En la mayoría de las aplicaciones se configura como Timer (C/T2 =0). La
operación como Timer en el modo «generador de baudios» es un poco diferente
de la estudiada como «temporizador» en el Apartado 7.3.2. Normalmente como
«temporizador común» el registro de conteo se incrementaba cada ciclo máquina,
es decir, a 1/12 de la frecuencia del oscilador. Como «generador de baudios» se
incrementa cada periodo de estado, es decir, a 1/2 de la frecuencia del oscilador.
En este caso los baudios están dados por la fórmula:

frecuencia del oscilador


BAUDIOS en modos 1 y 3 =
32 (65536 - RCAP2H : RCAP2L)

donde (RCAP2H:RCAP2L) es el contenido de dichos registros en formato de 16


bits, como enteros y sin signo.

Un estudio más detallado de la Figura 9.1 indica que para que actúe como
«generador de baudios» debe ser RCLK = TCLK = 1 en T2CON, como indica la
figura. El ciclo de «desbordamiento» en TH2 no activa el indicador TF2 ni produce
interrupción, aspecto este que podría darse en los timers del Capítulo 7. Por
consiguiente, cuando se utilice el Timer 2 como «generador de baudios» no se
debe desactivar la interrupción del Timer 2. Obsérvese además que, si EXEN2 se
activa, una transición descendente en el pin T2EX activará la bandera EXF2, pero
no causará recarga del Timer 2. Así pues, cuando el Timer 2 se utilice como
generador de baudios, T2EX puede ser empleado, si se desea, como un
generador de interrupciones externas.

Se aconseja no leer ni escribir los registros TH2 y TL2 cuando el Timer 2 está
trabajando {TR2=1) como «generador de baudios». Bajo estas condiciones el
registro de conteo se incrementa cada periodo de «estado» y el resultado de una
lectura o escritura puede producir una pérdida de exactitud en la evaluación del
tiempo. Los registros RCAP pueden ser leídos, pero no deben ser escritos, puesto
que se podría producir solapamiento en la «recarga» y originar errores de escritura
y/o recarga. Si se desean hacer estas operaciones, desconéctese el Timer 2
(desactivar TR2) antes de acceder al Timer 2 o a los registros RCAP. A
continuación describiremos en detalle los cuatro modos de operación.

9.5. COMUNICACIONES EN MODO 0.

Este modo se establece desde los bits 6 y 7 {SM0-SM1) de SCON {Véase Cuadro
9.1 ).

_________________________________________________________________________
ITMAR, Mazatlán 123 Ing. Rufino J. Domínguez Arellano
El Microprocesador 8051 CAP 9

Como se ha dicho anteriormente la entrada y salida de datos en serie se produce


a través del pin 10 {RXD) del microcontrolador. El pin 11 (TXD) es la salida de los
pulsos de desplazamiento {Shift Clock). Ocho bits de datos se transmiten o
reciben comenzando por el menos significativo {LSB). La velocidad es fija y
corresponde a 1/12 de la frecuencia del oscilador del microcontrolador. En la
Figura 9.2 se muestra un diagrama simplificado y funcional del puerto serie en
Modo 0.

Para poder seguir mejor el proceso de comunicación en Modo 0, utilícense los


cronogramas de la Figura 9.3 al tiempo que se lee el siguiente texto.

La transmisión es iniciada por cualquier instrucción que utiliza SBUF como registro
de destino. La señal de «escritura en SBUF» en el estado S6P2, también carga un
«1» en la posición novena del registro de desplazamiento de transmisión e indica
al bloque control TX que comience la transmisión. El intervalo de tiempo que
transcurre desde «la escritura en SBUF» y la activación de la señal de control
SEND es igual aun ciclo máquina completo.

SEND autoriza la salida del dato contenido en el registro de desplazamiento de


una forma alternada a través del pin 10 {RXD =P3.0) y también autoriza la salida
de la señal de reloj simétrica (Shjft Clock) a través del pin 11 {TXD =P3.1 ).

La señal TXD {SHIFT CLOCK) está a nivel bajo durante los estados S3, S4 y S5
de cada ciclo máquina, ya nivel alto durante los estados S6, S1 y S2. En la fase
S6P2 de cada ciclo máquina en el que SEND es activa, el contenido del registro
de desplazamiento transmisor se desplaza a la derecha una posición.

Por cada bit de dato que se desplaza al exterior por la derecha un bit «cero»
ingresa por la izquierda. Cuando el bit más significativo {MSB) del byte de datos
está en la posición de salida del registro de desplazamiento, entonces el «1» que
fue inicialmente cargado en la posición novena se encuentra a la izquierda del
MSB y todas las posiciones a la izquierda de éste contienen «ceros». Esta
condición previene al bloque de control TX para que haga un último
desplazamiento, desactive SEND y active la señal de interrupción TI. Estas
acciones ocurren en la fase S1P1 del décimo ciclo máquina después de «escribir
en SBUF».

La recepción es iniciada por la condición REN =1 y R1 =0. En la fase S6P2 del


siguiente ciclo máquina, la unidad de control RX escribe los bits 11111110 en el
registro de desplazamiento receptor, y en la siguiente fase de reloj activa
RECEIVE.

La señal de control RECEIVE autoriza la salida de la señal de reloj simétrica


SHIFT CLOCK por la línea TXD. SHIFT CLOCK efectúa la transición en la fase
S3P1 y S6P1 de cada ciclo máquina. En la fase S6P2 de cada ciclo máquina en
que la señal de control RECEIVE es activa, el contenido del registro de
desplazamiento receptor es desplazado a la izquierda una posición. El bit que
_________________________________________________________________________
ITMAR, Mazatlán 124 Ing. Rufino J. Domínguez Arellano
El Microprocesador 8051 CAP 9

ingresa desde el exterior por la derecha es el bit de dato que ha sido muestreado
en el pin 10 (RXD=P3.0) en la fase S5P2 del mismo ciclo máquina.

Figura 9.2

Como los bits de datos entran por la derecha, los «unos» cargados inicialmente
son desplazados «afuera» por la izquierda. Cuando el «0» cargado inicialmente se
encuentre en el extremo izquierdo del registro de desplazamiento, entonces el
bloque de control RX hace un último desplazamiento y carga SBUF, con el byte
ingresado. En el estado S1P1 del décimo ciclo máquina después de la escritura en
SCON, la señal de control RECEIVE es borrada y la bandera de interrupción RI es
puesta a «1».

_________________________________________________________________________
ITMAR, Mazatlán 125 Ing. Rufino J. Domínguez Arellano
El Microprocesador 8051 CAP 9

Figura 9.3

9.5.1. Resumen comunicaciones en Modo 0

-Longitud palabra dato: 8 bits. Primero el bit LSB.


-Formato palabra dato:

_________________________________________________________________________
ITMAR, Mazatlán 126 Ing. Rufino J. Domínguez Arellano
El Microprocesador 8051 CAP 9

- Esquema simplificado de comunicaciones:

Figura 9.4

Ejercicio 9.1. Transmisión en Modo 0

• Objetivos

-Programar el puerto serie como transmisor en Modo 0.


-Transmitir por el puerto serie el byte que se introduce en paralelo por el Puerto
0.
-Obtener la señal de sincronismo y visualizarla por el pin TXD.

• Esquema

Como se ha indicado en los objetivos, por la línea RXD se obtiene el byte de datos
que previamente se captura en paralelo por el Puerto 0, como se indica en la

_________________________________________________________________________
ITMAR, Mazatlán 127 Ing. Rufino J. Domínguez Arellano
El Microprocesador 8051 CAP 9

Figura 9.5, la señal de sincronismo se obtiene en el pin TXD. El dato que se


transmite en el ejemplo es AAH.

Figura 9.5

ETIQUETA CODIGO

MOV SCON, #00 ; Pto. Serie en Modo 0. Transmisión.


CLR P2.0 ; Bit de aviso de transmision en cero.
B0205: MOV A, P0 ; Dato a transmitir.
MOV SBUF, A ; Inicia la transmisión.
SETB P2.0 ; Avisa que inicia la transmisión.
B020B: MOV A, SCON
JZ B020B ; ¿Ya se transmitió el 8º bit ?
CLR P2.0 ; Borra bit de aviso de transmisión.
LCALL SUB1 ; Solo un retardo.
CLR .TI ; Borro bandera de interrupcion.
; Esto permite que haya otra transmisión

SJMP B0205 ; Empiezo de nuevo.


;
SUB1: MOV R0, #01 ; Rutina de retardo.
B0302: MOV R1, # 03
B0304: MOV R2, #05
B0306: DJNZ R2, B0306
DJNZ R1, B0304

DJNZ R0, B0302


RET

_________________________________________________________________________
ITMAR, Mazatlán 128 Ing. Rufino J. Domínguez Arellano
El Microprocesador 8051 CAP 9

Ejercicio 9.2. Recepción en Modo 0

• Objetivos

-Programar el puerto serie como receptor en Modo 0.


-Recibir en el puerto serie el byte que se envía desde el exterior por el pin RXD.
-Efectuar el tratamiento de la comunicación utilizando interrupciones.

• Esquema del montaje

En la Figura 9.6 se observa cómo el dato se introduce utilizando un pulsador; la


frecuencia de captura en el pin RXD es tan elevada que sólo se puede observar la
presencia de «unos» o «ceros» en el Puerto 0 de salida.

Figura 9.6

_________________________________________________________________________
ITMAR, Mazatlán 129 Ing. Rufino J. Domínguez Arellano
El Microprocesador 8051 CAP 9

En el pin TXD se tendrán los impulsos de sincronismo que se corresponden con


los pulsos de reloj del registro de desplazamiento.

• Listado del programa

ETIQUETA CODIGO

ORG 0023H

LJMP 0400
;
;-------------------------------------------------------------------------
; Inicialización
ORG 200H
B0200: MOV IE, #90
MOV SCON, #10
LCALL RETARDO
SJMP B0200
;
;------------------------------------------------------------------------
; Rutina de RETARDO
ORG 300H

RETARDO: MOV R0, #02


B0302: MOV R1, #FF
B0304: MOV R2, #FF
B0306: DJNZ R2, B0306
DJNZ R1, B0304
DJNZ R0, B0302
RET
;
;-----------------------------------------------------------------------
; Rutina de Interrupción

; Realiza las siguientes tareas:


; 1) Sale del modo de recepción.
; 2) Salva registros en el slack.
; 3) Carga el contenido de SBUF en el ACC.
; 4) Visualiza el dato en paralelo en el Pulerlo P0
; 5) Temporiza su visualizaci6n.
; 6) Repone los registros del slack. .
;
ORG 400H

MOV SCON, #00


MOV A.R0
PUSH ACC
MOV A, R1

_________________________________________________________________________
ITMAR, Mazatlán 130 Ing. Rufino J. Domínguez Arellano
El Microprocesador 8051 CAP 9

PUSH ACC
MOV A, R2
PUSH ACC
MOV A, SBUF
MOV P0, A
LCALL RETARDO
POP ACC
MOV R2, A
POP ACC
MOV R1, A
POP ACC
MOV R0, A
RETI

9.6. COMUNICACIONES EN MODO 1

Seleccionado desde el registro SCON (Cuadro 9.1 ).

En esta opción 10 bits se transmiten a través del pin 11I (TXD=P3.1) o se reciben
a través del pin 10 (RXD=P3.0), de la siguiente manera:

- 1 bit de Start (0).


- 8 bits de datos (el primero, el LSB).
- 1 bit de stop (1).

En recepción el indicador RB8 del registro SCON es la imagen del bit de stop. En
el 8051 los baudios vienen dados por la razón de desbordamiento del Timer 1 .En
el 8052, vienen dados bien por la razón de desbordamiento del Timer 1 o del
Timer 2, o de ambos (uno para transmitir y el otro para recibir).

La Figura 9.7 muestra, de forma simplificada, un diagrama en bloques del puerto


serie en Modo 1 y la Figura 9.8 presenta el cronograma de las operaciones
secuenciadas en el tiempo de transmisión y recepción.

La transmisión se inicia con cualquier instrucción que utilice SBUF como registro
destino. La escritura en SBUF también carga un «1» en la posición del noveno bit
del registro de desplazamiento transmisor y alerta a la unidad de control TX que
una petición de transmisión ha sido solicitada. La transmisión comienza realmente
en la fase S1P1 del siguiente ciclo máquina que resulta después del ciclo de
desbordamiento del contador del timer dividido por 16 (así pues, «el tiempo de
bit» está sincronizado por el contador divisor por 16 y no por la señal de «escritura
en SBUF»).

_________________________________________________________________________
ITMAR, Mazatlán 131 Ing. Rufino J. Domínguez Arellano
El Microprocesador 8051 CAP 9

Figura 9.7

La primera operación de la unidad de control TX es activar la señal de control


SEND que pone el bit de start en el pin TXD. Un tiempo de bit más tarde, la señal
DATA se activa, lo que autoriza la salida del «bit» del registro de desplazamiento
transmisor a través del pin TXD. El primer pulso de desplazamiento ocurre un
«tiempo de bit» más tarde de la salida del primer bit de dato, como se puede ver
en el cronograma.

Como los bits de datos son desplazados al exterior por la derecha, sus lugares
son reemplazados por ceros por la izquierda. Cuando el MSB del byte de datos
está en la posición de salida del registro de desplazamiento, entonces el «1», que
ha sido inicialmente cargado en la novena posición, está a la izquierda del bit MSB
y el resto de posiciones a su izquierda están cargadas con ceros. Estas
condiciones alertan a la unidad de control TX para que realice un último

_________________________________________________________________________
ITMAR, Mazatlán 132 Ing. Rufino J. Domínguez Arellano
El Microprocesador 8051 CAP 9

desplazamiento y desactive la señal SEND y active el indicador TI (petición de


interrupción). Esto ocurre en el décimo ciclo de desbordamiento del contador
divisor por 16 después de la instrucción de «escritura en SBUF».

Figura 9.8

La recepción es iniciada al detectar la transición (flanco descendente) en el pin


RXD. Por este motivo este pin es muestreado a razón de 16 veces
independientemente de la velocidad en baudios que haya sido establecida.
Cuando una transición ha sido detectada, el contador divisor por 16 es
inmediatamente puesto a «cero» y el dato 1FFH se escribe en el registro de
desplazamiento. Poniendo a «cero» el contador divisor por 16, sincroniza los
ciclos de desbordamiento con los tiempos de bit entrantes.

Los 16 estados del contador dividen cada «tiempo de bit» en 16 intervalos. En los
estados 7, 8 y 9 de cada «tiempo de bit>, el «bit detector» muestrea el valor de
RXD. El valor aceptado es el que ha sido leído en al menos dos de las tres
muestras. Esto se hace para rechazar el ruido eléctrico. Si el valor aceptado
durante el primer «tiempo de bit> no es «cero», los circuitos receptor son
reseteados y la unidad vuelve a alertarse para detectar otra transición de flanco
descendente. Esto está previsto para rechazar falsos bits de start. Si el bit de start
resulta correcto, se desplaza dentro del registro de desplazamiento y lo mismo
haría con el resto de la cadena de bits.

Como los bits de datos ingresan en el registro de desplazamiento por la derecha,


los «unos» son desplazados fuera por la izquierda. Cuando el bit de Start llega a la
posición novena, la más extrema a la izquierda del registro de desplazamiento,
alerta al bloque de control RX para hacer un último desplazamiento, carga SBUF y
RB8, y activa la señal RI (interrupción). La señal para cargar SBUF y RB8, y para

_________________________________________________________________________
ITMAR, Mazatlán 133 Ing. Rufino J. Domínguez Arellano
El Microprocesador 8051 CAP 9

activar RI, se generará si las siguientes condiciones son satisfechas en el


momento en que el pulso final de desplazamiento se genera:

-- 1) R1=0, y
-- 2) bien SM2=0, o el bit de Stop recibido es igual a «1».

Si cualquiera de estas dos condiciones no se cumplen, la cadena de bits se pierde


irremediablemente. Si ambas condiciones se cumplen, el bit de Stop se alojará en
el indicador RBI, los 8 bits se ubicarán en el registro SBUF, y RI se activará. En
este intervalo de tiempo, tanto si las condiciones indicadas se cumplen como si no,
la unidad vuelve a muestrear el pin RXD para ver si se produce un flanco
descendente.

9.6.1, Resumen comunicaciones en Modo I

- Longitud palabra dato: 10 bits. Primero el bit LSB.


- Formato palabra dato:

- Esquema simplificado de comunicación:

-Velocidad de comunicación:

• Modo de carga y desbordamiento del Timer 1:

2SMOD
BAUDIOS = (desbordamiento)
32

_________________________________________________________________________
ITMAR, Mazatlán 134 Ing. Rufino J. Domínguez Arellano
El Microprocesador 8051 CAP 9

• Timer I como temporizador con «autorrecarga»:

2SMOD  frecuencia del oscilador 


BAUDIOS =  
32  12 (256 - TH1) 

• También utilizando el Timer 2 (véase Apartado 9.4.2),

-Transmisión : Comienza: Escribiendo el dato en SBUF


Termina: Activando el indicador TI

- Recepción : Comienza: Cuando REN=1 y se detecta un flanco


descendente (bit start) en RXD.
Termina: Activando la bandera RI

9.7. COMUNICACIONES EN LOS MODOS 2 Y 3

En esta opción 11 bits se transmiten a través de TXD, o se reciben a través de


RXD, de la siguiente manera:

- 1 bit de slart (0)


- 8 bits de datos (el primero el LSB),
- 1 bit noveno programable.
- 1 bit de Stop (1).

En la operación de transmisión el noveno bit de datos es la imagen del bit TB8


perteneciente al registro SCON, pudiendo asignarle el valor «0» o «1». En
recepción el noveno bit de datos se refleja en el bit RB8 del registro SCON.

La Figura 9.9 muestra el diagrama en bloques del puerto serie en el Modo 2. El


Modo 3 presenta el mismo diagrama en bloques que el Modo 1 (Figura 9.7),
siendo las diferencias mínimas, como se desprende de las explicaciones que
siguen a continuación.

_________________________________________________________________________
ITMAR, Mazatlán 135 Ing. Rufino J. Domínguez Arellano
El Microprocesador 8051 CAP 9

Figura 9.9

El cronograma representado en la Figura 9.10 muestra las operaciones


secuenciadas en el tiempo para la transmisión y recepción en el Modo 2 y 3. Las
diferencias, como se aclararán en las explicaciones que siguen, residen en la
velocidad de comunicación que en el Modo 2 es fija, mientras que en el Modo 3 la
velocidad de comunicación es variable.

_________________________________________________________________________
ITMAR, Mazatlán 136 Ing. Rufino J. Domínguez Arellano
El Microprocesador 8051 CAP 9

Figura 9.10

Como en los otros modos, la transmisión se inicia por una instrucción que utilice el
registro SBUF como destino. La señal de escritura en SBUF, también carga TB8
en la posición del noveno bit del registro desplazamiento transmisor y alerta a la
unidad de control TX para que proceda a la transmisión una vez sea solicitada. La
transmisión comienza en la fase S1P1 del ciclo de máquina siguiente que resulta a
partir del desbordamiento del contador del timer dividido por 16 (así pues, el
«tiempo de bit» está sincronizado con el contador divisor por 16, no con la señal
de «escritura en SBUF») (Figura 9.10).

La unidad de control TX comienza su gestión con la activación de SEND que pone


el bit de Starl en el pin TXD. Un «tiempo de bit» más tarde DATA se activa
autorizando la salida de los bits del registro de desplazamiento de transmisión a
través de TXD. El primer pulso de desplazamiento ocurre un «tiempo de bit»
después de la salida del primer bit de datos. También, en ese mismo instante, el
registro de desplazamiento envía un «1» (bit de Stop), que ocupa la posición del
noveno bit en el registro de desplazamiento. Después, sólo «ceros» se almacenan
en dicho registro. Así pues, como los bits de dalos son desplazados al exterior por
la derecha, por la izquierda se introducen bits «ceros». Cuando el bit reflejado de
TB8 en el registro de desplazamiento está en la posición de salida, entonces el bit
de Stop se encuentra justo a la izquierda del TB8 y todos los bits a la izquierda de
éste son «ceros». Esta condición alerta a la unidad de control TX para que haga el
último desplazamiento y entonces desactive SEND y active el indicador TI
(interrupción en la transmisión). Esto sucede en el undécimo ciclo de
desbordamiento del contador-divisor por 16 después de la «escritura en SBUF».

_________________________________________________________________________
ITMAR, Mazatlán 137 Ing. Rufino J. Domínguez Arellano
El Microprocesador 8051 CAP 9

La recepción se inicia al detectar en el pin RXD una transición descendente. Por


este motivo el pin RXD es muestreado a razón de 16 veces, independientemente
de la velocidad en baudios establecida. Cuando una transición ha sido detectada,
el contador-divisor por 16 es inmediatamente puesto a «cero» y el dato 1FFH se
escribe en el registro de desplazamiento.

En los eslados 7, 8 y 9, correspondientes al intervalo de un «tiempo de bit», el


«detector de bit» muestrea el valor de RXD. El valor aceptado es el que ha sido
leído en al menos dos de las tres muestras. Si el valor aceptado durante el primer
«tiempo de bit> no es «cero», los circuitos receptores son puestos a «cero» y la
unidad vuelve a alertarse para detectar una nueva transición de flanco
descendente. Si el bit de start resulta correcto, éste es ingresado en el registro de
desplazamiento, y lo mismo sucederá con el resto de la cadena.

Como los bits de datos ingresan en el registro de desplazamiento por la derecha,


los «unos» son desplazados al exterior por la izquierda. Cuando el bit de Stara
llega a la posición más extrema ala izquierda del registro de desplazamiento (que
en los Modos 2 y 3 es el noveno bit), alerta al bloque de control RX para hacer un
último desplazamiento, carga SBUF y RB8 y activa el indicador RI (interrupción en
e] modo receptor). La señal para cargar SBUF y RB8, y para activar RI, se genera
si las siguientes condiciones son satisfechas en el momento en que el pulso final
de desplazamiento se produce:

- 1) RI =-O y
- 2) bien SM2 =0; o el noveno bit recibido es igual a «1».

Si cualquiera de estas condiciones no se cumple, la cadena recibida se pierde y RI


no se activa. Si ambas condiciones se cumplen, el noveno bit de datos se alojará
en la bandera RBI, y los primeros 8 bits de datos se alojarán dentro del registro
SBUF. Un «tiempo de bit> más tarde, se cumplan o no las condiciones indicadas
más arriba, la unidad vuelve a comprobar la transición descendente en la entrada
RXD.

Obsérvese que el valor del bit de Stop recibido es irrelevante para SBUF, RB8 o
RI.

9.7.1. Resumen comunicaciones Modo 2 y 3

- Longitud palabra dato: 11 bits.


- Formato palabra dato:

_________________________________________________________________________
ITMAR, Mazatlán 138 Ing. Rufino J. Domínguez Arellano
El Microprocesador 8051 CAP 9

- Velocidad de comunicación:

Se puede utilizar el Tirner 1 o el Tirner 2.

• Para el Modo 2:

2SMOD
BAUDIOS = (frecuencia del oscilador)
64

• Para el Modo 3 (velocidad variable):

2SMOD  frecuencia del oscilador 


BAUDIOS =  
32  12 (256 - TH1) 

- Transmisión: Comienza: Escribiendo en SBUF


TermIna: ActIvando el indicador TI

- Recepción : Comienza: Cuando REN=1 y se detecta un flanco


descendente (bit Start) en RXD

Termina: Activando el indicador RI

_________________________________________________________________________
ITMAR, Mazatlán 139 Ing. Rufino J. Domínguez Arellano

También podría gustarte