Está en la página 1de 24

EL PUERTO SERIE RS-232

Introduccin............................................................................................................................2
Que es el puerto Serie?........................................................................................................2
Conectores...........................................................................................................................4
Funciones de DOS Y BIOS
..4
Direcciones..........................................................................................................................5
Transmisin de datos...........................................................................................................6
La estructura de datos del Puerto Serie RS-232..................................................................7
1. PRINCIPIOS DE TRANSMISIN EN SERIE..................................................................8
1.1 Metodos de transmision en serie...................................................................................8
2. ESTANDAR RS-232..........................................................................................................9
2.1 Historia......................................................................................................................9
2.2 Descripcion del estandar.........................................................................................10
2.2.1 Caracteristicas electricas......................................................................................10
2.2.2 Caracteristicas mecanicas....................................................................................10
3. PUERTO SERIE DE LA PC.............................................................................................15
3.1. La UART (Universal asynchronous receiver transmiter).......................................15
3.2. Direcciones de entrada/salida e IRQs....................................................................17
4. CONFIGURACION DEL PUERTO SERIE EN WINDOWS..........................................18
5. Conexin de un microcontrolador al puerto serie del PC...........................20
5.1 El chip MAX 232....................................................................................................21
6. PROGRAMA DE EJEMPLO EN ENSAMBLADOR......................................................22

EL PUERTO SERIE RS-232

Introduccin
QueeselpuertoSerie?
Considerada como una de los ms bsicas conexiones externas a una computadora,
el puerto serie ha sido una parte integral de todas las computadoras por mas de 20 aos. A
pesar de que muchos sistemas nuevos han abandonado el puerto serie completamente y
adoptado conexiones por USB, muchos modems aun usan el puerto serie, as como algunas
impresoras, PDAs y cmaras digitales. Pocas computadoras tienen mas de 2 puertos serie.

Dos puertos serie en una computadora


Esencialmente, los puertos serie proveen un conector estndar y un protocolo que te
permite conectar dispositivos, tales como modems, microcontroladores, etc, a a tu
computadora.
Todos los sistemas operativos en uso hoy en da suportan los puertos serie, por que estos
puertos se han usado por dcadas. Los puertos paralelos son un invento mas reciente y mas
rpidos que los puertos serie. Los puertos USB tienen solo algunos aos y en un futuro
reemplazaran tanto a los serie como a los paralelos.
El trmino "serial" viene del hecho de que el puerto serie "serializa" los datos. Esto
quiere decir que toma un byte de datos y transmite los 8 bits del byte uno a la vez. La
ventaja del puerto serie es que necesita nicamente 1 solo cable para transmitir los 8 bits
(mientras que un puerto paralelo necesita 8). La desventaja es que dura 8 veces mas para
transmitir el dato que si tuviramos 8 cables.
Antes de cada byte de informacin , el puerto serial manda un bit de comienzo (start bit),
el cual es un bit con valor de 0. Despus de cada byte de datos, este manda un bit de parada
(stop bit) para indicar que el byte ha sido completado. Algunas veces tambin se manda un
bit de paridad.

Los puertos serie, tambin llamados puertos de comunicacin (COM), son bidireccionales. La comunicacin bidireccional permite a cada dispositivo recibir datos, as
como tambin transmitirlos. Los dispositivos seriales usan distintos pines para recibir y
transmitir datos. Usando el mismo pin, limitara la comunicacin a half-duplex, esto quiere
decir que la informacin solamente podra viajar en una direccin a la vez. Usando distintos
pines, permite que la comunicacin sea full-duplex, en la cual la informacin puede viajar
en ambas direcciones al mismo tiempo.

Este chip de 40 pines es una variacin del chip UART de


National Semiconductor NS16550D

Los puertos seriales dependen de un chip especial como controlador, el Universal


Asynchronous Receiver/Transmitter (UART), para funcionar correctamente. El UART
toma la salida paralela del bus del sistema de la computadora y lo transforma en forma
serial, para transmitirse a travs del puerto serie. Con la finalidad de que funcione ms
rpido, la mayora de los chip UART tienen un buffer integrado que varia de 16 a 16kB de
capacidad. Este buffer permite almacenar datos que vienen del bus del sistema, mientras
procesa los datos de salida (por el puerto serie). Mientras la mayora de los puertos serie
tienen una velocidad de transferencia de 115Kbps (kilobits por segundo), los puertos
seriales de alta velocidad tales como el Enhanced Serial Port (ESP) y el Super
Enhanced Serial Port (Super ESP), pueden alcanzar velocidades de transferencia de
460Kbps.

Una tarjeta de puerto seria doble

Conectores
En nuestros PC's, se emplea como conector del interface serie un
terminal macho al que llamaremos DTE (Data Terminal Equipment)
que, a travs de un cable conectamos a un perifrico que posee un
conector hembra al que llamaremos DCE (Data Comumunications
Equipment). En nuestro terminal DTE, tenemos las siguientes
conexiones (para un conector DB-25):
PIN
1
2
3
4
5
6
7
8
20
23

Nombre
P.G.
TD
RD
RTS
CTS
DSR
GND
DCD
DTR
DSRD

Direccin
--->DCE
-->DTE
-->DCE
-->DTE
-->DTE
--->DTE
-->DCE
<-->

Funcin
Tierra de seguridad
Salida datos DTE
Entrada de datos DTE
Peticin de emisin DTE
Listo para trasmitir DCE
CE listo para com. con DTE
Masa comn del circuito
Deteccin de portadora
Seal de terminal disponible
Indicador de velocidad de Tx.

FuncionesdeDOSyBIOS
Hay dos maneras de direccionar el puerto serie, a traves de la interrupcin 14H de la BIOS
y a traves de la interrupcin 21H del DOS.
La interrupcin 14H de la BIOS utiliza cuatro funciones para programar el puerto serie.
Cada funcion es seleccionada asignando un valor al registro AH del microprocesador. Las
cuatro funciones son listadas a continuacin:

Funcion 00H: Inicializa el puerto serie y selecciona la velocidad, el numero de bits de


datos de start y de stop y los parametros de paridad.
Funcion 01H: Envia un caracter al puerto serie especificado.
Funcion 02H: Lee un caracter desde el puerto serie especificado.
Funcion 003: Devuelve el estado del puerto serie especificado.
Hay varias funciones de la interrupcin 21H del DOS relacionadas a la operacion del puerto
serie:
Funcion 03H: Lee un caracter desde el puerto COM1.
Funcion 04H: Escribe un caracter desde el puerto COM1.
Funcion 40H: Esta funcion envia un numero de bytes des de un buffer a un dispositivo
especificado.

Direcciones
El puerto serie utiliza direcciones y una lnea de seales, un IRQ
para llamar la atencin del procesador. Adems el software de
control debe conocer la direccin.
La mayora de los puertos series utilizan direcciones standard
predefinidas. stas estn descritas normalmente en base
hexadecimal. Cuando se instala un nuevo puerto, normalmente se
mueve un jumper o switch para seleccionar un puerto (COM1,
COM2, COM3, etc., con lo que se asigna una direccin y una
interrupcin usada por la tarjeta del puerto.
Las direcciones e IRQ usadas por los puertos serie fueron definidas
al disear el ordenador originalmente ; sin embargo, las del COM3 y
COM4 no se han definido oficialmente, aunque estn aceptadas por
convenios.
Las seales son :
Direccin
COM1
COM2
COM3
COM4

Interrupcin
3F8
2F8
3E8
2E8

(IRQ)
4
3
4
3

Se pueden aadir gran cantidad de puertos serie a un PC, ya que


existe gran flexibilidad a la hora de definir direcciones no standard,
siempre que se encuentren entre el rango 100 y 3FF hexadecimal y
siempre que no entren en conflicto con otros dispositivos.

Los ordenadores IBM PS/2 usan la Microchannel Architecture, que


define las direcciones e IRQs para los puertos desde COM1 a
COM8:
Direccin
COM1
COM2
COM3
COM4
COM5
COM6
COM7

Interrupcin
3F8
2F8
3E8
2E8
4220
4228
5220

(IRQ)
4
3
4
3
3
3
3

Transmisindedatos
Para el protocolo de transmisin de datos, slo se tienen en cuenta
dos estados de la lnea, 0 y 1, tambin llamados Low y High. Cuando
no se transmite ningn carcter, la lnea esta High. Si su estado pasa
a Low, se sabe que se transmiten datos. Por convenio se transmiten
entre 5 y 8 bits, pero la BIOS slo soporta una anchura de datos de 7
u 8 bits. Durante la transmisin, si la lnea est Low, se enva un 0 y
si est High indica un bit a uno. Se enva primero el bit menos
significativo, siendo el ms significativo el ltimo en enviarse.
A continuacin se enva un bit de paridad para detectar errores.
Finalmente se mandan los bits de stop, que indican el fin de la
transmisin de un carcter. El protocolo permite utilizar 1, 1,5 y 2 bits
de stop.
El nmero de bits que componen cada palabra dependen del cdigo
a emplear, as, si se quieren transmitir datos ASCII normales, sern
de 7 bits, pero si se quiere enviar el juego completo de caracteres,
cada una debera estar formada por 8 bits.
Dependiendo de esto, si se emplea paridad y el numero de bits de
stop, se mandarn un determinado nmero de caracteres
dependiendo de la velocidad en baudios (bits por segundo) por el
puerto serie.

En la siguiente figura se puede ver con detalle la transmisin del


carcter ASCII A, que es el 65 y su representacin binaria es
0100001.

LaestructuradedatosdelPuertoSerieRS232
La comunicacin de datos en un puerto serial, se usa normalmente para efectuar
comunicaciones asncronas, es decir, sin tiempo preestablecido para iniciarse, es decir, los
datos llegan en rfagas paquetes de informacin, normalmente cada paquete es de 8
bits=1 byte (equivalente a un carcter en cdigo ASCII), algunos equipos envan caracter
por caracter, otros guardan muchos caracteres en la memoria y cuando les toca enviarlos,
los envanuno tras otro.
Uno de los parmetros ms importantes en la comunicacin serie, es la velocidad con la que
los datos se transmiten, para el caso del RS-232, pueden transmitir de los 300 Baudios (1
Baudio=1 bit/seg) hasta 115,200 Baudios, la velocidad depende de los equipos conectados
en el puerto serie y la calidad y longitud de los cables. Otro de los parmetros de
trascendencia es el bit de inicio, es decir, el bit que le indica al puerto receptor que va a
llegar un Byte de informacin.
Hay dos tipos de paridad adicional que se usan y estos son:
Marca (mark)
El bit de paridad que se intercala siempre es un uno.
Espacio (space)
El bit de paridad que se intercala siempre es un cero.

y el nmero de bits que se emplean para cada paquete, pueden ser 5, 6, 7 u 8.


Es as como la comunicacin serie RS-232 es la comunicacin de Datos ms empleada en
el mundo, ya que utiliza pocos alambres cables para lograrlo y mediante los mdems, es
la forma de intercomunicar computadoras, comunicarse a travs de internet, control a
distancia y muchas otras aplicaciones.

El estndar RS-232-EIA, es equivalente al V.24 del CCITT (Consultive Commitee


International
Telegraph and Telephone), este comit es internacional y hace recomendaciones de carcter
mundial.

1. PRINCIPIOS DE TRANSMISIN
EN SERIE
El concepto de las comunicaciones en serie es el siguiente, los datos son
enviados del emisor al receptor bit a bit a traves de una unica linea o
circuito. El puerto serie toma 8, 16 o 32 bits en paralelo del bus del
computador y los convierte en un flujo de 8, 16 o 32 bits en serie. El
nombre de transmision en serie viene de aqui, cada bit de informacion
es transmitido en serie de un sitio a otro.
En la practica en una transmison en serie algunos bits pueden perderse
o bien ser aadidos y por lo tanto alterar el resultado final. Si un bit se
pierde o se aade, todos los bits sucesivos son cambiados de posicion y
se obtiene un resultado incorrecto. Asi que para establecer
comunicaciones en serie fiables se deben corregir posibles errores en la
transmision.

1.1Metodosdetransmisionenserie
Existen dos metodos de transmision en serie que corrigen errores de bit.
El primero es la comunicacion sincrona. El emisor y el receptor son
sincronizados usando una seal de reloj que indica el tiempo entre cada

bit. Controlando esta seal, el receptor puede determinar si se ha


perdido o se ha aadido un bit. Por ejemplo, imaginemos una cinta
transportadora en la que un producto pasa a traves de un sensor cada
cinco segundos, si el sensor detecta algo antes de cinco segundos
asume que es un objeto extrao y suena la alarma, si despues de cinco
segundos no detecta nada asume que el producto se ha perdido y suena
la alarma. Un aspecto a tener en cuenta en este tipo de comunicacion es
que si alguno de los extremos de la comunicacion pierde la seal de
reloj, la comunicacion finaliza.
El metodo alternativo, conocido como comunicacion asincrona, es
aadir marcadores dentro del flujo de bits para seguir la pista a cada bit
de datos. Si se introduce un bit de comienzo que indica el comienzo de
un bloque de bits, la posicion de cada bit puede ser determinada
temporizando los bits en periodos regulares. Enviando bits de comienzo
al principio de cada bloque de bits, los dos extremos no tienen que estar
sincronizados por una seal de reloj. Al utilizar bloques de pequeo
tamao no hay tiempo para que el temporizador se desincronize. El
unico factor importante es que receptor y emisor tengan configurada la
misma velocidad en el puerto. Los datos se dividen en bloques de 5 a 8
bits llamados palabras. El bit menos significativo de la palabra se envia
primero y el mas significativo el ultimo. En la comunicacion el emisor
codifica cada palabra aadiendo al principio de esta un bit de comienzo y
uno o dos bits de parada al final. Algunas veces se aade un bit de
paridad entre el ultimo bit de la palabra y el bit de parada para
comprobar la integridad de los datos. En el siguiente ejemplo puede
verse la composicion de un bloque de datos y como es sincronizado con
la seal de reloj. En el ejemplo se usa una palabra de 8 bits con paridad
impar y un bit de parada.

2.ESTANDARRS232
2.1 Historia
En los aos 60, cada fabricante usaba un interfaz diferente para
comunicar un DTE (Data Terminal Equipment) y un DCE (Data
Communications Equipment). Cables, conectores y niveles de voltage
eran diferentes e incompatibles, por lo tanto, la interconexion entre
equipos de diferentes fabricantes requeria el uso de convertidores de los
niveles de voltage y la fabricacion de cables y conectores especiales.

En 1969, el EIA (Electronic ---) junto con Bell Laboratories y otros


fabricantes establecieron un estandar para la interfaz entre DTE's y DCE
s. El objetivo de este estandar era simplificar la interconexion de
equipos fabricados por diferentes firmas.
Este estandar llego a ser el RS-232-C (Recommended Standard number
232, revision C from the Electronic Industry Association). Un estandar
similar fue desarrollado en Europa por el CCITT (Comite Consultatif
Internatinale de Telegraphie et Telephonie) conocido como V.24
(descripcion funcional) y V.28 (especificaciones electricas). El RS-232-C
fue adoptado por la mayor parte de fabricantes de terminales y
equipamiento.
En 1980 la creciente industria de los microcomputadores encontro el
estandar RS-232-C barato y apropiado para conectar perifericos al
microcomputador. El RS-232-C llego a ser rapidamente un estandar para
conectar al microcomputador: impresoras, cintas de backup, terminales
y otros microcomputadores.
Como el estandar solamente soporta velocidades de transmision hasta
20 kbps y distancias hasta 16 metros, se adoptaron nuevos estandares
por la EIA. El RS449 (descripcion mecanica) y RS423 (descripcion
electrica) son compatibles con el RS-232-C y se puede operar a
velocidades de hasta 10 Mbps y alcanzar distancias de hasta 1200
metros. Sin embargo, la adopcion de un nuevo estandar es un proceso
largo y costoso. El RS-232-C esta muy expandido y por lo tanto le queda
bastante vida.

2.2 Descripcion del estandar


El estandar RS-232-C describe un interfaz entre un DTE y un DCE que
emplea un intercambio en serie de datos binarios. En el se definen
caracteristicas electricas, mecanicas, funcionales del interfaz y modos de
conexion comunes. Las caracteristicas electricas incluyen parametros
tales como niveles de voltage e impedancia del cable. La seccion
mecanica describe los pines. La descripcion funcional define las
funciones de las seales electricas que se usan.

2.2.1 Caracteristicas electricas


Los niveles de voltage descritos en el estandar son los siguientes:
Seales de datos
"0"
"1"
Emisor (necesario)
de 5 a 15
de -5 a -15
Voltios
Receptor (esperado)
de 3 a 25
de -3 a -25
Voltios

Seales de control
"Off"
"On"
Emisor (necesario)
de -5 a -15
de 5 a 15
Voltios
Receptor (esperado)
de -3 a -25
de 3 a 25
Voltios
Puede verse que los voltajes del emisor y el receptor son diferentes.
Esta definicion de los niveles de voltaje compesa las perdidas de voltaje
a traves del cable. Las seales son atenuadas y distorsionadas a lo largo
del cable. Este efecto es debido en gran parte a la capacidad del cable.
En el estandar la capacidad maxima es de 2500 pf (picoFaradios). La
capacidad de un metro de cable es normalmente de 130 pf. Por lo tanto,
la longitud maxima del cable esta limitada a unos 17 metros. Sin
embargo, esta es una longitud nominal definida en el estandar y es
posible llegar hasta los 30 metros con cables de baja capacidad o
utilizando velocidades de transmision bajas y mecanismos de correccion.

2.2.2 Caracteristicas mecanicas


En el estandar no se hace referencia al tipo de conector que debe
usarse. Sin embargo los conectores mas comunes son el DB-25 (25
pines) y el DB-9 (9 pines). El conector hembra debe estar asociado con
el DCE y el macho con el DTE.

Diagrama de los conectores DB-25 y DB-9

En la
DB25
Pin
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

siguiente tabla puede verse la seal


DB9
Nomb
DTEEIA CCITT
Pin
re
DCE
FG
AA 101
3
TD
BA 103
-->
2
RD
BB 104
<-7
RTS CA 105
-->
8
CTS CB 106
<-6
DSR CC 107
<-5
SG
AB 102
1
DCD CF
109
<--

4
9

SDCD
SCTS
STD
TC
SRD
RC

SCF
SCB
SBA
DB
SBB
DD

122
121
118
114
119
115

SRTS
DTR
SQ
RI

SCA 120
CD 108.2
CG 110
CE
125
CH/C 111/11
I
2
DA 113

asociada a cada pin.


Nombre Formal

-->
-->
<-<--

Frama Ground
Transmitted Data
Received Data
Request To Send
Clear To Send
Data Set Ready
Signal Ground
Data Carrier Detect
+P
-P
No asignado
Secondary Data Carrier
Secondary Clear To Send
Secondary Transmitted
Transmission Signal
Secondary Received Data
Receiver Signal Element Timing
No asignado
Secondary Request To Send
Data Terminal Ready
Signal Quality Detector
Ring Indicator

<-->

Data Signal Rate Selector

<--

Transmitter Signal
No asignado

<-<--->
<-<--->

2.2.3 Seales del puerto

Cada una de las seales pertenece a un tipo de circuito distinto. En el


nombre EIA de la seal se hace referencia al circuito al que pertenece.
(A) Tierra
(B) Datos
(C) Control
(D) Tiempo
(S) Canal secundario
Protective Ground (AA)
This line is connected to the power ground of the serial adapter. It
should not be used as signal ground. Connect this line to the screen of

the lead wire (if applicable). By connecting this line on both sides you
make sure that no large currents flow through the signal ground in case
of an insulation defect or other defect on either side. On the other side,
when two devices are seperated by great dinstances you may not wish
to use tis signal, because of different ground potential and it is possible
that it may carry a substantial current as a ground loop. If it is great
enough, it may cause electrical interference.
Transmitted data (BA)
Esta seal es usada para transmitir datos del DTE al DCE. Se mantiene
con un 1 logico cuando no hay nada que transmitir. El terminal empieza
a transmitir cuando un uno logico esta presente en las siguientes lineas:
Clear To Send, Data Terminal Ready, Data Set Ready, Data Carrier
Detect
Received data (BB)
La seal es usada por el DTE para recibir datos desde el DCE. El terminal
empieza a transmitir cuando un 1 logico esta presente en las siguientes
lineas: Request To Send, Data Terminal Ready, Data Set Ready, Data
Carrier Detect.
Request To Send (CA)
El DTE utiliza esta seal cuando quiere transmitir al DCE. En
combinacion con la seal Clear To Send coordina la transmision de datos
entre el DTE y el DCE Un cero logico en esta linea mantiene al DCE en
modo de transmision, es decir, el DCE recibe datos del DTE y los
transmite. Una transicion On-Off en esta linea hace que el DCE complete
la transmision de datos y cambie al modo de recepcion (el DCE recibe
datos y los transmite al DTE). En una linea half-duplex, cuando el DTE
tiene que enviar datos activa la seal Request To Send y entonces
espera hasta que el DCE cambia del modo de recepcion al modo de
transmision. Cuando la transmision es posible el DCE activa la seal
Clear To Send y la transmision puede empezar. En una linea full duplex
las seales Request To Send y Clear To Send estan activadas
permanentemente
Clear To Send (CB)
Se trata de una seal de respuesta al DTE. Cuando esta seal esta
activa, indica al DTE que puede empezar a transmitir. Por ejemplo,
cuando un modem se conecta a otro modem por la red telefonica.
Cuando esta senal esta activa junto con las seales Request To Send,
Data Set Ready y Data Terminal Ready, el DTE puede estar seguro de
que los datos seran enviados por el enlace de comunicacion. Sin
embargo, cuando si las seales Data Set Ready y Data Terminal Ready
no estan implementadas, como en una conexion local que no involucra
la red telefonica, las seales Clear To Send y Request To Send son
suficientes para controlar la transmision de datos.

Data Set Ready (CC)


En esta linea el DCE le indica al DCE que el canal de comunicacion esta
disponible. Por ejemplo, cuando un modem ha establecido una conexion
con un modem remoto y esta en modo de transmision.
Signal ground
Esta seal es la tierra usada como punto de referencia para todas las
seales recibidas o transmitidas. Es muy importante y debe de estar
presente en toda comunicacion.
Data Carrier Detect (CF)
Esta seal es utilizada por el DCE para indicarle al DTE que se ha
establecido una portadora con el dispositivo remoto.
+P
Este pin se mantiene a +12 Voltios para test
-P
Este pin se mantiene a -12 Voltios para test
Secondary Receive Line Signal Detect (SCF)
Esta seal esta activa cundo el canal de comunicacion secundario recibe
una portadora. Es analoga a la seal Receive Line Signal Detect.
Secondary Clear To Send (SCB)
Cuando esta activa le indica al DTE que puede empezar a transmitir por
el canal secundario. Equivalente a la seal Clear To Send.
Secondary Transmitted Data (SBA)
Por esta linea se envian los datos del canal secundario del DTE al DCE.
Esta seal es equivalente a la seal Transmitted Data.
Transmission Signal Element Timing (DB)
En esta linea el DCE envia una seal de reloj al DTE. Lo que permite al
DTE introducir esta seal de reloj en el circuito de transmision de datos.
Una transicion On-Off marca el centro de cada elemento de seal (bit)
en la linea Transmitted Data. La frecuencia de la seal de reloj es la
misma a la que se envian los datos.
Secondary Receive Data (SBB)
La seal es usada por el DTE para recibir datos del canal secundario
desde el DCE. Cuando se utiliza el canal secundario para diagnostico o
para interrumpir el flujo de datos en el canal primario, esta seal no
esta implementada.
Receiver Signal Element Timing (DD)
En esta linea el DCE envia una seal de reloj al DTE. Lo que permite al
DTE introducir esta seal de reloj en el circuito de recepcion de datos.
Una transicion On-Off marca el centro de cada elemento de seal (bit)
en la linea Transmitted Data. La frecuencia de la seal de reloj es la
misma a la que se reciben los datos.
Secondary Request To Send (SCA)
El DTE utiliza esta seal cunado quiere transmitir al DCE por el canal
secundario. Es equivalente a la seal Request To Send

Data Terminal Ready (CD)


Cuando esta activa le indica al DCE que el DTE esta listo para recibir
datos . Esta seal debe estar activa antes de que el DCE pueda activar
la seal Data Set Ready indicando que esta conectado al enlace de
comunicacion. Cuando la linea pasa a estar desactivada, el DCE finaliza
la comunicacion.
Signal Quality Detector (CG)
Esta linea es utilizada por el DCE para indicar si existe una alta
probabilidad de error en los datos recibidos. Cuando hay una
probabilidad alta de error, la seal esta en Off. No es muy utilizada.
Ring Indicator (CE)
En esta linea el DCE avisa al DTE que se ha recibido una llamada. Esta
seal esta en Off hasta que el DCE recibe una seal de llamada.
Data Signal Rate Selector (CH)
El DTE utiliza esta seal para seleccionar la velocidad de transmision del
DCE.
Data Signal Rate Selector (CI)
Esta seal es la misma que la seal anterior (CH) pero en este caso es
el DCE quien selecciona la velocidad.
Transmitter Signal Element Timing (DA)
En esta linea el DTE envia al DCE una seal de reloj. Esto solo sucede
cuando el reloj maestri esta en el DTE. Una transicion On-Off marca el
centro de cada elemento de seal (bit) en la linea Transmitted Data.

3. PUERTO SERIE DE LA PC
El puerto serie del PC es un dispositivo de entrada/salida compatible con
el estndar RS-232-C. Casi todos los PCs tienen uno o dos puertos serie.
Cada uno de estos puertos tiene un conector de nueve pines (algunas
veces veinticinco) en la parte trasera del ordenador. Los programas de
ordenador pueden enviar y recibir datos a travs del puerto serie.

3.1. La UART (Universal asynchronous receiver


transmiter)
La mayor parte de la electrnica del puerto serie esta implementada en
un chip denominado UART. La misin principal de la UART es convertir
los bytes del bus paralelo del PC a un flujo de bits en serie. Adems
cambia el voltaje utilizado en la seal para representar los bits y aade
o extrae los bits de inicio y parada. El tipo de UARTS que pueden

encontrarse normalmente en un PC son de la serie 8250 que incluye las


UARTs 16450, 16550, 16650 y 16750.
Existen dos tipos bsicos de UARTs:
UARTs simples: 8250, 16450, 16550 y 16650.
UARTs FIFO: 16550A, 16C552, 16750 y 16C950.
Para entender la diferencia entre UARTs simples y UARTs FIFO primero
debemos entender que sucede cuando una UART enva o recibe un byte.
En las UARTs simples cada vez que un byte es enviado o recibido se
enva una interrupcin a la CPU. Entonces la CPU mueve del buffer de la
UART a la memoria el byte recibido , o bien le da a la UART otro byte
para enviar. Con velocidades de transmisin altas, este mecanismo
puede robar mucho tiempo de procesamiento a la CPU y no dejar que se
realicen otras tareas. Incluso puede darse el caso de que la CPU no
pueda atender una interrupcin a tiempo debido al gran numero de
interrupciones generadas y se pierdan uno o varios bytes de la
transmisin. Este tipo de UARTs con un buffer de un byte estn
obsoletas.
Las UARTs FIFO ayudan a resolver este problema. La UART 16550A
viene con un buffer FIFO de 16 bytes. Esto significa que puede recibir
hasta 14 bytes o enviar 16 bytes antes de tener que interrumpir a la
CPU. La CPU puede mover todos los bytes al mismo tiempo. Esto supone
un gran avance respecto de las UARTs simples, la CPU recibe menos
interrupciones y esta libre para realizar otras tareas. En este tipo de
UARTs es difcil que se pierda algn dato. Un detalle importante es que
la interrupcin se enva a la CPU antes de que el buffer este
completamente lleno (cuando hay 14 bytes), de esta forma, pueden
recibirse dos bytes mas antes de que la interrupcin sea tratada. El
numero de bytes en el buffer necesarios para disparar la interrupcin
puede ser modificado. En el caso de un byte el comportamiento es
similar al de una UART simple. Adems, existe un mecanismo de
timeout para evitar que existan bytes en el buffer de la UART sin recibir
porque no se ha llegado al numero mnimo de bytes necesarios para
enviar una interrupcin. Si se recibe un byte y el siguiente byte no llega
dentro de un espacio de tiempo determinado se enva una interrupcin.

Diagrama de las UARTS 16550, 8250 y 16450

3.2. Direcciones de entrada/salida e IRQs


El sistema operativo debe conocer que puertos serie existen, su
direccin de entrada/salida y el numero de IRQ que utilizan. Cada
puerto serie almacena en una memoria no voltil sus direcciones de
entrada/salida y su nu mero de IRQ.
Cuando el puerto serie requiere la accin de la CPU lanza una
interrupcin. Cuando la CPU atiende esta interrupcin, inicia una rutina
de tratamiento de interrupcin que es parte del controlador del puerto
serie. En primer lugar, el controlador intenta averiguar que sucedi en el
puerto serie. Esto puede hacerse ya que el puerto serie tiene registros
en las direcciones de E/S conocidas por el controlador que contienen
informacin de estado. El controlador lee estos registros y a
continuacin realiza la accin apropiada.
Los valores estndar de las IRQs y direcciones de E/S de los puertos
serie de un PC son los siguientes:
IR
Puerto
Direccion Base
Q
ttyS0 / COM1 4 3F8
ttyS1 / COM2 3 2F8
ttyS2 / COM3 4 3E8
ttyS3 / COM4 3 2E8

4.CONFIGURACIONDELPUERTOSERIEEN
WINDOWS
En Windows la configuracin de los puertos serie instalados en el PC
puede realizarse en el Administrador de Dispositivos. La ruta es la
siguiente: MiPc->Panel de control->Sistema->Administrador de
Dispositivos. Dentro del administrador, en el apartado Puertos, se
muestra una lista con todos los puertos de comunicacin del PC. Los que
aparecen como COM1, COM2, ... son los puertos serie.

Administrador de dispositivos

Al hacer doble click sobre alguno de los puerto serie aparece la ventana
de propiedades del puerto. Dentro de esta ventana, en la pestaa
Recursos, podemos ver la direccin de entrada/salida y la IRQ asignadas
al puerto. El sistema operativo se encarga de la gestin de las IRQs y
direcciones de entrada/salida de los dispositivos y, por lo tanto, estos
valores se obtienen automticamente. Si existe algn conflicto entre
dispositivos, estos valores pueden establecerse manualmente quitando

la opcin de Usar configuracin automtica. En este caso, pueden


proporcionarse unos valores determinados pulsando el botn Cambiar
configuracin...o elegir un conjunto de valores en Configuracin basada
en.
Recursos de COM1
En la pestaa Configuracin de puerto, aparecen los parmetros de
comunicacin del puerto serie: la velocidad de transmisin, el tamao
de palabra, el tipo de paridad utilizada en el control de flujo, el numero
de bits de parada y, por ultimo, el tipo de control de flujo.

5. Conexin de un microcontrolador al
puerto serie del PC
Para conectar el PC a un microcontrolador por el puerto serie se utilizan
las seales Tx, Rx y GND. El PC utiliza la norma RS232, por lo que los
niveles de tensin de los pines estn comprendidos entre +15 y -15
voltios. Los microcontroladores normalmente trabajan con niveles TTL
(0-5v). Es necesario por tanto intercalar un circuito que adapte los
niveles:

Uno de estos circuitos, que se utiliza mucho, es el MAX232.

5.1 El chip MAX 232


Este chip permite adaptar los niveles RS232 y TTL, permitiendo conectar
un PC con un microcontrolador. Slo es necesario este chip y 4
condensadores electrolticos de 22 micro-faradios. El esquema es el
siguiente:

6.PROGRAMADEEJEMPLOENENSAMBLADOR
;MANDA Y RECIBE CARACTERES VIA SERIAL
;MANIPULA DIRECTAMENTE EL UART (NO USA INTERRUPCIONES)
;USA MTODO POLLING
CODIGO
SEGMENT
'CODE'
ORG 100h
ASSUME CS:CODIGO,DS:CODIGO,ES:CODIGO,SS:CODIGO
;
START: JMP
INICIO
CADENA
DB
'BIENVENIDO AL CHAT SERIAL',0AH,0DH,24
;
;Inicializa el puerto serie
INICIO: MOV AL,0
MOV DX,03F9H
OUT
DX,AL ;Turn off interrupts - Port1. COM1+1
;
;PORT 1 - Communication Settings
MOV AL,80H
MOV DX,03FBH
OUT
DX,AL ;SET DLAB ON. COM1+3
MOV AL,0CH
;Divisor para 9600 BPS
MOV DX,03F8H
OUT
DX,AL ;COM1
;Default 0x03 = 38,400 BPS */
;01 = 115,200 BPS */
;02 = 56,700 BPS */
;06 = 19,200 BPS */
;0CH = 9,600 BPS */
;18H = 4,800 BPS */
;30H = 2,400 BPS */
MOV
MOV
OUT
MOV
MOV
OUT
MOV
MOV

AL,0
DX,03F9H
DX,AL
AL,03
DX,03FBH
DX,AL
AL,0C7H
DX,03FAH

;Set Baud rate - Divisor Latch High Byte. COM1+1


;8 Bits, No Parity, 1 Stop Bit. COM1+3

OUT
MOV
MOV
OUT

DX,AL
AL,0BH
DX,03FCH
DX,AL

CALL
MOV
IN
TEST
JZ
MOV
IN

WRITE2
DX,03FDH
AL,DX
AL,1
mandar
DX,03F8H
AL,DX

;FIFO Control Register. COM1+2


;Turn on DTR, RTS, and OUT2. COM1+4

;
otra:

CALL
mandar: MOV
INT
JZ
MOV
INT
CMP
JE

FIN:

MOV
OUT
JMP
MOV
INT

PUTC
AH,01
16H
otra
AH,00
16H
AL,1BH
FIN
DX,03F8H
DX,AL
OTRA
AH,4CH
21H

;
PUTC PROC
PUSH AX
MOV AH, 0Eh
INT 10h
POP AX
RET
PUTC ENDP
;
WRITE2 PROC
PUSH AX
PUSH DX
LEA
DX,CADENA
MOV AH,09
INT
21H
POP
DX
POP
AX
RET
WRITE2 ENDP
CODIGO
ENDS

;COM1+5
;Check to see if char has been received.

;Si se recibi caracter, lo tomo en AL


;y lo imprimo en pantalla
;Si no se pulsa tecla, salta a otra
;Si se puls tecla la guarda en AL
;Si se puls ESC

END

START

También podría gustarte