You are on page 1of 53

DEPARTAMENTO DE ELECTRNICA Y COMUNICACIONES

ASIGNATURA: DISPOSITIVOS DE COMUNICACIONES





1

U UA AR RT T ( (U UN NI IV VE ER RS SA AL L A AS SY YN NC CH HR RO ON NO OU US S
R RE EC CE EI IV VE ER R/ /T TR RA AN NS SM MI IT TE ER R) )
OBJETIVO.-
Descripcin de la Unidad Universal de Transmisin y Recepcin Asincrona ( UART).

TIEMPO ESTIMADO.-

PARTE TEORICA.-
INTRODUCCIN A LA UART 8250.
TIPOS DE UART
DESCRIPCIN FUNCIONAL DE LOS PINES DE LA UART 8250.
SEALES DE ENTRADA
SEALES DE SALIDA
SEALES DE ENTRADA/SALIDA
DESCRIPCIN DE LOS REGISTROS
SELECCIN DEL REGISTRO:
REGISTRO DE RETENCIN DE TRANSMISIN (THR)
REGISTRO DE ESTADO DE LINEA (LSR)
REGISTRO (BUFFER) DE RECEPCIN (RBR)
REGSITRO DIVISOR (MENOS SIGNIFICATIVO) (DLL)
REGISTRO DIVISOR (MAS SIGNIFICATIVO)(DLM)
GENERADOR DE VELOCIDAD DE TRANSMISIN PROGRAMABLE
REGISTRO ACTIVADOR DE INTERRUPCIONES (IER)
REGISTRO IDENTIFICADOR DE INTERRUPCIONES (IIR)
REGISTRO DE CONTROL DE LINEA (LCR)
REGISTRO DE CONTROL DE MODEM (MCR
REGISTRO DE ESTADO DE MODEM (MSR)
ACCESO A LOS REGISTROS.
INTERCONEXIN DE LOS REGISTROS
OPERATIVA DE TRABAJO DE LA UART
LA TRANSMISIN Y LA RECEPCIN EN EL 8250
PROGRAMACIN DE LA UART.
PROGRAMA CON VELOCIDAD DE 9600.
PROGRAMA CON SALIDA ORDENADA.
PROGRAMA CON DETECCIN DE ERRORES.
PROGRAMA EN ENSAMBLADOR.
UTILIZACIN DE LAS INTERRUPCIONES 14H DE LA BIOS.
EJ EMPLOS DE PROGRAMAS UTILIZANDO LAS INTERRUPCIONES 14H DE LA BIOS.
OPCIONES DEL PROGRAMA DEBUG.
EJ EMPLO DE USO DE FUNCIONES DEBUG EN LA EDICIN CORRECION Y
EJ ECUCIN DE UN PROGRAMA CON ERRORES DE CODIFICACIN.
MEDIANTE LAS FUNCIONES 3H Y 4H DE LA INTERRUPCION 21H DEL DOS.
OTROS COMPONENTES ASNCRONOS.
DRIVERS FOSSIL.
PROGRAMA DE DIAGNOSTICO DE LA UART EN TURBO C.

DOCUMENTACION.-
Documentacin en pdf

PARTE PRACTICA.-
V

DEPARTAMENTO DE ELECTRNICA Y COMUNICACIONES

ASIGNATURA: DISPOSITIVOS DE COMUNICACIONES



2

I IN NT TR RO OD DU UC CC CI I N N: :
La comunicacin entre los diferentes dispositivos de la unidad central de proceso
de un ordenador se desarrolla comnmente en paralelo siendo este parmetro
importante a la hora de determinar la potencia de un sistema de proceso de datos.

Sin embargo dicha forma de comunicacin no es tecnolgicamente rentable
cuando la distancia entre los equipos que han de transferirse los datos excede de
pocos metros (Interface de instrumentacin IEEE-488).

Para solucionar dicho problema se recurre a los diferentes interfaces adaptados
cada uno de ellos a las diferentes peculiaridades del entorno donde ha de
desarrollarse la comunicacin y a las caractersticas particulares de esta. Dichos
interfaces son definidos por los diferentes organismos de normalizacin (UIT-T,
EIA, IEEE,..), siendo usualmente recomendaciones dadas a los diferentes
fabricantes de equipo informtico. Dentro de estas recomendaciones se encuentra
la V24 (RS232C) estudiada en practica anterior. Dicho interface acaba en ambos
extremos en circuitos denominados "adaptadores de interface" (1488,1489,..)
encargados de adaptar las tensiones de trabajo de los circuitos digitales
(comnmente de 5V) a las tensiones de funcionamiento del interface
correspondiente. Logrado este objetivo, queda por resolver el proceso de
transformar una seal digital serie, portadora de informacin, en otra paralelo
portadora de la misma informacin. Dicho proceso se desarrolla en dispositivos
conocidos como UART, acrnimo de Universal Asynchronous Receiver /
Transmiter (Transmisor Receptor Asncrono Universal) o Sncronos (USART),
en este ultimo caso suelen poderse programar de ambas formas.
La comunicacin asncrona es de gran sencillez y los protocolos asociados a esta
tambin lo son. La comunicacin sncrona permite velocidades de transferencia
de datos superiores usando el mismo interface, sin embargo los protocolos
implicados en dicha comunicacin son significativamente mas complejos (tales
como los COP orientados al carcter-, siendo un ejemplo el BSC, o los BOP -
orientados al bit- siendo un ejemplo HDLC, LAP-B) y precisan por ello una
circuiteria de mayor complejidad. Estas son razones por las que la mayor parte de
los equipos informticos de uso comercial dispongan de elementos sencillos y
econmicos de comunicacin como es la mencionada comunicacin asncrona
soportada por las UART.

Existiendo una elevada cantidad de diferentes fabricantes y tipos de circuitos
asncronos, el conocido circuito UART INS-8250 de National Semiconductor (Se
la conoce tambin como ACE 8250 - Elemento de Comunicacin Asncrona) y
sus posteriores versiones, se han convertido de hecho en un standard del mercado.
T TI IP PO OS S D DE E U UA AR RT T: :
Las UART son conocidas tambin como SIO Serial Input/Output. Es un
circuito integrado que controla los circuitos de interfaz entre el ETCD y el ETTD.
DEPARTAMENTO DE ELECTRNICA Y COMUNICACIONES

ASIGNATURA: DISPOSITIVOS DE COMUNICACIONES



3
La UART es un subsistema integrado en un nico chip que convierte, los datos
paralelo del bus de datos, en serie. Aade, si procede, bit de paridad, verifica la
paridad de los bits recibidos, aade el bit de inicio, inserta los de parada, fija el
nmero de bits por carcter, detecta posibles errores en la comunicacin, controla
el estado del modem y de la lnea.

Una relacin de dichos circuitos tal y como se han desarrollado histricamente en
el entorno del PC ser como el siguiente:
UART 8250 (NS8250) Fue la primera en usarse en un PC,
desafortunadamente tuvo errores de diseo. Dispone de 7 registros y su
velocidad terica mxima es de 56 Kbps. Es muy lenta lo que obliga a los
programas a ralentizarse con el fin de no saturarla.

UART 8250A (NS8250A). Es la 8250 con los errores de diseo
corregidos. Se le aadi un registro ms con el nico fin de poder
comprobar que se trataba de la versin A. Actualmente es ya un
dispositivo muy superado, sin embargo en los dispositivos posteriores se
ha realizado un importante esfuerzo por mantener la compatibilidad con
este circuito. Dispone de 8 registros y mantiene la misma velocidad de 56
Kbps.

UART 16450 (NS16450), Es una evolucin de la 8250A adaptada a la
arquitectura del bus AT estndar ISA de E/S para tarjetas de expansin y
puede transferir datos a velocidades de hasta 115.200 bps, mas que
suficiente para un sistema monotarea que se comunique con otros
dispositivos asncronos. Este circuito integrado supera las exigencias de
velocidad de aplicaciones tpicas de comunicacin con mdems,
terminales y transferencias directas de datos entre ordenadores. Dispone
de 8 registros.

UART 16C451 (NS16C451), Idntica a la anterior pero construida con
tecnologa CMOS de bajo consumo.

UART 16550 Non A (NS16550 Non A). Modelo poco usual puede
encontrarse en algunos PS/2. Fue la primera UART con colas FIFO
(First In, First Out) aunque por un error de diseo estaban desactivadas.
Aumento de velocidad mxima terica hasta los 256 Kbps (en la prctica,
debido a diseo en el hardware del PC, se mantiene a 115 Kbps) continu
con 8 registros.

UART: 16550A, 16550AF, 16550AFN (NS16550x). UARTs muy
similares entre si. Se diferencian solo en la tcnica de fabricacin y en
pequeos errores corregidos. Disponen de colas FIFO en transmisin y
recepcin de 16 bytes plenamente operativas, lo cual permite que el
software no tenga que dedicarle tanta atencin a los circuitos de
comunicacin como en sistemas anteriores, facilitando enormemente el
funcionamiento en sistemas multitarea al no tener que interrumpir el
proceso que se est llevando a cabo cada vez que llega un carcter al
puerto de comunicacin. El circuito es adems totalmente intercambiable
DEPARTAMENTO DE ELECTRNICA Y COMUNICACIONES

ASIGNATURA: DISPOSITIVOS DE COMUNICACIONES



4
con la UART 8250. Dispone de nivel de activacin de interrupcin
programable, es decir, la interrupcin se dispara cuando el nivel de datos
en la FIFO llegan a donde el usuario indic. Implementa un sistema de
control de registro vaco que impide generar dos interrupciones seguidas
en transmisin por la misma condicin. Puede funcionar en modo DM
(acceso directo a memoria) para la transferencia de datos. En particular, la
UART 16550AF mejora el tiempo de acceso al bus de la CPU de un 20%
con respecto a la UART 16450 con una velocidad mxima terica de 256
Kbps. Se reducen las llamadas a las interrupciones desde programa tanto
en transmisin como en recepcin aumentando la flexibilidad software en
cuanto a la maquina que ejecuta el programa de comunicaciones. Los
buffers actan como amortiguadores de la comunicacin.

UART 16C551 (NS16551C). Versin CMOS de bajo consumo de la
16550AF. Incorpora un puerto paralelo Micro Channel y es compatible
con el bus ISA-AT.

UART 16C552 (NS16C552). Encapsula en su chip a dos UART 16C551
completas, el interfaz con la CPU transfiere datos a 25 MHz sin estados
de espera. La velocidad terica mxima del enlace serie alcanza los 1,5
Mbps. utilizada frecuentemente en tarjetas de comunicaciones
multipuerto. Bajo consumo.

UART 82510 (NS82510). Usada en ordenadores porttiles por su
pequeo tamao. Puede trabajar en varios modos siendo el UART16450
el que adopta por defecto. Tiene un cola de 4 Bytes con lo que mejora
ampliamente las prestaciones del 16450.

Con el fin de ir identificando esta unidad estudie mediante el comando MSD que
UART tiene en su equipo.

La comprobacin mas inmediata del correcto funcionamiento de esta unidad es
efectuar un bucle a nivel digital o lo que es lo mismo realizar la conexin en el
puerto serie tal como se representa en la figura y que ya se trato en la practica de
DEPARTAMENTO DE ELECTRNICA Y COMUNICACIONES

ASIGNATURA: DISPOSITIVOS DE COMUNICACIONES



5
bucles. (esto es adecuado realizarlo sobre el BRKBOX).
2 TD 103
3 RD 104
4 RTS 105
5 CTS 106
6 DSR 107
8 DCD 109
15 TC 114
17 RC 115
20 DTR 108 2
24 TSED 113
7 SG 102
CIRCUITOS
DE DATOS
CIRCUITOS
DE CONTROL

D DE ES SC CR RI IP PC CI I N N F FU UN NC CI IO ON NA AL L D DE E L LO OS S P PI IN NE ES S D DE E L LA A
U UA AR RT T 8 82 25 50 0. .
Aunque como se ha mencionado dicho circuito no es muy actual aun se encuentra
en una gran cantidad de placas de comunicacin y dado que es directamente
substituible por lo modelos mucho mas avanzados (16550x...) podremos trabajar
con estos como si fuese aquel, indicando cuando proceda las mnimas diferencias
de programacin que se refieren fundamentalmente al control de los buffers de
comunicacin.

Se describen a continuacin las seales de entrada y salida del circuito que en la
figura siguiente se representan sobre el chip que lo integra:

Nota: Las seales que aparecen negadas equivalen a ser
activas a nivel bajo, en la descripcin siguientes dichas
seales aparecen precedidas por un guin (-).
DEPARTAMENTO DE ELECTRNICA Y COMUNICACIONES

ASIGNATURA: DISPOSITIVOS DE COMUNICACIONES



6

S SE E A AL LE ES S D DE E E EN NT TR RA AD DA A
Chip Select (CS0,CS1,-CS2) Pins 12-14: Circuitos de seleccin y habilitacin
del chip. Estas seales habilitan las seales de lectura y escritura DOSTR y
DISTR.
Data Input Strobe (DISTR, DISTR negado) Pins 22 y 21: Al activarse se
vuelcan los datos del bus de datos D0..D7 en el registro seleccionado por
A0,A1,A2. Es necesario activar la seales CS0..CS2. Ha de usarse nicamente
una de las seales DISTR o DISTR negado.
Data Output Strobe (DOSTR, DOSTR negado) Pins 19 y 18: Al revs que la
anterior permite descargar el registro seleccionado al bus de datos.
Address Strobe (ADS negado) Pin 25: Esta lnea permite el enclavamiento de
las seales de seleccin de registro A0..A2 y CS0..CS2. Usualmente se mantiene
inactiva. Solo se usa en modo multiplexado.
Register Select (A0,A1,A2) Pins 26-28: Lneas de seleccin de uno de los diez
registros del 8250. Solo se puede acceder directamente a ocho registros, mediante
A0, A1 y A2), a los otros dos registros se accede en conjugando el bit conocido
como DLAB que se menciona posteriormente.
Master Reset (MR) Pin 35: Inicializacin del circuito 8250. Borra el registro de
control de modem (MCR-Modem Control Register). Se activan los bit 5 y 6 del
registro :Estado de Lnea (LSR-Line Status Register), que se refieren
respectivamente a: registro de transferencia de transmisin vaco y transmisor
vaco.
Receiver Clock (RCLK) Pin 9: Entrada de reloj de recepcin, es 16 veces la
frecuencia de transmisin del equipo remoto, generalmente se extrae del reloj
externo, dicha seal es internamente dividida entre 16. En raras ocasiones se
obtiene de la seal BAUDOT del equipo remoto. La seal de salida -BAUDOT
del propio circuito esta ntimamente ligada a RCLK.
Serial Input (SIN) Pin 10: Es la lnea de datos serie de entrada desde el modem.
En modo bucle (LOOP) esta seal se inhibe.
Clear To Send (CTS negado) Pin 36: Borrado para enviar. Lnea de entrada
proveniente del modem. El estado lgico de esta seal puede consultarse leyendo
el cuarto bit del registro de estado del modem (MSR-Modem Status Register). El
cambio de estado del bit -CTS desde la ultima lectura del registro MSR provoca
la activacin del primer bit de dicho registro DCTS, Delta-CTS. Cuando -CTS
esta activo, a cero (ya que es una entrada activa a nivel bajo) , el modem indica a
la UART que el dato que sta tiene situado en SOUT pueda ser transmitido a
dicho modem. El estado de CTS no afecta al modo bucle (LOOP) del 8250.
Data Set Ready (DSR negado) Pin 37: Conjunto de datos preparados. Lnea de
entrada proveniente del modem. El estado lgico de esta seal puede consultarse
leyendo el quinto bit del registro de estado del modem (MSR-Modem Status
Register). Cuando el modem activa esta lnea indica a la UART que esta
DEPARTAMENTO DE ELECTRNICA Y COMUNICACIONES

ASIGNATURA: DISPOSITIVOS DE COMUNICACIONES



7
preparado para intercambiar datos, aunque no implica que dicho intercambio se
est produciendo. El cambio de estado del bit DSR negado, desde la ultima
lectura del registro MSR provoca la activacin del segundo bit de dicho registro
DDSR, Delta-DSR. DSR es una entrada activa a nivel bajo, por tanto valdr cero
cuando est activa.
Data Carrier Detect (DCD negado) Pin 38: Esta lnea indica a la UART que el
modem a detectado portadora. Si se han habilitado las interrupciones se generara
una al cambiar de estado esta lnea. El bit siete bit del registro de estado del
modem (MSR-Modem Status Register) contiene el estado lgico de dicha lnea,
recuerda que es una entrada activa a nivel bajo. Si ha habido cambio de estado
desde la ultima lectura se habr activado el bit tres DDCD Delta-DCD del mismo
registro.
Ring Indicator (RI negado) Pin 39: Indicador de llamada, se activa cuando el
modem ha detectado una llamada por la lnea de comunicaciones y puede
consultarse en el bit seis del registro MSR. El bit dos de dicho registro indica un
cambio desde la ultima lectura (Trailing Edge of Ring Indicator). El circuito
permanece activo durante el intervalo activo del ciclo de llamada e inactivo
durante este mismo intervalo. Si se han activado las interrupciones, bit tres del
registro activador de interrupciones (IER-Interrupt Enable Register) se provocara
una interrupcin al activarse. Entrada activa a nivel bajo.
Vcc Pin 40: Tensin de alimentacin +5V.
Vss Pin 20: Tierra de referencia 0V (Ground).
S SE E A AL LE ES S D DE E S SA AL LI ID DA A
Data Terminal Ready (DTR negado) Pin 33: Esta seal indica al modem que el
equipo esta preparado para recibir datos. Se activa, esta lnea de salida, poniendo
un uno en el bit menos significativo, el cero, del registro de control de modem
(MCR-Modem Control Register). Recuerde que activar una lnea de salida
significa nivel bajo lo que consiste en que la lnea tome valor cero. Se inactiva
dicha lnea si cargamos con cero el bit menos significativo del registro MCR o
activando el circuito de inicializacin del chip (MR-Master Reset). Si esta lnea
no esta activa el modem se desconecta del circuito de comunicaciones del chip
(MR-Master Reset).
Request To Send (RTS negado) Pin 32: Indica al modem que la UART tiene
un dato preparado para transmitir. En la modalidad semiduplex esta seal indica
la direccin de la transmisin en la lnea de comunicacin. La lnea de salida se
activa, ponindose a cero, cuando se carga un uno en el bit cero del registro de
control de modem (MCR-Modem Control Register). La lnea puede desactivarse
poniendo a cero dicho bit o cuando se activa el circuito de inicializacin del chip
(MR-Master Reset)
.Output 1 (OUT1 negado) Pin 34: Salida de propsito general se activa, salida a
cero, cargando un uno en el bit dos del registro de control de modem (MCR-
Modem Control Register). Es desactivada cambiando dicho bit o cuando se activa
el circuito de inicializacin del chip (MR-Master Reset).
Output 2 (OUT2 negado) Pin 31: Igual que la anterior pero actuando sobre el
DEPARTAMENTO DE ELECTRNICA Y COMUNICACIONES

ASIGNATURA: DISPOSITIVOS DE COMUNICACIONES



8
bit tres del registro MCR.
Chip Select Out (CSOUT) Pin 24: Esta lnea indica que el chip ha sido
seleccionado con CS0..CS2 y esta preparado para funcionar. El chip no trabajara
hasta que CSOUT se haya activado. El PC en la prctica la ignora.
Driver Disable (DDIS) Pin 23: Esta salida se desactiva cuando la CPU lee datos
de la UART. En la prctica el PC no la utiliza.
Baud Out (BAUDOT negado) Pin 15: En la practica, en el PC, esta salida se
conecta a la entrada del reloj de recepcin RCLK. Esta salida podra usarse
conectada directamente a la entrada de reloj de una estacin receptora en el
supuesto de una conexin ETD-ETD sin modem.
Interrupt (INTRPT) Pin 30: Lnea de salida que se activa a nivel alto cuando se
ha programado la habilitacin de interrupciones en los siguientes casos: dato
recibido disponible, registro de retencin de transmisin vaco, estado del modem
y error de comunicacin.
Serial Output (SOUT) Pin 11: Salida de datos serie de la UART. El estado de
MARCA es un uno, el ESPACIO es un cero. El estado de MARCA se mantiene:
cuando no hay comunicacin, cuando se activa MR (Master Reset), cuando el
registro de transmisin esta vaco y cuando la UART est en bucle.

S SE E A AL LE ES S D DE E E EN NT TR RA AD DA A/ /S SA AL LI ID DA A
Data Bus (D0-D7) Pins 1-8: Bus triestado bidireccional de ocho lneas que
permite la transferencia de datos, informacin de estado, programacin y control
entre la CPU y la UART.
External Clock Input/Output (XTAL1/XTAL2) Pins 16 y 17: Entre estos dos
pines se conecta el cristal de cuarzo que permite la actuacin del generador de
velocidad interno del chip 8250. Este generador divide entre 16 la frecuencia de
oscilacin del cristal. La frecuencia final de transmisin de datos se logra
programando los registros internos de la UART conocidos como DLL y DLM
(Divisor Lach LSB y MSB -Byte menos significativo y mas significativo). El
cristal puede trabajar a una velocidad de hasta 10 Mhz. XTAL1 Puede actuar
como entrada de reloj externa, en este caso habr que dejar al aire XTAL2.

En la figura se representan algunas de las seales descritas anteriormente:
DEPARTAMENTO DE ELECTRNICA Y COMUNICACIONES

ASIGNATURA: DISPOSITIVOS DE COMUNICACIONES



9
B
U
S
D
E
D
A
T
O
S
RELOJ DE RECEPCION
LINEADATOS SERIE ENTRADA
LINEADATOS SERIE SALIDA
HABILITAN LAS SENALES DE
LECTURAYESCRITURA
DOSTRYDISTR
CRISTALCUARZO
ORDEN DE DESCARGAR
REGISTROALBUS DE DATOS
INICIALIZACION DE LAUART
CIRCUITOS DE
CONTROLDELMODEM
SELECCION DE LOS DIEZ
REGISTROS JUNTO CON
ELBIT DLAB
VOLCAR LOS DATOS DE DOAD1
ALREGISTRO SELECCIONADO
ENCLAVAMIENTOAO..A2, CSO..CS2

Un esquema de la unidad representando las conexiones y el entorno externo seria
como el de la figura.
"0"
"1"
CS2
CS1
CS0
ADS
DOSTR
DISTR
MEMR or I/OR
MEMW or I/OW
INTR
RESET
A0
A1
A2
D0-D7
B
U
S
XTAL1
XTAL2
BAUDOT
RCLK
3.072 Mhz
DRIVERS
EIA
A INTERFACE
RS232
SOUT
SIN
RTS
DTR
DSR
DCD
CTS
RI
INS8250A

En el anterior diseo podemos ver el caso general de conexin de la UART al PC.
Se puede ver que no se utilizan todas la seales disponibles del circuito.
D DE ES SC CR RI IP PC CI I N N D DE E L LO OS S R RE EG GI IS ST TR RO OS S. .
El circuito INS-8250 dispone en su estructura interna de diez registros accesibles
por el usuario, tal como se presenta en la siguiente tabla, a los cuales se accede a
travs de las entradas A0, A1 y A2 (Pines 28, 27 y 26 respectivamente de dicho
circuito), en combinacin con un bit de estado que llamaremos DLAB (Divisor
Latch Access Bit). En dicha tabla figuran 11 registros y esto es debido a que el bit
DLAB activa el buffer de transmisin o el buffer de recepcin.
DEPARTAMENTO DE ELECTRNICA Y COMUNICACIONES

ASIGNATURA: DISPOSITIVOS DE COMUNICACIONES



10
NOMBRE DEL REGISTRO IDENTIFICAD. COM1/COM2
REGISTRO DE LA RETENCION DE LA TRANSMISION TX THR 3F8/2F8
REGISTRO DE DATOS DE RECEPCION RX RBR 3F8/2F8
DIVISOR VELOCIDAD BAUDIOS, BYTE MENOS SIGNIFICATIVO LSB DLL 3F8/2F8
DIVISOR VELOCIDAD BAUDIOS, BYTE MAS SIGNIFICATIVO MSB DLM 3F9/2F9 3F9/2F9
REGISTRO ACTIVADOR DE INTERRUPCION IER 3F9/2F9
REGISTRO IDENTIFICADOR DE INTERRUPCION IIR 3FA/2FA
REGISTRO DE CONTROL DE LINEA LCR 3FB/2FB
REGISTRO DE CONTROL DE MODEM MCR 3FC/2FC
REGISTRO DE ESTADO DE LINEA LSR 3FD/2FC
REGISTRO DE ESTADO DE MODEM MSR 3FE/2FE
REGISTRO DE CONTROL DE ERRORES SCR 3FF/2FF
DLAB 0
DLAB 1

La identificacin de un registro es en base a su contenido en los bits de dicho
registro. En este, las posiciones A9 y A0 identifican el valor de la direccin a
partir de la cual se trata el registro, que si contrastamos con las direcciones de los
puertos sern COM1 Y COM2, las posiciones A9 y A8: 3 y 2 respectivamente
Un ejemplo de esta identificacin seria:
A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 DLAB
3F8/3FF
2F8/2FF
THR, RBR DLAB 0
MSR, SCR DLAB 1
F
de 8 a F
IDENTIFICACION DELREGISTRO COM1 COM2
1 1 1 1 1 1 1 X X X
1 0 1 1 1 1 1 X X X

En ella se observa que los valores de las posiciones A7 a A4 representan la F y
las posiciones A3 a A0 la gama de valores desde 8 a F.
Por otro lado, tendremos el valor de un elemento decisorio en lo relativo al
registro con el que se trabaja y este es el ya mencionado bit DLAB (posicin 7
del registro de Control de Linea (LCR).

Supondremos que dicha UART formara parte de la circuitera de un PC,
conectada a las correspondientes "Address" (A0-A2) del bus de direcciones del
microprocesador.

Es usual en los programas de comunicaciones para agilizar la programacin,
trabajar a nivel de puerto y manipular directamente los registros, accediendo a
estos por el desplazamiento de los registros respecto al puerto base. El control de
estas direcciones a partir de la cual se efecta el desplazamiento se lleva a cabo
en el ordenador segn la descripcin de la siguiente tabla.
DEPARTAMENTO DE ELECTRNICA Y COMUNICACIONES

ASIGNATURA: DISPOSITIVOS DE COMUNICACIONES



11
NOMBRE DEL REGISTRO IDENTIFICAD. DIR BASE
REGISTRO DE LA RETENCION DE LA TRANSMISION TX THR +0
REGISTRO DE DATOS DE RECEPCION RX RBR +0
DIVISOR VELOCIDAD BAUDIOS, BYTE MENOS SIGNIFICATIVO LSB DLL +0
DIVISOR VELOCIDAD BAUDIOS, BYTE MAS SIGNIFICATIVO MSB DLM +1
REGISTRO ACTIVADOR DE INTERRUPCION IER +1
REGISTRO IDENTIFICADOR DE INTERRUPCION IIR +2
REGISTRO DE CONTROL DE LINEA LCR +3
REGISTRO DE CONTROL DE MODEM MCR +4
REGISTRO DE ESTADO DE LINEA LSR +5
REGISTRO DE ESTADO DE MODEM MSR +6
REGISTRO DE CONTROL DE ERRORES SCR +7
DLAB 0
DLAB 1

As el acceso al Registro THR ser Puerto Base +0 (con el DLAB=0), mientras
que para el registro DLL ser Puerto Base +0 (con DLAB=1) y para el registro
MSR ser Puerto Base +6, etc

En cuanto a los registros, el direccionamiento ser como se detalla en la tabla.
A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 DLAB
IDENTIFICACION DELREGISTRO
1 1/0 1 1 1 1 1 X X X
0 0 0 0
0 0 1 0
0 1 0 X
0 1 1 X
1 0 0 X
1 0 1 X
1 1 0 X
1 1 1 X
0 0 0 1
0 0 1 1
BUFFER TRANSMISION,RECEPCION
YREGISTRO DE RETENCION
ACTIVA INTERRUPCION
CONTROL DE LINEA
IDENTIFICA INTERRUPCION
DIVISOR MAS SIGN IFICATIVO MSB
CONTROL DE MODEM
ESTADO DE LINEA
ESTADO DE MODEM
NO SE USA
DIVISOR MENOS SIGNIFICATIVO LSB
NOMBRE DELREGISTRO
2 o 3
F
SIEMPRE

S SE EL LE EC CC CI I N N D DE EL L R RE EG GI IS ST TR RO O: :
La seleccin de registro se lleva a cabo utilizando las tres entradas A0, A1 y A2.
Durante las operaciones de lectura y escritura en dichos registros ha de tenerse en
cuenta que no se tiene, en todos los casos, un acceso directo a cada uno de los
diez registros de usuario disponibles en la UART. Para acceder a algunos
registros se hace necesario, como ya se ha mencionado, tener en cuenta el estado
del bit DLAB. Dicho bit es el ms significativo del Registro de Control de Lnea,
es decir el bit 7, que debe encontrarse en estado alto para poder acceder a los
registros divisores de la velocidad de reloj tal como se remarca en la tabla
anterior.

R RE EG GI IS ST TR RO O D DE E R RE ET TE EN NC CI I N N D DE E T TR RA AN NS SM MI IS SI I N N ( (T TH HR R) )
Este registro es el dispositivo de salida de la informacin en serie y por lo tanto.
contiene el carcter que se va a enviar, el bit 0 es el menos significativo y es el
DEPARTAMENTO DE ELECTRNICA Y COMUNICACIONES

ASIGNATURA: DISPOSITIVOS DE COMUNICACIONES



12
primero que se enva. Se constituye comobuffer de transmisin que genera una
cola en la que se almacenan los datos que esperan su transformacin a serie.
Mejora la eficiencia de
transmisin
DIRECCION PUERTO BASE+0 REGISTRO DE ESCRITURA DLAB 0
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Posicion del bit
Posicion del bit de datos
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
DATOS

Existen una interaccin entre este registro y el de Estado de Lnea (LSR), de
modo que cuando el registro de desplazamiento de transmisin (registro interno
creado por el 8250 para ir desplazando los bits y mandarles en serie - el
Transmitter Shift Register) que esta enviando el carcter actual se vace, ser
cargado desde el THR para transmitir el nuevo carcter. Al quedar vaco THR, el
bit THRE del Registro de Estado de Lnea (LSR) que indica que el 8250 puede
aceptar un nuevo carcter para la transmisin se activa.
En la figura se identifica esta operativa y el bit THRE del LSR.
Contenido del registro THR
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
DATOS
REGISTRO DE DESPLAZAMIENTO DE TRANSMISION
0
bit 7
TEMT
bit 6
DR
bit 0
THRE
bit 5
BI
bit 4
FR
bit 3
PE
bit 2
OE
bit 1
REGISTRO LSR
EL8250 PUEDE
ACEPTAR OTRO
CARACTER
Contenido del registro THR
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
REGISTRO DE DESPLAZAMIENTO DE TRANSMISION
Registro THR vacio

Cuando estn vacos tanto el THR como el registro de desplazamiento de
transmisin, el bit TEMT del LSR se activa indicando que esta vaco y puede
atender a un nuevo carcter.
REGISTRO THR
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
DATOS
REGISTRO DE DESPLAZAMIENTO DE TRANSMISION
VACIO
VACIO
0
bit 7
TEMT
bit 6
DR
bit 0
THRE
bit 5
BI
bit 4
FR
bit 3
PE
bit 2
OE
bit 1
REGISTRO LSR
TRANSMISOR
VACIO

DEPARTAMENTO DE ELECTRNICA Y COMUNICACIONES

ASIGNATURA: DISPOSITIVOS DE COMUNICACIONES



13
R RE EG GI IS ST TR RO O D DE E E ES ST TA AD DO O D DE E L LI IN NE EA A ( (L LS SR R) )
Este suele ser el primer registro consultado tras una interrupcin.
Siendo un registro de lectura y sobre el que se recomienda no efectuar escritura se
accede a l a travs del puerto base +5 con arreglo a la tabla ya expuesta.
En la figura se identifica cada posible valor de los bits de dicho registro.
0
bit 7
TEMT
bit 6
DR
bit 0
THRE
bit 5
BI
bit 4
FR
bit 3
PE
bit 2
OE
bit 1
TRANSMISOR
VACIO
INDICADOR DE
QUE ELTHR PUEDEACEPTAR
OTRO CARACTER SE DESACTIVA
ALESCRIBIR UN NUEVO
CARACTER EN ELTHR
INTERRUPCION
BREAK
ERROR DE
TRAMA
ERROR DE
TRAMA
DESBORDE
DATOS
PREPARADOS

El bit de Datos Preparados DR esta activo cuando hay un carcter listo en el
Registro de Datos en Recepcin RBR y el DR se pone a 0 cuando se lee el
contenido del registro RBR.

Los bits 1 al 4 de este registro (OE, PE, FE y BI) son puestos a 0 al consultarlos -
cuando se lee el LSR- y al activarse pueden generar una interrupcin de prioridad
1 si sta interrupcin est habilitada.
El bit OE trata el tema de la sobrescritura y se activa para indicar que
el dato en el RBR no ha sido ledo por la CPU y acaba de llegar otro
que lo ha sobrescrito.
El bit PE indica si hay un error de paridad.
El bit FE indica si el carcter recibido no tiene los bit de stop
correctos.
El bit BI se activa cuando la entrada de datos es mantenida en espacio
(a 0) durante un tiempo superior al de transmisin de un carcter.

El bit THRE tal como se indica en la figura informa de que el 8250 puede aceptar
un nuevo carcter. Tal como se explico en el registro de THR (Retencin de
Transmisin se activa al quedar libre THR y se desactiva escribiendo un nuevo
carcter en el THR.

R RE EG GI IS ST TR RO O ( (B BU UF FF FE ER R) ) D DE E R RE EC CE EP PC CI I N N ( (R RB BR R) )
Este registro es de lectura y a el se accede por puerto +0 siendo el dispositivo de
entrada de la informacin serie y por lo tanto contiene el carcter que se ha
recibido, el bit 0 es el menos significativo y es el primero que se recibe despus
del bit de arranque (START). La lectura de este registro captura el byte de flujo
de datos serie para pasar a estructura paralelo.
DEPARTAMENTO DE ELECTRNICA Y COMUNICACIONES

ASIGNATURA: DISPOSITIVOS DE COMUNICACIONES



14
DIRECCION PUERTO BASE+0 REGISTRO DE LECTURA DLAB 0
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Posicion del bit
Posicion del bit de datos
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
DATOS

En el caso de que DLAB (bit 7 del registro LCR) no este activo, este registro
actuara como el buffer de recepcin y los datos entran en serie por SIN
(comenzando por el bit D0) en un registro de desplazamiento gobernado por el
reloj de RCLK, sincronizado con el bit de inicio. Cuando un carcter completa el
registro de desplazamiento de recepcin, sus bits son volcados al RBR y el bit
DR del LSR es activado para indicar a la CPU que puede leer el RBR.
REGISTRO RBR
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
REGISYTRO DE DESPLAZAMIENTO
DE RECEPCION
DATOS SERIE POR
PATILLASIN
DO
D1
D2
D3
D4
0
bit 7
TEMT
bit 6
DR
bit 0
THRE
bit 5
BI
bit 4
FR
bit 3
PE
bit 2
OE
bit 1
REGISTRO LSR
ACTIVADO El contenido del registro RBR
puede leerse

Cuando el bit 7 del registro de control de lnea (LCR), es decir el denominado
DLAB, esta a 1 este registro (RBR) pasa a ser el registro DLL es decir el registro
que contiene le byte menos significativo del divisor de velocidad
REGISTRO RBR
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
DLAB =1
BYTE MENOS SIGNIFICATIVO DEL
DIVISOR DE VELOCIDAD
DLAB
bit 7
BREAK
bit 6
WLS2
bit 0
PARIDAD
bit 5
EPS
bit 4
PEN
bit 3
STB
bit 2
WLS1
bit 1
REGISTRO DLL
REGISTRO LRC

La UART esta diseada para permitir la recepcin continua de datos sin
prdidas: el RBR almacena siempre el ltimo carcter recibido dando tiempo
suficiente a la CPU para leerlo mientras simultneamente est cargando el
registro de desplazamiento con el siguiente; si la CPU tarda demasiado un nuevo
dato podra aparecer en el RBR antes de haber ledo el anterior (condicin de
overrun, bit OE del LSR).

DEPARTAMENTO DE ELECTRNICA Y COMUNICACIONES

ASIGNATURA: DISPOSITIVOS DE COMUNICACIONES



15
R RE EG GI IS ST TR RO O D DI IV VI IS SO OR R ( (M ME EN NO OS S S SI IG GN NI IF FI IC CA AT TI IV VO O) ) ( (D DL LL L) ). .
Este registro contendr el byte menos significativo del divisor de reloj y se
obtendr de dividir 115000 por la velocidad.
DIRECCION PUERTO BASE+0 REGISTRO LECT/ESCRITURA DLAB 1
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Posicion del bit
8 bits del divisor
de velocidad de reloj
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
BYTE MENOS SIGNIFICATIVO

R RE EG GI IS ST TR RO O D DI IV VI IS SO OR R ( (M MA AS S S SI IG GN NI IF FI IC CA AT TI IV VO O) )( (D DL LM M) )
Este registro contendr el byte mas significativo del divisor de reloj y se obtendr
de dividir 115000 por la velocidad.
DIRECCION PUERTO BASE+1 REGISTRO LECT/ESCRITURA DLAB 1
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Posicion del bit
8 bits del divisor
de velocidad de reloj
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Bit 15 Bit 14Bit 13Bit 12 Bit 11Bit 10
Bit 9 Bit 8
BYTE MAS SIGNIFICATIVO

La conjuncin del contenido de ambos registros divisores da el dato con el cual
ha de tratarse la informacin en lo relativo a velocidad con arreglo a lo que en el
siguiente apartado se detalla.
DIRECCION PUERTO BASE+1 REGISTRO LECT/ESCRITURA DLAB 1
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Posicion del bit
8 bits del divisor
de velocidad de reloj
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Bit 15 Bit 14Bit 13Bit 12 Bit 11Bit 10 Bit 9 Bit 8
BYTE MAS SIGNIFICATIVO
DIRECCION PUERTO BASE+0 REGISTRO LECT/ESCRITURA DLAB 1
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Posicion del bit
8 bits del divisor
de velocidad de reloj
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
BYTE MENOS SIGNIFICATIVO
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
BYTE MENOS SIGNIFICATIVO
Bit 15 Bit 14Bit 13Bit 12 Bit 11Bit 10 Bit 9 Bit 8
BYTE MAS SIGNIFICATIVO
DIVISOR DE VELOCIDAD

DEPARTAMENTO DE ELECTRNICA Y COMUNICACIONES

ASIGNATURA: DISPOSITIVOS DE COMUNICACIONES



16

G GE EN NE ER RA AD DO OR R D DE E V VE EL LO OC CI ID DA AD D D DE E T TR RA AN NS SM MI IS SI I N N
P PR RO OG GR RA AM MA AB BL LE E. .
La UART contiene un generador de velocidad de transmisin que es capaz a
partir de la entrada de reloj (1.8432Mhz) y dividiendo por algn valor
comprendido entre 1 y 2
16-1
conseguir un elevado numero de velocidades posibles
tal como se muestra en la tabla 4.

El generador de velocidades consta de un contador en el que con cada ciclo de
reloj se reduce en una unidad. Cuando dicho contador llega a cero se enva o
recibe un bit por los circuitos de transmisin, reinicializandose dicho contador.
Inicialmente dicho valor se encuentra en los diecisis bits situados en la direccin
F000:E729 de la ROM BIOS. A este valor se le denomina divisor de
transferencia de baudios y corresponde a lo incluido en los registros DLM y DLL
que en el prrafo anterior se detallaron, su valor se calcula dividiendo entre
diecisis la seal de reloj dando un resultado de 115.000, el divisor (que es el
nmero que deberemos cargar en el registro) lo obtendremos al dividir ste
nmero entre la velocidad deseada en baudios (115.000/Xbaudios =Divisor).

El cristal de cuarzo que utiliza el reloj para obtener las velocidades de
comunicacin no es nico, en algunas ocasiones pueden usarse cristales de
frecuencias superiores los mas usuales son: el ya mencionado cristal de 1.8432
Mhz y cristales de frecuencias 2.4576 y 3.072 Mhz respectivamente. En estos
casos los valores del divisor se incrementaran proporcionalmente.

Aplicando la operacin antes detallada, para 2400 bps seria 48 lo que significa
carga los hexadecimales 00 en el registro DLL y 30 en el registro DLM.

Para 4800 bps:
0 0 1 8 ---- ---- 00 18 00 18
00000000 00011000
---- ---- 00 18 00 18
BYTE MAS SIGNIFICATIVO
EJEMPLO:
VELOCIDAD DE 4800 BAUDIOS
115000/4800=23,958 --- --- 24 24 --- --- --- --- 24 24 --- ---
BYTE MENOS SIGNIFICATIVO




DEPARTAMENTO DE ELECTRNICA Y COMUNICACIONES

ASIGNATURA: DISPOSITIVOS DE COMUNICACIONES



17
TABLA 4 Velocidad en Baudios a 1.8432 Mhz
Velocidad
deseada en
Baudios
Divisor usado
para generar
16 x Clock
(Decimal
Hex)
Byte mas
significativo
DLM (Hex.)
Byte menos
significativo
DLL (Hex.)
Porcentaje de
error entre la
velocidad
deseada y la
real
50 2300 900 09 00 -
75 1536 600 06 00 -
110 1047 417 04 17 0.026
134.5 857 359 0.058
150 768 300 -
300 384 180 01 80 -
600 192 0C0 00 C0 -
1200 96 060 00 60 -
1800 64 040 00 40 -
2000 58 03A 00 3A 0.69
2400 48 030 00 30 -
3600 32 020 00 20 -
4800 24 018 00 18 -
7200 16 010 00 10 -
9600 12 00C 00 0C -
14400 8 00 08 -
19200 6 00 06 -
28800 4 00 04 -
38400 3 00 03 -
57600 2 00 02 2.86
115200 1 00 01 -



DEPARTAMENTO DE ELECTRNICA Y COMUNICACIONES

ASIGNATURA: DISPOSITIVOS DE COMUNICACIONES



18
R RE EG GI IS ST TR RO O A AC CT TI IV VA AD DO OR R D DE E I IN NT TE ER RR RU UP PC CI IO ON NE ES S ( (I IE ER R) )
A este registro se accede por puerto +1 y con el DLAB a 0 es de escritura y se
utiliza para seleccionar qu interrupciones activan la patilla 30 del chip UART
identificada INTRPT y, por consiguiente, van a ser solicitadas a la CPU.
Deshabilitar el sistema de interrupciones inhibe el IIR y desactiva la salida
INTRPT.
0
bit 7
0
bit 6
IER0
bit 0
0
bit 5
0
bit 4
IER3
bit 3
IER2
bit 2
IER1
bit 1
A1 activa la interrupcion de
dato recibido disponible
A1 activa la interrupcion de
registro temporal de
transmision vacio
A1 activa la interrupcion del
estado de la linea de
recepcion
A1 activa la interrupcion del
estado del modem

R RE EG GI IS ST TR RO O I ID DE EN NT TI IF FI IC CA AD DO OR R D DE E I IN NT TE ER RR RU UP PC CI IO ON NE ES S ( (I II IR R) )
A este registro se accede por puerto +2 y con el DLAB a 0 es de lectura y se
utiliza para informar de que hay una interrupcin pendiente y el tipo de la misma
es almacenado en IIR.
Solo se reconocen si la CPU manda la seal de reconocimiento adecuada.
Antes de tratar este registro es adecuado identificar los niveles de interrupciones
posibles:
Estado de la lnea de recepcin.
Dato recibido disponible
Registro de retencin de transmisin vaco.
Estado del modem.

Estos se contemplan en tabla aparte, la estructura del registro es:
0
bit 7
0
bit 6
bit 0 0
bit 5
0
bit 4
0
bit 3
bit 2 bit 1
0 =Interrupcion pendiente
1= No hay interrupcion
Identificacion de la
interrupcion



DEPARTAMENTO DE ELECTRNICA Y COMUNICACIONES

ASIGNATURA: DISPOSITIVOS DE COMUNICACIONES



19
(*) REGISTRO
IDENTIFICADOR
DE
INTERRUPCIONES
TIPOS DE INTERRUPCIN Y REINICIALIZACIN
BIT 2
(1)
BIT 1
(0)
BIT 0 NIVEL DE
PRIORIDAD
TIPO DE
INTERRUPCIN
ORIGEN DE LA
INTERRUPCIN
REINICIALIZACIN
DE LA INTERRUPCIN
0 0 1 No hay No hay
1 1 0 Primario Estado de lnea
del receptor
Error de overrun,
paridad, trama o
break-interrupt
Leyendo el registro de
estado de lnea
1 0 0 Secundario Dato disponible
en el receptor
Dato disponible
en el receptor
Leyendo el buffer de
recepcin
0 1 0 Terciario Registro de
retencin de
transmisin
vaco
Registro de
retencin de
transmisin vaco
Leyendo el registro
identificador de
interrupciones IIR (si es
el origen de la
interrupcin) o
escribiendo en el registro
de retencin de
transmisin
0 0 0 Cuaternario Estado de
modem
Borrado para
enviar (CTS) o
conjunto de datos
preparado (DSR)
o indicador de
llamada (RI) o
seal directa
recibida por lnea
Leyendo el registro de
estado de modem


R RE EG GI IS ST TR RO O D DE E C CO ON NT TR RO OL L D DE E L LI IN NE EA A ( (L LC CR R) )
Este registro controla la estructura del formato de datos y apoya a la seleccin de
los registros divisores para establecer la velocidad de operacin que atiende al
puerto serie.
Siendo un registro de escritura/lectura se accede a el a travs del puerto base +3
con arreglo a la tabla ya expuesta.

En l el bit 7 es el denominado bit DLAB (Divisor Latch Access Bit) dado que da
permiso para acceder a los Latches DLL y DLM del generador de velocidad.

En la figura se identifica cada posible valor de los bit de dicho registro.
DEPARTAMENTO DE ELECTRNICA Y COMUNICACIONES

ASIGNATURA: DISPOSITIVOS DE COMUNICACIONES



20
DLAB
bit 7
BREAK
bit 6
WLS2
bit 0
PARIDAD
bit 5
EPS
bit 4
PEN
bit 3
STB
bit 2
WLS1
bit 1
TAMANO DELDATO
0 1 BIT DE PARADA
1 2 BITS DE PARADA
1 SALIDASOUTAESPACIO (0)
0 SALIDASOUTAMARCA
1 SE PERMITEACCESOA
DIVISORES DLLYDLM
0 SE PERMITEACCESOA
RBR THRYIER
SELECCION DE
REGISTROS
0 0 DATOS DE 5 BITS
0 1 DATOS DE 6 BITS
1 0 DATOS DE 7 BITS
1 1 DATOS DE 8 BITS
0 0 0 SIN PARIDAD
0 0 1 PARIDAD IMPAR
0 1 1 PARIDAD PAR
1 0 1 MARCA(1)
1 1 1 ESPACIO

Es importante resaltar que el bit STB que identifica el numero de bit de parada a
emplear, aun admitiendo dos valores, tal como se representa en la figura, si se
combina con el numero de bits para el caso de 5 bits de datos, su significado para
este caso en vez de 1 de parada ser 1,5 bits.

Con el Break Control se permite que la CPU avise a un terminal del sistema sin
necesidad de transmitir carcter alguno y para ello se deben ejecutar las
siguientes acciones.

1) Cargar un carcter 0 en respuesta a THRE,
2) Activar Break Control en respuesta al prximo THRE,
3) Esperar a que el transmisor est inactivo (TEMT=1)
4) Desactivar el Break Control.

Durante el Break, el transmisor puede usarse como un temporizador de carcter

R RE EG GI IS ST TR RO O D DE E C CO ON NT TR RO OL L D DE E M MO OD DE EM M ( (M MC CR R) )
Es un registro de lectura y escritura y su funcin principal es controlar el interfaz
con el MODEM, de hecho se activan circuitos de la RS 232 tales como DSR,
RTS. A l se accede por puerto base +4 y en el registro de control de lnea (LCR)
tiene que estar el DLAB a cero.
0
bit 7
0
bit 6
DTR
bit 0
0
bit 5
LOOP
bit 4
SOUT 2
bit 3
SOUT 1
bit 2
RTS
bit 1
Activa el puerto en modo diagnostico
conectando en bucle digital local
la salida del registro de transmision
a la entrda del registro de recepcion.
Comprobacion de la UART
Linea auxiliar 2 de
proposito general
Linea auxiliar 1 de
proposito general
Request To Send
Peticion para
enviar
Data Terminal Ready
Equipo de datos
preparado

DEPARTAMENTO DE ELECTRNICA Y COMUNICACIONES

ASIGNATURA: DISPOSITIVOS DE COMUNICACIONES



21
R RE EG GI IS ST TR RO O D DE E E ES ST TA AD DO O D DE E M MO OD DE EM M ( (M MS SR R) )
Este registro informa del estado del MODEM, se accede a l puerto base +5 y con
el DLAB a cero, siendo un registro de lectura.
La estructura de este es:
DCD
bit 7
RI
bit 6
DCTS
bit 0
DSR
bit 5
CTS
bit 4
DDCD
bit 3
TERI1
bit 2
DDSR
bit 1
Data
Carrier
Detector
Ring
Indicator
Data
Set
Ready
Clear
To
Send
Delta
Data
Carrier
Detector
Delta
Data
Set
Ready
Delta
Clear
To
Send
Cambio
de alto a
bajo del
RI
Estado de los circuitos
Delta
Data
Carrier
Detector
Delta
Data
Set
Ready
Delta
Clear
To
Send
Cambio
de alto a
bajo del
RI
Cambio de lo existente
en los bits mas significativos

Nota: Delta significa que ha habido un cambio de estado en la lnea desde que se ha
ledo por ultima vez el registro. Los bits 4,5,6 y 7 Indican el estado actual de la seal.

Los cuatro bit bajos informan acerca de si se ha efectuado algn cambio de estado
desde la ultima lectura de este registro, teniendo en cuenta que el bit 2 TERI solo
informa de las transiciones de nivel bajo a alto del circuito RI

Al leerse el MSR, se borran los 4 bits referentes a cambio, es decir, los menos
significativos de l registro, pero no los bits de estado DCD, RI, DSR, CTS, que
reflejan la situacin de activacin o no de los circuitos fsicos del interfaz RS232.

Si DDCD, TERI, DDSR DCTS estn a 1 y se produce un cambio de estado
durante la lectura, dicho cambio no ser reflejado en el MSR; pero si estn a 0 el
cambio ser reflejado despus de la lectura.
A AC CC CE ES SO O A A L LO OS S R RE EG GI IS ST TR RO OS S
El acceso a los diferentes registros de la UART se lleva a cabo en el PC a travs
de los puertos de comunicacin especificados para ello. En el caso del PC-XT son
las direcciones de puerto 3F8h para COM1 y 2F8h para COM2, en los equipos
PS/2 es factible instalar hasta ocho posibles puertos. En el BIOS del sistema
operativo del PC se soporta una tabla con la direccin base de los cuatro primeros
puertos comenzando por COM1 en la direccin 0040:0000. En dicha direccin se
encuentra el byte menos significativo de la direccin del puerto (3F8h) es decir
11111000 =F8h y en la siguiente 40:0001 el mas significativo 00000011=03h.
DEPARTAMENTO DE ELECTRNICA Y COMUNICACIONES

ASIGNATURA: DISPOSITIVOS DE COMUNICACIONES



22
DIRECCION 0040 0000
F8 BYTE MENOS SIGNIFICATIVO 1111 1000
DIRECCION 0040 0001
03 BYTE MAS SIGNIFICATIVO 0000 0011

En el proceso de inicializacin del sistema (POST - Power On Selft Test), se
identifica cada uno de los interface serie y se sita la direccin de su puerto base
segn los valores que se aportan en la Tabla-5, teniendo en cuenta que si el
interface no esta presente se carga cero en el valor de direccin que le
corresponda y que la carga de dichas direcciones es secuencial. Estas direcciones
pueden modificarse durante el curso de la ejecucin de programas, permitiendo el
redireccionamiento de los puertos un ejemplo podria ser la posibilidad de instalar
un modem interno en la direccin fsica 3E8h (COM3) y trabajar como COM1
sustituyendo simplemente su valor actual por el mencionado anteriormente.
Las siguientes tablas se particularizan para PC-XT/AT y para PS/2.
TABLA 5a. Puertos, direcciones y contenido del PC-XT/AT.
PUERTO DIR VALOR
HEX.
DECIMAL BINARIO IRQ
COM1: 0040:0000 F8 248 11111000 4
0040:0001 03 3 00000011 4
COM2: 0040:0002 F8 248 11111000 3
0040:0003 02 2 00000010 3
COM3: 0040:0004 E8 232 11101000 4
0040:0005 03 3 00000011 4
COM4: 0040:0006 E8 232 11101000 3
0040:0007 02 2 00000010 3







DEPARTAMENTO DE ELECTRNICA Y COMUNICACIONES

ASIGNATURA: DISPOSITIVOS DE COMUNICACIONES



23
TABLA 5b. Puertos, direcciones y contenido del PS/2.
I IN NT TE ER RC CO ON NE EX XI I N N D DE E L LO OS S R RE EG GI IS ST TR RO OS S. .
En el siguiente esquema podemos ver la interconexin de los registros
anteriormente descritos:
BUFFER
BUS DE
DATOS
BUFFER
REGISTRO
DE RECEPCIN
REGISTRO
DE CONTROL
DE LINEA
REGISTRO
DIVISOR (1)
REGISTRO
DIVISOR (2)
REGISTRO
DE ESTADO
DE LINEA
REGISTRO DE
DESPLAZAMIENTO
DE TRANSMISIN
REGISTRO DE
CONTROL DE
MODEM
REGISTRO
DE ESTADO
DE MODEM
REGISTRO
ACTIVADOR DE
INTERRUPCIONES
REGISTRO
IDENTIFICADOR DE
INTERRUPCIONES
LOGICA DE
CONTROL DE
INTERRUPCIONES
LOGICA
DE
CONTROL
DE
MODEM
REGISTRO
DE
TRANSMISIN
CONTROL
&
TEMPORIZACIN
DE
TRANSMISIN
GENERADOR
DE
VELOCIDAD
CONTROL
&
TEMPORIZACIN
PARA
RECEPCIN
REGISTRO
DE
RECEPCIN
BUS DE DATOS
INTERNO
D0-D7
Sin
RCLK
BAUDOT
Sout
RTS
CTS
DTR
DSR
DCD
RI
OUT1
OUT2
INTERUP

PUERTO DIRECCIN VALOR
HEX.
DECIMAL BINARIO IRQ
COM1: 0040:0000 F8 248 11111000 4
0040:0001 03 3 00000011 4
COM2: 0040:0002 F8 248 11111000 3
0040:0003 02 2 00000010 3
COM3: 0040:0004 20 32 00100000 3
0040:0005 32 50 00110010 3
COM4: 0040:0006 28 40 00101000 3
0040:0007 32 50 00110010 3
COM5 0040:0008 20 32 00100000 3
0040:0009 42 66 01000010 3
COM6 0040:000A 28 40 00101000 3
0040:000B 42 66 01000010 3
COM7 0040:000C 20 32 00100000 3
0040:000D 52 82 01010010 3
COM8 0040:000E 28 40 00101000 3
0040:000F 52 82 01010010 3
DEPARTAMENTO DE ELECTRNICA Y COMUNICACIONES

ASIGNATURA: DISPOSITIVOS DE COMUNICACIONES



24
O OP PE ER RA AT TI IV VA A D DE E T TR RA AB BA AJ JO O D DE E L LA A U UA AR RT T. .
El paso inicial para poder trabajar con la UART es configurar los parmetros de
comunicacin, eso es lo mnimo que se necesita para poder establecer la
comunicacin mas elemental. Esto se realiza cargando el registro de control de
lnea(LRC), puerto (3FBh), con los valores adecuados a las caractersticas de la
transmisin a realizar, longitud de palabra, activacin de paridad, seleccin de
paridad y bits de parada.

Es importante resaltar que la primera accin a tomar es establecer los valores que
permitan seleccionar la velocidad y para ello los divisores que anteriormente se
detallaron y que deberan estar cargados en los registros DLM y DLL (puertos
3F8h y 3F9h respectivamente)habiendo condicionado su seleccin con el bit
DLAB en el registro de control de lnea.

Una vez cargados estos valores se desactiva el DLAB lo que permitir acceder a
los registros de recepcin y transmisin de datos.

Al llegar una informacin al registro de transmisin es automticamente volcada
a un registro interno de la UART donde son aadidos los bit de arranque, parada,
paridad y a continuacin transmitida. En el registro de recepcin encontraremos
el ultimo dato llegado al puerto serie, dato que deberemos leer inmediatamente si
no lo queremos perder ya que el siguiente dato recibido borrara a este sin
recuperacin posible en este nivel de comunicacin. Cuando esto ocurra, es decir,
que se sobrescriba, se activar el bit 1 del registro de estado de lnea en el puerto
3FDh, indicando un error de rebosamiento en recepcin (overrun), leyendo este
mismo registro podremos identificar otros posibles errores producidos en la
comunicacin, paridad, sincronismo, break.
Este mismo registro nos indica en el bit 0 (DR) cuando tenemos un dato
disponible para leer en el buffer de recepcin. Dicho mtodo es el usado en
sondeo.

L LA A T TR RA AN NS SM MI IS SI I N N Y Y L LA A R RE EC CE EP PC CI I N N E EN N E EL L 8 82 25 50 0
La seccin de transmisin del 8250 consiste en el Registro de Retencin de
transmisin (THR), el Registro de Desplazamiento de la Transmisin (TSR) y en
la lgica de control asociada.
REGISTRO RETENCION DE TRANSMISION (THR)
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
REGISTRO DESPLAZAMIENTO DE TRANSMISION (TSR)
DATOS
0
bit 7
TEMT
bit 6
DR
bit 0
THRE
bit 5
BI
bit 4
FR
bit 3
PE
bit 2
OE
bit 1
TSR
VACIO
THR
VACIO
DATOS DOAD7
THREACTIVO

Dos bits en el LSR indican si est vaco el THR (bit THRE) o el TSR (bit
TEMT). El carcter de 5-8 bits a ser transmitido es escrito en el THR; la CPU
DEPARTAMENTO DE ELECTRNICA Y COMUNICACIONES

ASIGNATURA: DISPOSITIVOS DE COMUNICACIONES



25
debera realizar esta operacin slo si THRE est activo: este bit es activado
cuando el carcter es copiado del THR al TSR durante la transmisin del bit de
inicio.

Cuando el transmisor est inactivo, tanto THRE como TEMT estn activos. El
primer carcter escrito provoca que THRE baje; tras completarse la transferencia
vuelve a subir aunque TEMT permanecer bajo mientras dure la transferencia en
serie del carcter a travs de TSR. Si un segundo carcter es escrito en THR,
THRE vuelve a bajar y permanecer bajo hasta que el TSR termine la
transmisin, porque no es posible volcar el contenido de THR en TSR hasta que
este ltimo no acabe con el carcter que estaba transmitiendo. Cuando el ltimo
carcter ha sido transmitido fuera del TSR, TEMT vuelve a activarse y THRE
tambin lo har tras un cierto tiempo (el que tarda en escribirse THR en TSR).

En la recepcin, los datos en serie asncronos entran por la patilla SIN. El estado
inactivo de la lnea se considera el '1' lgico. Un circuito de deteccin de bit de
inicio est continuamente buscando una transicin de alto a bajo que interrumpa
el estado inactivo. Cuando la detecta, se resetea un contador interno y cuenta 7
pulsos de reloj (tener en cuenta que la frecuencia base es dividida por 16),
posicionndose en el centro del bit de inicio. El bit de inicio se considera vlido si
SIN contina an bajo en ese momento. La validacin del bit de inicio evita que
un ruido espreo en la lnea sea confundido con un nuevo carcter.

El LCR tiene toda la informacin necesaria para la recepcin: tamao del carcter
(5-8 bits), nmero de bits de stop, si hay paridad o no... la informacin de estado
que se genere ser depositada en el LSR. Cuando un carcter es transmitido desde
el Registro de Desplazamiento de la Recepcin (RSR) al Registro Buffer de
Recepcin (RBR), el bit DR del LSR se activa. La CPU lee entonces el RBR, lo
que hace bajar de nuevo DR. Si el carcter no es ledo antes de que el siguiente
carcter que se est formando pase del RSR al RBR, el bit OE (overrun) del LSR
se activa. Tambin se puede activar PE en el LSR si hay un error de paridad.
Finalmente, la circuitera que chequea la validez del bit de stop podra activar el
bit FE del LSR en caso de error.
P PR RO OG GR RA AM MA AC CI I N N D DE E L LA A U UA AR RT T. .
Las dos formas clsicas que ya conocemos, sondeo e interrupcin se amplan en
cuanto a posibilidades dependiendo del nivel de control en profundidad que
deseemos del dispositivo. Manipulando los puertos del PC podremos conseguir el
mayor grado de control sobre el circuito si bien a costa de una elevada
complejidad, otra opcin que discutiremos ser el control por medio de la
interrupcin 14 del BIOS.

Se desarrollan a continuacin varias opciones que nos van a permitir desde un
control sencillo y superficial de la UART, hasta un control extremadamente
complejo de UART y modem.
Podremos realizar las operaciones de programacin directamente sobre
los puertos de entrada salida del PC.
DEPARTAMENTO DE ELECTRNICA Y COMUNICACIONES

ASIGNATURA: DISPOSITIVOS DE COMUNICACIONES



26
Desde BASIC:
10 PUERTO=&H3F8 ' Selecciona puerto COM1
20 OUT PUERTO+3,128 ' Activa bit 7 DLAB del registro de control de
lnea LCR.
El registro LCR es alcanzable mediante puerto base +3 y se carga con
128 que es 10000000 luego el bit 7 es el DLAB, esto preemitir
acceder a los registros DLM y DLL.

30 OUT PUERTO,48 ' Carga byte menos significativo del registro
divisor (2400)
El registro DLL es alcanzable mediante puerto base +0 pero con DLAB
a 1 ya que si no fuera as seria el THR. En l se carga 48 que es el byte
menos significativo para la velocidad de 2400.

40 OUT PUERTO+1,0 ' Carga byte mas significativo del registro
divisor (2400)
El registro DLM es alcanzable mediante puerto base +1 pero con
DLAB a 1 ya que si no fuera as seria el IER. En l se carga 00 que es
el byte mas significativo para la velocidad de 2400

En este punto ya habremos condicionado la velocidad y debemos ahora
establecer los parmetros para organizar el carcter y sus
condicionantes.

50 OUT PUERTO+3,0 ' Cambia bit del LCR para acceder a los otros
registros
El registro LCR es alcanzable mediante puerto base +3 y se carga con 0
luego el bit 7 es el DLAB es 0, esto preemitir acceder a los registros
de THRYRBR y IER.

60 OUT PUERTO+3,3 ' Configura LCR con 8,N,1
70 OUT PUERTO+1,0 ' Desactiva interrupciones

A partir de este punto se deben efectuar comprobaciones de lo que
existe en el registro LSR para leer el dato o actuar con arreglo a la
informacin que sobre errores proporciona este registro.
El registro LSR puede contener 00000001 o cualquier combinacin, en
el primer caso se esta informando que el dato recibido esta preparado.
Con cualquier otro valor, diferente a este, se aporta informacin acerca
de error de rebosamiento, error de paridad, error de sincronismo,
registro de transmisin vaco, et, pero no que el dato este preparado lo
que significa que no podremos leer

80 IF 1 AND INP(PUERTO+5) THEN PRINT CHR$(INP
(PUERTO));: GOTO 80
Esto realiza la comprobacin de que efectivamente el registro LSR esta
cargado con 00000001 y por lo tanto esta el dato preparado. Y si es as
se imprime el contenido del puerto (puerto base +0 con DLAB a cero
es RBR)
Con el dato en el RBR este se vuelca en un registro interno para que se
le aadan los parmetros grabados en el LCR y se enva

90 A$=INKEY$:IF A$<>"" THEN OUT PUERTO,ASC(A$)
Si hay dato, lo que se comprueba con A$ diferente de escribir en el
DEPARTAMENTO DE ELECTRNICA Y COMUNICACIONES

ASIGNATURA: DISPOSITIVOS DE COMUNICACIONES



27
THR que es puerto base +0 con DLAB a cero.
100 GOTO 80

Es aconsejable efectuar modificaciones del programa para que trabaje a
velocidades no permitidas en BASIC por ejemplo 115.200 bit/seg y una
vez realizadas estas modificaciones se comprobaran cabo por medio de el
comando RS que los cambios se han llevado a cabo.
P PR RO OG GR RA AM MA A C CO ON N V VE EL LO OC CI ID DA AD D D DE E 9 96 60 00 0. .
10 PUERTO=&H3F8 ' Selecciona puerto COM1
20 OUT PUERTO+3,128 ' Activa bit 7 DLAB del registro de control de
lnea LCR.
30 OUT PUERTO,12 ' Carga byte menos significativo del registro
divisor (9600)
40 OUT PUERTO+1,0 ' Carga byte mas significativo del registro
divisor (9600)
50 OUT PUERTO+3,0 ' Cambia bit del LCR para acceder a los otros
registros
60 OUT PUERTO+3,3 ' Configura LCR con 8,N,1
70 OUT PUERTO+1,0 ' Desactiva interrupciones
80 IF 1 AND INP(PUERTO+5) THEN PRINT CHR$(INP
(PUERTO));: GOTO 80
90 A$=INKEY$:IF A$<>"" THEN OUT PUERTO,ASC(A$)
100 GOTO 80
P PR RO OG GR RA AM MA A C CO ON N S SA AL LI ID DA A O OR RD DE EN NA AD DA A. .
10 PUERTO=&H3F8
20 OUT PUERTO+3,128
30 OUT PUERTO, &H01
40 OUT PUERTO+1, &H80
50 OUT PUERTO+3,0
60 OUT PUERTO+3,3
70 OUT PUERTO+1,0
80 IF 1 AND INP(PUERTO+5) THEN PRINT
CHR$(INP(PUERTO));:GOTO 80
90 A$=INKEY$:IF ASC(A$)=&H1B THEN END (si es el carcter de
escape, salimos)
ELSE IF A$ <> THEN OUT PUERTO ASC(A$)
100 GOTO 80
P PR RO OG GR RA AM MA A C CO ON N D DE ET TE EC CC CI IO ON N D DE E E ER RR RO OR RE ES S. .
10 PUERTO=&H3F8
20 OUT PUERTO+3,128
30 OUT PUERTO, &H01
40 OUT PUERTO+1, &H80
50 OUT PUERTO+3,0
60 OUT PUERTO+3,3
DEPARTAMENTO DE ELECTRNICA Y COMUNICACIONES

ASIGNATURA: DISPOSITIVOS DE COMUNICACIONES



28
70 OUT PUERTO+1,0
80 IF 1 AND INP(PUERTO+5) THEN PRINT
CHR$(INP(PUERTO));:GOTO 80
90 LSR$=INP(PUERTO+5)
100 IF 16 AND LSR$ THEN PRINT ERROR DE BREAK
110 IF 8 AND LSR$ THEN PRINT ERROR DE SINCRONISMO
120 IF 4 AND LSR$ THEN PRINT ERROR DE PARIDAD
130 IF 2 AND LSR$ THEN PRINT ERROR DE REBOSAMIENTO
140 A$=INKEY$:IF ASC(A$)=&H1B THEN END (si es el carcter de
escape, salimos)
ELSE IF A$ <> THEN OUT PUERTO ASC(A$)
100 GOTO 80
P PR RO OG GR RA AM MA A E EN N E EN NS SA AM MB BL LA AD DO OR R
El programa anterior en ensamblador seria:
.MODEL SMALL
DOSSEG
.DATA
PUERTO_BASE DW 03f8h ; Se corresponde com COM1
.STACK 200H
.CODE
COMIENZO:
MOV AX,@DATA
MOV DS,AX ; Para que DS apunte al segmento standar de datos
;
; El siguiente proceso configura el puerto COM1
; con los siguientes parametros: 2400,N,8,1
; Activacion de de bit DLAB
MOV DX,PUERTO_BASE
ADD DX,3 ; Se posiciona en RCL
MOV AL,128 ; Selecciona el bit 7 de RCL
OUT DX,AL ; Activa bit 7 del registro de control de linea

; Carga byte mas significativo del registro divisor (2400)
MOV DX,PUERTO_BASE ; Se posiciona en byte mas significativo
MOV AL,48 ; de reg. divisor (2400)
OUT DX,AL ; Carga byte mas significativo de reg. divisor

; Carga byte menos significativo del registro divisor (2400)
MOV DX,PUERTO_BASE ;
ADD DX,1 ; Se posiciona en byte menos significativo
MOV AL,0 ; de reg. divisor (2400)
OUT DX,AL ; Carga byte menos significativo de reg. divisor

; Desactivacion de DLAB
MOV DX,PUERTO_BASE
ADD DX,3 ; Se posiciona en RCL
MOV AL,0 ; Selecciona el bit 7 de RCL
OUT DX,AL ; Desactiva bit 7 del registro de control de linea

DEPARTAMENTO DE ELECTRNICA Y COMUNICACIONES

ASIGNATURA: DISPOSITIVOS DE COMUNICACIONES



29
; Configura RCL con 8,N,1
MOV AL,3 ; Configura RCL con 8,N,1
OUT DX,AL ;

; Se desactivan todas las interrupciones de la UART del puerto COM1 (3F8H)
MOV DX,PUERTO_BASE
ADD DX,1 ; Se posiciona en reg. activador de interrupciones
MOV AL,0 ; Desactiva todas las interrupciones
OUT DX,AL

; Proceso principal
BUCLE:
; COMPRUEBA PUERTO
MOV DX,PUERTO_BASE
ADD DX,5 ; Se posiciona en reg. de estado de linea
IN AL,DX ; Lee registro LSR
TEST AL,00000001B ; Detecta que hay un caracter esperando a
; ser leido en la UART (operacion AND)
JNZ RECEPCION ;
TEST AL,01000000B ; Pregunta por bit 5 (reg. de trans. vacio)
JNZ TRANSMISION
JMP BUCLE ; Vuelve al bucle
;
RECEPCION:
; Lee caracter del registo buffer de recepcion RBR
MOV DX,PUERTO_BASE ; Se posiciona en RBR
IN AL,DX ; Lee el registro
; El registro AL contiene el caracter recibido
MOV DL,AL
MOV AH,2
INT 21H ; Lo visualizamos

; Si el caracter es retorno de carro (CR) le anade avance de linea (LF)
CMP DL,0DH ; Si el caracter no es retorno de carro (CR=ASCII ODH)
JNE BUCLE ; vuelve al bucle
MOV DL,0AH ; Anade avance de linea (LF=ASCII 0AH)
MOV AH,2 ;
INT 21H ; Visualiza el avance
;
JMP BUCLE ; Vuelve al bucle
;
TRANSMISION: ; Lectura de un caracter del teclado
MOV AH,1 ; Comprueba que se ha pulsado una tecla
INT 16H ; Interrupcion de teclado (BIOS)
JZ BUCLE ; Retorna al bucle si no se ha pulsado
MOV AH,0 ; Se lee la tecla que se ha pulsado
INT 16H ; AL contiene el byte que se va a enviar
;
CMP AL,1BH ; Pulsar Esc (ASCII=1BH) para terminar el programa
JE TERMINAR
;
; Transmision del caracter
MOV DX,PUERTO_BASE ; Se posiciona en reg. de retencion de transmision
DEPARTAMENTO DE ELECTRNICA Y COMUNICACIONES

ASIGNATURA: DISPOSITIVOS DE COMUNICACIONES



30
THR
OUT DX,AL ; se envia el contenido de AL al THR
JMP BUCLE
;
TERMINAR:
MOV AH,4CH ; Retorna al DOS
INT 21H
;
END COMIENZO
U UT TI IL LI IZ ZA AC CI I N N D DE E L LA AS S I IN NT TE ER RR RU UP PC CI IO ON NE ES S 1 14 4 D DE E L LA A
B BI IO OS S
Usando las interrupciones 14h del BIOS que nos van a permitir
inicializar el puerto, escribir o leer en el y un control sobre el estado de
dicho puerto.

Se indican a continuacin los servicios de comunicaciones serie de la
BIOS en los adaptadores de puerto serie de los ordenadores IBM/PC-
compatibles.

El vector de la interrupcin 14h reside en la direccin 00:50h de la tabla
de vectores de interrupcin. La BIOS inicializa el vector de la
interrupcin 14h en la direccin F000:E739h (FE739). La tabla de
vectores de interrupcin puede ser accedida despus de que se haya
terminado de realizar el proceso de POST (Power On Selft Test)
desarrollado por el BIOS en el momento de inicializacin del ordenador.
Dicha tabla se encuentra en las posiciones mas bajas de la memoria,
comenzando en la direccin 00:00h y terminando en la 00:3FFh

TABLA Funciones de comunicacin de la interrupcin 14h del
BIOS
FUNCIN TIPO DE BIOS Descripcin
00h PC-XT,AT,PS/2 Inicializa el puerto serie de
comunicaciones
01h PC-XT,AT,PS/2 Transmite carcter
02h PC-XT,AT,PS/2 Recibe carcter
03h PC-XT,AT,PS/2 Lee el estado del puerto serie
04h PS/2 Inicializa el interface serie extendido
05h PS/2 Control del interface serie extendido
06h-FFh - Reservadas

Todas estas funciones son seleccionadas a travs del registro AH, como se
describe detalladamente a continuacin:
DEPARTAMENTO DE ELECTRNICA Y COMUNICACIONES

ASIGNATURA: DISPOSITIVOS DE COMUNICACIONES



31

Inicializa el puerto serie de comunicaciones
Entrada: AH = 00h
AL = Parmetros de inicializacin del puerto serie
Bits 7-5 =Velocidad en baudios:
000b =110 baudios
001b =150 baudios
010b =300 baudios
011b =600 baudios
100b =1200 baudios
101b =2400 baudios
110b =4800 baudios
111b =9600 baudios
Bits 4-3 =Paridad:
00b =Sin paridad
01b =Impar
10b =Sin paridad
11b =Par
Bit 2 =Numero de bits de parada:
0b =1 Bit de parada
1b =2 Bit de parada
Bits 1-0 =Tamao del carcter:
10b =Carcter de 7 bits
11b =Carcter de 8 bits
DX = Numero de puerto serie 0,1,2,3 (COM1 =0, COM2 =1..)
Salida: AH = Estado de la lnea o puerto del interface:
Bit 7 =1 Error por time-out
Bit 6 =1 Registro de desplazamiento de transmisin vaco
Bit 5 =1 Registro de transmisin vaco
Bit 4 =1 Interrupcin por ruptura (break)
Bit 3 =1 Error de trama
Bit 2 =1 Error de paridad
Bit 1 =1 Error de desbordamiento (overrun)
Bit 0 =1 Dato en registro de recepcin
AL = Estado de modem:
Bit 7 =1 Detectada portadora (DCD)
Bit 6 =1 Detectada llamada (RI)
Bit 5 =1 Conjunto de datos preparados (DSR)
Bit 4 =1 Borrado para enviar (CTS)
Bit 3 =1 Modificada deteccin de portadora (DELTA-
DCD)
Bit 2 =1 Modifica deteccin de llamada (DELTA-RI)
Bit 1 =1 Modificado conjunto de datos preparados
(DELTA DSR)
Bit 0 =1 Modificado borrado para enviar (DELTA-CTS)

DEPARTAMENTO DE ELECTRNICA Y COMUNICACIONES

ASIGNATURA: DISPOSITIVOS DE COMUNICACIONES



32

Transmitir carcter
Entrada: AH = 01h
AL = Carcter a trasmitir (cdigo ASCII del carcter a enviar)
DX = Numero de puerto serie 0,1,2,3 (COM1 =0, COM2 =1..)
Salida: AH = Estado de la lnea:
Bit 7 =0 No ha habido error por time-out
Bit 6 =1 Registro de desplazamiento de transmisin vaco
Bit 5 =1 Registro de transmisin vaco
Bit 4 =1 Interrupcin por ruptura (break)
Bit 3 =1 Error de trama
Bit 2 =1 Error de paridad
Bit 1 =1 Error de desbordamiento (overrun)
Bit 0 =1 Dato en registro de transmisin
AL = Carcter enviado

Nota: Si la funcin se ejecuta correctamente el bit 7 de AH=0, si fall, dicho bit ser
uno. Se observa que los bits 0 a 6 de AH coinciden con la funcin de estado del puerto
serie, no obstante para conseguir un chequeo completo del puerto ha de ejecutarse
posteriormente la funcin 03h.

Leer carcter del interface
Entrada: AH = 02h
DX = Numero de puerto serie 0,1,2,3 (COM1 =0, COM2 =
1..)
Salida: AH = Registro de estado de la lnea:
Bit 7 =0 No ha habido error por time-out
Bit 6 =1 Registro de desplazamiento de transmisin
vaco. En general siempre cero
Bit 5 =1 Registro de transmisin vaco. En general
siempre cero
Bit 4 =1 Interrupcin por ruptura (break)
Bit 3 =1 Error de trama
Bit 2 =1 Error de paridad
Bit 1 =1 Error de desbordamiento (overrun)
Bit 0 =1 Dato en registro de recepcin
AL = Carcter recibido
Nota: Si la funcin se ejecuta correctamente el bit 7 de AH=0, si fall, dicho bit ser
uno. Se observa que los bits 1 a 4 de AH coinciden con la funcin de estado del puerto
serie, no obstante para conseguir un chequeo completo del puerto (comprobar el estado
de los 8 bits) ha de ejecutarse posteriormente la funcin 03h. Normalmente se pregunta
si AH=0 (OK). En caso contrario error.

DEPARTAMENTO DE ELECTRNICA Y COMUNICACIONES

ASIGNATURA: DISPOSITIVOS DE COMUNICACIONES



33
Lectura del estado del interface del puerto serie
Entrada: AH = 03h
DX = Numero de puerto serie 0,1,2,3 (COM1 =0, COM2 =1..)
Salida: AH = Estado de la lnea o interface:
Bit 7 =1 Error por exceso de tiempo
Bit 6 =1 Registro de desplazamiento de transmisin vaco
Bit 5 =1 Registro de transmisin vaco
Bit 4 =1 Interrupcin por ruptura ( v)
Bit 3 =1 Error de trama
Bit 2 =1 Error de paridad
Bit 1 =1 Error de desbordamiento (overrun)
Bit 0 =1 Dato en registro
AL = Estado de modem (si existe un modem conectado a dicho
puerto):
Bit 7 =1 Detectada portadora o seal en lnea (DCD)
Bit 6 =1 Detectada llamada (RI)
Bit 5 =1 Conjunto de datos preparados (DSR)
Bit 4 =1 Borrado para enviar (CTS)
Bit 3 =1 Cambio en deteccin de portadora (DELTA-DCD)
Bit 2 =1 Detectado flanco en indicador de llamada
(DELTA-RI)
Bit 1 =1 Cambio en conjunto de datos preparados (DELTA
DSR)
Bit 0 =1 Modificado borrado para enviar (DELTA-CTS)

Inicializa el puerto serie extendido
Entrada: AH = 04h
AL = 1 Interrupcin (break) / Con 0 no hay interrupcin
BH = Bits 0 a 4 =Paridad:
000b =Sin paridad
001b =Impar
010b =Par
011b =Impar
100b =Par
BL = Numero de bits de parada:
0b =1 Bit de parada
1b =2 Bit de parada con 6,7 u 8 bits de
longitud de carcter o 1.5 si la longitud de carcter a
transmitir o chequear es de 5 bit
CH = Bits 1-0 =Tamao del carcter:
00b =Carcter de 5 bits
01b =Carcter de 6 bits
10b =Carcter de 7 bits
11b =Carcter de 8 bits
CL = Bits 0-4 =Velocidad en baudios:
0000b =110 baudios
0001b =150 baudios
0010b =300 baudios
DEPARTAMENTO DE ELECTRNICA Y COMUNICACIONES

ASIGNATURA: DISPOSITIVOS DE COMUNICACIONES



34
0011b =600 baudios
0100b =1200 baudios
0101b =2400 baudios
0110b =4800 baudios
0111b =9600 baudios
1000b =19200 baudios
DX = Numero de puerto serie 0,1,2,3 (COM1 =0, COM2
=1..)
Salida: AH = Estado de la lnea o interface:
Bit 7 =0 Reservado / Bit 7 =1 Error fuera de tiempo
Bit 6 =1 Registro de desplazamiento de transmisin
vaco
Bit 5 =1 Registro de transmisin vaco
Bit 4 =1 Interrupcin por ruptura (break)
Bit 3 =1 Error de trama
Bit 2 =1 Error de paridad
Bit 1 =1 Error de desbordamiento (overrun)
Bit 0 =1 Dato en registro
AL = Estado de modem (si existe un modem conectado a
dicho puerto):
Bit 7 =1 Detectada portadora o seal en lnea
(DCD)
Bit 6 =1 Detectada llamada (RI)
Bit 5 =1 Conjunto de datos preparados (DSR)
Bit 4 =1 Borrado para enviar (CTS)
Bit 3 =1 Cambio en deteccin de portadora
(DELTA-DCD)
Bit 2 =1 Detectado flanco en indicador de llamada
(DELTA-RI)
Bit 1 =1 Cambio en conjunto de datos preparados
(DELTA DSR)
Bit 0 =1 Modificado borrado para enviar (DELTA-
CTS)

Control del puerto serie extendido
Entrada: AH = 05h
AL = 00h Leer registro de control de modem.
01h Escribir en registro de control de modem
DX = Numero de puerto serie 0,1,2,3 (COM1 =0, COM2 =1..)
BL = Escribir en el registro de control de modem.
Con AL =01h
Bit 7 Reservado
Bit 6 Reservado
Bit 5 Reservado
Bit 4 =1 Control de bucle (para pruebas)
Bit 3 =1 Salida 2
Bit 2 =1 Salida 1
Bit 1 =1 Preparado para enviar (RTS)
DEPARTAMENTO DE ELECTRNICA Y COMUNICACIONES

ASIGNATURA: DISPOSITIVOS DE COMUNICACIONES



35
Bit 0 =1 Terminal de datos preparado
Salida: AH = Estado de la lnea o interface:
Bit 7 =1 Error por exceso de tiempo
Bit 6 =1 Registro de desplazamiento de transmisin vaco
Bit 5 =1 Registro de transmisin vaco
Bit 4 =1 Interrupcin por ruptura (break)
Bit 3 =1 Error de trama
Bit 2 =1 Error de paridad
Bit 1 =1 Error de desbordamiento (overrun)
Bit 0 =1 Dato en registro
AL = Estado de modem (si existe un modem conectado a dicho puerto):
Bit 7 =1 Detectada portadora o seal en lnea (DCD)
Bit 6 =1 Detectada llamada (RI)
Bit 5 =1 Conjunto de datos preparados (DSR)
Bit 4 =1 Borrado para enviar (CTS)
Bit 3 =1 Cambio en deteccin de portadora (DELTA-DCD)
Bit 2 =1 Detectado flanco en indicador de llamada (DELTA-RI)
Bit 1 =1 Cambio en conjunto de datos preparados (DELTA DSR)
Bit 0 =1 Modificado borrado para enviar (DELTA-CTS)
BL = Leer el contenido del registro de control de modem.
Con AL =00h
Bit 7 Reservado
Bit 6 Reservado
Bit 5 Reservado
Bit 4 =1 Control de bucle (para pruebas)
Bit 3 =1 Salida 2
Bit 2 =1 Salida 1
Bit 1 =1 Preparado para enviar (RTS)
Bit 0 =1 Terminal de datos preparado
Nota: Si la funcin se ejecuta correctamente el bit 7 de AH=0, si fall, dicho bit ser
uno. Se observa que los bits 1 a 4 de AH coinciden con la funcin de estado del puerto
serie, no obstante para conseguir un chequeo completo del puerto (comprobar el estado
de los 8 bits) ha de ejecutarse posteriormente la funcin 03h. Normalmente se pregunta
si AH=0 (OK). En caso contrario error.
DEPARTAMENTO DE ELECTRNICA Y COMUNICACIONES

ASIGNATURA: DISPOSITIVOS DE COMUNICACIONES



36

E EJ JE EM MP PL LO OS S D DE E P PR RO OG GR RA AM MA AS S U UT TI IL LI IZ ZA AN ND DO O L LA AS S
I IN NT TE ER RR RU UP PC CI IO ON NE ES S 1 14 4H H D DE EL L B BI IO OS S:
P PR RO OG GR RA AM MA A D DE E T TR RA AN NS SM MI IS SI I N N: :
.MODEL SMALL
DOSSEG
.STACK 200H
.CODE
COMIENZO:
; Se carga el registro AL
MOV AL,01000011B ; Velocidad 300 Baudios (Bits 7-5),
; sin paridad (Bits 4-3), 1 Bit de stop (Bit 2)
; y longitud de palabra 8 Bits (Bits 1-0)
; Se selecciona el puerto
MOV DX,0 ; COM1: DX=0 / COM2: DX=1
; Se invoca a la interrupcin para la inicializacin del puerto
MOV AH,0 ; Funcin 0 de la int. 14H inicializa puerto
INT 14H ; Llama a la interrupcin 14H
;******************* TRANSMISION DE DATOS ******************
BUCLE:
; COMPRUEBA PUERTO
MOV AH,3 ; Funcin 3 de INT 14H. Obtiene status de
MOV DX,0 ; puerto serie COM1: ya que DX=0
INT 14H
TEST AH,01000000B ; Pregunta por bit 5 (reg. de transmisin vaco)
JZ BUCLE ; Si no lo esta vuelve al bucle
;
MOV AH,1 ; Funcin 1 de INT 21H: Lee carcter del teclado
INT 21H ; con ECO. Siendo el teclado sensible a la
; pulsacin de Ctrl+Breack.
; El registro AL contiene el carcter ledo del teclado
; ENVIA CARACTER AL PUERTO
MOV AH,1 ; COM1 ya que DX=0 y AL=caracter
INT 14H ;
;
JMP BUCLE ; Vuelve al bucle
END COMIENZO

PROGRAMA DE RECEPCIN:
.MODEL SMALL
DOSSEG
.DATA
VELOCIDAD DB 00000000B
PARIDAD DB 00000000B
LONGITUD DB 00000000B
BITSTOP DB 00000000B
.STACK 200H
.CODE
COMIENZO:
DEPARTAMENTO DE ELECTRNICA Y COMUNICACIONES

ASIGNATURA: DISPOSITIVOS DE COMUNICACIONES



37
MOV AX,@DATA
MOV DS,AX ; Para que DS apunte al segmento o grupo standar de datos
;************ APERTURA DEL PUERTO DE COMUNICACIONES ******
; Se asignan valores a las variables
MOV VELOCIDAD,01000000B ; 300 Baudios BITS 7-5
MOV PARIDAD,00000000B ; Sin paridad BITS 4-3
MOV LONGITUD,00000011B ; 8 Bits BITS 1-0
MOV BITSTOP,00000000B ; 1 Bit de parada BIT 2
; Se carga el registro AL
MOV AL,0 ; Pone a 0 el reg. AL
OR AL,VELOCIDAD ; Se van anadiendo parametros
OR AL,PARIDAD ; al registro AL
OR AL,LONGITUD ;
OR AL,BITSTOP ; Ya estan todos lo parametros
; Se selecciona el puerto
MOV DX,0 ; COM1: DX=0 / COM2: DX=1
; Se seleciona la funcion de inicializacion de puerto AH=0
MOV AH,0 ; Se carga el registro AH
; Se invoca a la interrupcion para la inicializacion del puerto
INT 14H ; LLAMA A LA INTERRUPCION 14H
;*********************** RECEPCION DE DATOS ******************
BUCLE:
; COMPRUEBA PUERTO
MOV AH,3 ; Leer estado de puerto serie
MOV DX,0 ; Puerto COM1:
INT 14H
TEST AH,00000001B ; Detecta que hay un caracter esperando a
; ser leido en la UART (operacion AND)
JZ BUCLE ; Si no lo esta vuelve al bucle
; LEE CARACTER DEL PUERTO
MOV AH,2 ; Se seleciona la funcion de recepcion AH=2 ;
MOV DX,0 ; Se selecciona el puerto COM1: DX=0
INT 14H ; Llama a la interrupcion 14H
; El registro AL contiene el caracter recibido
; Lo visualizamos
MOV DL,AL
MOV AH,2
INT 21H
;
JMP BUCLE ; Vuelve al bucle
END COMIENZO

P PR RO OG GR RA AM MA A D DE E T TR RA AN NS SM MI IS SI I N N- -R RE EC CE EP PC CI I N N M MU UY Y
S SI IM MP PL LI IF FI IC CA AD DO O: :
.MODEL SMALL
DOSSEG
.STACK 200H
.CODE
COMIENZO:
; Se inicializa el puerto COM1
MOV AL,01000011B ; 300,N,8,1
MOV DX,0 ; COM1: DX=0 / COM2: DX=1
MOV AH,0 ; Funcion 0 de la int. 14H inicializa puerto
DEPARTAMENTO DE ELECTRNICA Y COMUNICACIONES

ASIGNATURA: DISPOSITIVOS DE COMUNICACIONES



38
INT 14H ; Llama a la interrupcion 14H
; Proceso principal
BUCLE:
; COMPRUEBA PUERTO
MOV AH,3 ; Leer estado de puerto serie
MOV DX,0 ; Puerto COM1:
INT 14H
TEST AH,00000001B ; Detecta que hay un caracter esperando a
; ser leido en la UART (operacion AND)
JNZ RECEPCION ;
TEST AH,01000000B ; Pregunta por bit 5 (reg. de transmision vacio)
JNZ TRANSMISION
JMP BUCLE ; Vuelve al bucle
;
RECEPCION:
; LEE CARACTER DEL PUERTO
MOV AH,2 ; Se seleciona la funcion de recepcion AH=2
MOV DX,0 ; Se selecciona el puerto COM1: DX=0
INT 14H ; Llama a la interrupcion 14H
; El registro AL contiene el caracter recibido
; Lo visualizamos
MOV DL,AL
MOV AH,2
INT 21H
;
JMP BUCLE ; Vuelve al bucle
;
TRANSMISION: ; Lectura de un caracter del teclado
MOV AH,1 ; Comprueba que se ha pulsado una tecla
INT 16H ; Interrupcion de teclado (BIOS)
JZ BUCLE ; Retorna al bucle si no se ha pulsado
MOV AH,0 ; Se lee la tecla que se ha pulsado
INT 16H ; AL contiene el byte que se va a enviar
; ;
MOV AH,1 ; Funcion de transmision
MOV DX,0 ; Puerto por el que se va a transmitir
INT 14H ; Transmite dato (el contenido de AL)
JMP BUCLE
;
END COMIENZO
DEPARTAMENTO DE ELECTRNICA Y COMUNICACIONES

ASIGNATURA: DISPOSITIVOS DE COMUNICACIONES



39

P PR RO OG GR RA AM MA A D DE E T TR RA AN NS SM MI IS SI I N N- -R RE EC CE EP PC CI I N N M ME EJ JO OR RA AD DO O
Q QU UE E P PE ER RM MI IT TE E L LA A V VI IS SU UA AL LI IZ ZA AC CI I N N C CO ON NT TI IN NU UA A D DE E
M ME EN NS SA AJ JE ES S E EN N P PA AN NT TA AL LL LA A Y Y U UN NA A S SA AL LI ID DA A O OR RD DE EN NA AD DA A D DE EL L
P PR RO OG GR RA AM MA A: :
.MODEL SMALL
DOSSEG
.STACK 200H
.CODE
COMIENZO:
; Se inicializa el puerto COM1
MOV AL,01000011B ; 300,N,8,1
MOV DX,0 ; COM1: DX=0 / COM2: DX=1
MOV AH,0 ; Funcion 0 de la int. 14H inicializa puerto
INT 14H ; Llama a la interrupcion 14H

; Se desactivan todas las interrupciones de la UART del puerto COM1 (3F8H)
MOV DX,3F8H
INC DX ; Se posiciona en reg. activador de interrupciones
MOV AL,0 ; Desactiva todas las interrupciones
OUT DX,AL

; Proceso principal
BUCLE:
; COMPRUEBA PUERTO
MOV AH,3 ; Leer estado de puerto serie
MOV DX,0 ; Puerto COM1:
INT 14H
; TEST AH,00011110B ; Deteccion de errores
; JNZ ERRORES ;
TEST AH,00000001B ; Detecta que hay un caracter esperando a
; ser leido en la UART (operacion AND)
JNZ RECEPCION ;
TEST AH,01000000B ; Pregunta por bit 5 (reg. de transmision vacio)
JNZ TRANSMISION
JMP BUCLE ; Vuelve al bucle
;
RECEPCION:
; LEE CARACTER DEL PUERTO
MOV AH,2 ; Se seleciona la funcion de recepcion AH=2
MOV DX,0 ; Se selecciona el puerto COM1: DX=0
INT 14H ; Llama a la interrupcion 14H
; El registro AL contiene el caracter recibido
; Lo visualizamos
MOV DL,AL
MOV AH,2
INT 21H

; Si el caracter es retorno de carro (CR) le anade avance de linea (LF)
CMP DL,0DH ; Si el caracter no es retorno de carro (CR=ASCII ODH)
DEPARTAMENTO DE ELECTRNICA Y COMUNICACIONES

ASIGNATURA: DISPOSITIVOS DE COMUNICACIONES



40
JNE BUCLE ; vuelve al bucle
MOV DL,0AH ; Anade avance de linea (LF=ASCII 0AH)
MOV AH,2 ;
INT 21H ; Visualiza el avance
;
JMP BUCLE ; Vuelve al bucle
;
TRANSMISION: ; Lectura de un caracter del teclado
MOV AH,1 ; Comprueba que se ha pulsado una tecla
INT 16H ; Interrupcion de teclado (BIOS)
JZ BUCLE ; Retorna al bucle si no se ha pulsado
MOV AH,0 ; Se lee la tecla que se ha pulsado
INT 16H ; AL contiene el byte que se va a enviar
;
CMP AL,1BH ; Pulsar Esc (ASCII=1BH) para terminar el programa
JE TERMINAR
;
MOV AH,1 ; Funcion de transmision
MOV DX,0 ; Puerto por el que se va a transmitir
INT 14H ; Transmite dato (el contenido de AL)
JMP BUCLE
;
TERMINAR:
MOV AH,4CH ; Retorna al DOS
INT 21H
;
END COMIENZO


DEPARTAMENTO DE ELECTRNICA Y COMUNICACIONES

ASIGNATURA: DISPOSITIVOS DE COMUNICACIONES



41


O OP PC CI IO ON NE ES S D DE EL L P PR RO OG GR RA AM MA A D DE EB BU UG G
C:\>debug /?
Ejecuta Debug, una herramienta para examinar y editar programas.

DEBUG [[unidad:][ruta]nombre de archivo [archivo de prueba-parmetros]]

[unidad:][ruta]nombre de archivo Especifica el archivo que desea probar.
archivo de prueba-parmetros Especifica informacin de lnea de comandos
requerida por el archivo que desea probar.

Despus de que Debug se haya iniciado, escriba ? para obtener la lista de
comandos de depuracin.

C:\>
-?

ensamblar A [direccin]
comparar C direccin de rango
dump D [rango]
escribir E direccin [lista]
llenar F lista de rangos
ir G [=direccin] [direcciones]
hex H valor1 valor2
entrada I puerto
cargar L [direccin] [unidad] [primer_sector] [nmero]
mover M direccin de rango
nombre N [nombre_ruta] [lista_argumentos]
salida O byte de puerto
proceder P [=direccin] [nmero]
salir Q
registro R [registro]
buscar S lista de rangos
seguimiento T [=direccin] [valor]
desensamblar U [rango]
escribir W [direccin] [unidad] [primer_sector] [nmero]
asignar memoria expandida XA [#pginas]
desasignar memoria expandida XD [identificador]
asignar pginas de memoria expandida XM [Lpgina] [Ppgina]
[identificador]
mostrar estado de la memoria expandida XS
-q


DEPARTAMENTO DE ELECTRNICA Y COMUNICACIONES

ASIGNATURA: DISPOSITIVOS DE COMUNICACIONES



42
E EJ JE EM MP PL LO O D DE E U US SO O D DE E L LA AS S F FU UN NC CI IO ON NE ES S D DE EL L P PR RO OG GR RA AM MA A
D DE EB BU UG G E EN N L LA A E ED DI IC CI I N N, , C CO OR RR RE EC CC CI I N N Y Y E EJ JE EC CU UC CI I N N D DE E
U UN N P PR RO OG GR RA AM MA A C CO ON N E ER RR RO OR RE ES S D DE E C CO OD DI IF FI IC CA AC CI I N N: :
C:\>DEBUG

-A 100 EDICIN DEL PROGRAMA
115B:0100 B400 MOV AH,00
115B:0102 B04B MOV AL,4B
115B:0104 BA0000 MOV DX,0000
115B:0107 CD14 INT 75
115B:0109 B402 MOV AH,02
115B:010B BA0000 MOV DX,0000
115B:010E CD14 INT 14
115B:0110 88C2 MOV DL,AL
115B:0112 B402 MOV AH,02
115B:0114 CD21 INT 21
115B:0116 EBF1 JMP 0109
115B:0118

-U 102 10E PODEMOS VISUALIZAR
115B:0102 B04B MOV AL,4B
115B:0104 BA0000 MOV DX,0000
115B:0107 CD14 INT 75
115B:0109 B402 MOV AH,02
115B:010B BA0000 MOV DX,0000
115B:010E CD14 INT 14

-A 107 EDITAMOS UNA LINEA ERRONEA
115B:0107 INT 14
115B:0109

-H 118 100 CALCULO DEL NUMERO DE BYTES = ULTIMA INSTRUCCION -
PRIMERA
0218 0018

-R VISUALIZAMOS EL CONTENIDO DE LOS REGISTRO DE LA CPU
AX=0000 BX=0010 CX=0000 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=115B ES=115B SS=115B CS=115B IP=0100 NV UP EI PL NZ NA PO NC
115B:0100 B400 MOV AH,00

-R BX MODIFICAMOS EL REGISTRO BX <= 0
BX 0010
:0

-R CX MODIFICAMOS EL REGISTRO CX <= NUMERO DE BYTES QUE
OCUPA EL PROG.
CX 0018
:18

-N RECEP.COM DAMOS NOMBRE AL PROGRAMA
DEPARTAMENTO DE ELECTRNICA Y COMUNICACIONES

ASIGNATURA: DISPOSITIVOS DE COMUNICACIONES



43

-W LO SALVAMOS EN DISCO
Escribiendo 00018 bytes

-Q SALIMOS DE DEBUG AL DOS

C:\PROG-COM\>RECEP.COM EJECUTAMOS EL PROGRAMA DE RECEPCION DE DATOS
EDITEMOS EN AMBOS EQUIPOS EL SIGUIENTE PROGRAMA DE
TRASMISION-RECEPCION:
C:\>DEBUG
-A 100
208F:0100 B043 MOV AL,43
208F:0102 BA0000 MOV DX,0000
208F:0105 B400 MOV AH,00
208F:0107 CD14 INT 14
208F:0109 BAF803 MOV DX,03F8
208F:010C 42 INC DX
208F:010D B000 MOV AL,00
208F:010F EE OUT DX,AL
208F:0110 B403 MOV AH,03
208F:0112 BA0000 MOV DX,0000
208F:0115 CD14 INT 14
208F:0117 F6C401 TEST AH,01
208F:011A 7507 JNZ 0123
208F:011C F6C440 TEST AH,40
208F:011F 751C JNZ 013D
208F:0121 EBED JMP 0110
208F:0123 B402 MOV AH,02
208F:0125 BA0000 MOV DX,0000
208F:0128 CD14 INT 14
208F:012A 88C2 MOV DL,AL
208F:012C B402 MOV AH,02
208F:012E CD21 INT 21
208F:0130 80FA0D CMP DL,0D
208F:0133 75DB JNZ 0110
208F:0135 B20A MOV DL,0A
208F:0137 B402 MOV AH,02
208F:0139 CD21 INT 21
208F:013B EBD3 JMP 0110
208F:013D B401 MOV AH,01
208F:013F CD16 INT 16
208F:0141 74CD JZ 0110
208F:0143 B400 MOV AH,00
208F:0145 CD16 INT 16
208F:0147 3C1B CMP AL,1B
208F:0149 7409 JZ 0154
208F:014B B401 MOV AH,01
208F:014D BA0000 MOV DX,0000
208F:0150 CD14 INT 14
DEPARTAMENTO DE ELECTRNICA Y COMUNICACIONES

ASIGNATURA: DISPOSITIVOS DE COMUNICACIONES



44
208F:0152 EBBC JMP 0110
208F:0154 B44C MOV AH,4C
208F:0156 CD21 INT 21
208F:0158

NO OLVIDAR EL REALIZAR TODOS LOS PASOS ANTERIORES.
NECESARIOS PARA OBTENER EL ARCHIVO EJECUTABLE.
P PR RO OG GR RA AM MA A D DE ET TE EC CT TO OR R D DE E E ER RR RO OR RE ES S D DE E C CO OM MU UN NI IC CA AC CI I N N: :

.MODEL SMALL
DOSSEG
.DATA
MSG1 DB 'Error de overrun',13,10,'$'
MSG2 DB 'Error de paridad',13,10,'$'
MSG3 DB 'Error de formato',13,10,'$'
MSG4 DB 'Detectado <BREAK>',13,10,'$'
CR_LF DB 13,10,'$'
.STACK 200H
.CODE
COMIENZO:
MOV AX,@DATA
MOV DS,AX ; Para que DS apunte al segmento o grupo standar de datos
; Se carga el registro AL
MOV AL,01000011B ; Velocidad 300 Baudios (Bits 7-5),
; sin paridad (Bits 4-3), 1 Bit de stop (Bit 2)
; y longitud de palabra 8 Bits (Bits 1-0)
; Se selecciona el puerto
MOV DX,0 ; COM1: DX=0 / COM2: DX=1
MOV AH,0 ; Funcion 0 de la int. 14H inicializa puerto
; Se invoca a la interrupcion para la inicializacion del puerto
INT 14H ; Llama a la interrupcion 14H
; COMPRUEBA PUERTO
BUCLE: MOV DX,0 ; puerto serie COM1: ya que DX=0
MOV AH,3 ; Funcion 3 de INT 14H. Obtiene status de
INT 14H
LEA DX,CR_LF ; Apunta a caracteres salto de linea
TEST AH,00011110B ; Pregunta por bits 1 a 4 de status (BREAK
JZ SIGUE4 ; y errores). Si todos cero salta
CALL VISU_MSG ; Visualiza salto de linea
LEA DX,MSG4 ; Para que DX apunte al mensaje 4
TEST AH,00010000B ; Pregunte por el bit 4 del status(BREAK)
JZ SIGUE1 ; Si es 0 salta
CALL VISU_MSG ; y si no, visualiza mensaje
SIGUE1: LEA DX,MSG3 ; Para que DX apunte al mensaje 3
TEST AH,00001000B ; Pregunta por el bit 3 del status (error
formato)
JZ SIGUE2 ; Si es 0 salta
DEPARTAMENTO DE ELECTRNICA Y COMUNICACIONES

ASIGNATURA: DISPOSITIVOS DE COMUNICACIONES



45
CALL VISU_MSG ; y si no, visualiza mensaje
SIGUE2: LEA DX,MSG2 ; Para que DX apunte al mensaje 2
TEST AH,00000100B ; Pregunta por el bit 2 del status (error
paridad)
JZ SIGUE3 ; Si es 0 salta
CALL VISU_MSG ; y si no, visualiza mensaje
SIGUE3: LEA DX,MSG1 ; Para que DX apunte al mensaje 1
TEST AH,00000010B ; Pregunta por el bit 1 del status (error
overrun)
JZ SIGUE4 ; Si es 0 salta
CALL VISU_MSG ; y si no, visualiza mensaje
SIGUE4: TEST AH,00000001B ; Pregunta por el bit 0 del resultado
; (caracter recibido)
JZ BUCLE ; Si no se ha recibodo ninguno salta
MOV DX,0 ; Puerto COM1
MOV AH,2 ; Funcion 2 de la INT 14H. Lee caracter
INT 14H ; del puerto serie
MOV DL,AL ; Pasa el caracter a DL
MOV AH,2 ; Funcion 2 de la INT 21h. Visualiza
INT 21H ; caracter por pantalla
CMP DL,0DH ; Si el caracter no es CR vuelve el bucle
JNE BUCLE
MOV DL,0AH ; Si lo es pone LF como nuevo caracter
MOV AH,2 ; Funcion 2 de la INT 21h. Visualiza
INT 21H ; caracter por pantalla
JMP BUCLE ; Vuelve al bucle
VISU_MSG PROC NEAR ; Subrutina que guarda AX porque AH
PUSH AX ; es el status
MOV AH,9 ; Funcion 9 de la INT 21H. Visualiza
INT 21H ; mensaje por pantalla
POP AX ; Recupera AX y retorna
RET
VISU_MSG ENDP
END COMIENZO

Implemente a continuacin un programa completo de comunicaciones que
permita la transmisin, recepcin y deteccin de errores.
DEPARTAMENTO DE ELECTRNICA Y COMUNICACIONES

ASIGNATURA: DISPOSITIVOS DE COMUNICACIONES



46

M ME ED DI IA AN NT TE E L LA AS S F FU UN NC CI IO ON NE ES S 3 3H H Y Y 4 4H H D DE E L LA A
I IN NT TE ER RR RU UP PC CI I N N 2 21 1H H D DE EL L D DO OS S. .
Dichas funciones permiten el uso de los dispositivos COM1 y AUX del DOS
(que para esta interrupcin se considera el mismo) como dispositivos auxiliares
de entrada y salida. Sin embargo con esta interrupcin no es posible la
inicializacin del puerto serie de comunicaciones. Deberamos realizarla por
alguno de los dos procedimientos anteriores, o asumiendo la inicializacin por
defecto del POST del DOS (velocidad de 2400 baudios, sin paridad, un bit de
parada y longitud de carcter de ocho bits). Tampoco tendremos control sobre la
UART ni nos proporcionaran informacin sobre los errores producidos en la
comunicacin ni sobre el estado de los registros de la UART, ni sobre el estado
del puerto de comunicaciones. Permite sin embargo controlar el puerto como
dispositivo de caracteres instalable.

Lectura del dispositivo auxiliar standard (STDAUX)
Entrada: AH =03h
Salida: AL =Carcter ledo en el dispositivo auxiliar estndar.

Nota: Esta funcin nos permite leer, esperando hasta que llegue, un
carcter ledo en el dispositivo COM1 o AUX, recuperndolo en el
registro AL. Son chequeados ^C/^Break en el teclado.

Salida del dispositivo auxiliar standard (STDAUX)
Entrada: AH =04h
DL =Carcter a enviar al dispositivo auxiliar estndar.
Salida: - No devuelve informacin.

Nota: Esta funcin nos permite enviar el carcter contenido en el registro
DL al dispositivo auxiliar estndar COM1 o AUX. Son chequeados
^C/^Break en el teclado.

Es interesante indicar brevemente las funciones 00h,01h y 02h de la interrupcin
21h.
Terminar programa
Entrada: AH =00h
CS =Segmento PSP.

Lee carcter de la entrada standard, visualiza el eco
Entrada: AH =01h
Salida: AL =Carcter ledo

Nota: Son chequeados ^C/^Break en el teclado.

DEPARTAMENTO DE ELECTRNICA Y COMUNICACIONES

ASIGNATURA: DISPOSITIVOS DE COMUNICACIONES



47
Enva carcter a la salida standard
Entrada: AH =02h
DL =Carcter a enviar (escribir en salida estndar)
Salida: AL =Ultimo carcter enviado

Nota: Son chequeados ^C/^Break en el teclado.

O OT TR RO OS S C CO OM MP PO ON NE EN NT TE ES S A AS S N NC CR RO ON NO OS S. .
Conviene advertir que el modelo estudiado (8250) y sus diferentes derivados no
son los primeros ni los nicos circuitos de comunicaciones serie asncronas en el
mercado, si no que existe un amplio universo de componentes similares y no
siempre directamente substituibles. Con objeto de facilitar la identificacin de
circuitos de comunicaciones en otros equipos que no sean PCs y que se deseen
conectar a estos, se mencionan a continuacin algunos componentes que
desarrollan similares funciones y que no son de uso comn en el entorno de los
PCs.

Se indican entre parntesis el nombre dado por las diferentes compaas a sus
circuitos:
Z80-(DART) Transmisor/receptor asncrono doble.
Z80-(SIO) Controlador de entrada/salida serie.
Z8530 Controlador de comunicaciones serie.
16C450 (ACE) Elemento de comunicaciones asncronas. Bajo consumo.
16C452 (DACE) Elemento de comunicaciones asncronas doble. Bajo
consumo.
2123 (DEUCE) Doble elemento de comunicaciones universales avanzado.
Similar al 8251 incorpora un generador de velocidad.
2661 (EPCI) Interface de comunicaciones programable avanzado.
65C51 (ACIA) Adaptador de interface de comunicaciones asncronas. Bajo
consumo.
65C52 (DACIA) Adaptador de interface de comunicaciones asncronas doble.
Bajo consumo.
6551 (ACIA) Adaptador de interface de comunicaciones asncronas.
68C52 (DACIA) Adaptador de interface de comunicaciones asncronas doble.
Bajo consumo.
6850 (ACIA) Adaptador de interface de comunicaciones asncronas.
6852 (SSDA) Adaptador de datos serie sncrono.
6854 Controlador de enlace de datos avanzado.
68681 (UART) Transmisor/receptor asncrono universal doble.
82C50 (ACE) Elemento de comunicaciones asncronas 8250 en versin de
bajo consumo.
8251 (USART) Transmisor /receptor sncrono/asncrono universal.
8256 (MUART) Transmisor/receptor asncrono universal multi-funcin.
8256 (UART) Transmisor/receptor asncrono universal.
84C40 (SIO) Controlador de entrada/salida serie.
DEPARTAMENTO DE ELECTRNICA Y COMUNICACIONES

ASIGNATURA: DISPOSITIVOS DE COMUNICACIONES



48
85C30 (SCC) Controlador de comunicaciones serie. Bajo consumo.
85C35 (SCC) Controlador de comunicaciones serie. Bajo consumo.
9902 Controlador de comunicaciones asncronas.
1488/1489 Son los mas conocidos circuitos adaptadores de interface nos
permitirn localizar con facilidad un interface V24.
D DR RI IV VE ER RS S F FO OS SS SI IL L. .
El termino FOSSIL proviene de las siglas Fido Opus SEAdog Standard Interface
Layer es una especificacin que pretende solucionar los problemas que surgen al
desarrollar programas de comunicaciones que utilizan la llamada a la interrupcin
14 del BIOS del PC. Al existir diferentes fabricantes de BIOS y no ajustarse
exactamente a la implementada por IBM en sus equipos aumentndose dicho
efecto con la distribucin por parte de los diferentes fabricantes de hardware cada
uno incluyendo sus correspondientes mejoras, el resultado final es la creacin
de programas de comunicacin que pueden funcionar correctamente en una
mquina determinada y no hacerlo en el resto.
Para solucionar dicho problema se ha diseado la anterior especificacin la cual
pretende describir la creacin de drivers que separen el nivel fsico de la
comunicacin, entendiendo como tal a la mquina sobre la que se pretende
correr un determinado software de comunicacin y el mencionado programa.
De forma que se facilite la puesta a punto y la portabilidad de la aplicacin de
comunicaciones.
Los drivers FOSSIL mas conocidos son el BNU, posiblemente al mas extendido,
y al mas moderno X00.
El procedimiento para implementar el mencionado driver es la interceptacin y
sustitucin de la interrupcin 14 del BIOS en el momento del arranque del
equipo.
SOFTWARE DE
COMUNICACIONES
DESARROLLADO POR EL
USUARIO
DRIVER FOSSIL
Intercepta la interrupcin 14 del
BIOS
UART

Generalmente aadiendo el driver como un dispositivo en el CONFIG.SYS:
DEVICE=C:\BNU.SYS /P2 /L0:19200,8N1
La lnea anterior cargara el driver BNU con dos puertos de trabajo, definiendo a
COM1 en el puerto 0, a una velocidad de 19200 baudios, con 8 bit de datos sin
paridad y un bit de parada.
Puede a continuacin cargarse el programa de comunicaciones comercial o
DEPARTAMENTO DE ELECTRNICA Y COMUNICACIONES

ASIGNATURA: DISPOSITIVOS DE COMUNICACIONES



49
desarrollado por el usuario. Muchos programas de comunicacin solicitan
previamente la instalacin de dichos drivers para hacer uso de sus amplias
posibilidades de trabajo.
Las funciones de dichos drivers se encuentran documentadas y desarrolladas en la
aplicacin distribuida por el fabricante.
DEPARTAMENTO DE ELECTRNICA Y COMUNICACIONES

ASIGNATURA: DISPOSITIVOS DE COMUNICACIONES



50
P PR RO OG GR RA AM MA A D DE E D DI IA AG GN NO OS ST TI IC CO O D DE E L LA A U UA AR RT T E EN N
T TU UR RB BO O C C. .
El siguiente programa de ejemplo coloca el 8250 en modo lazo (LOOP) y
seguidamente comienza a transmitir datos de 8 bits (desde 0 hasta 255)
comprobando que le llegan los mismos datos que enva y sin que se produzcan
errores. Se permite elegir el puerto deseado as como la velocidad de transmisin.
/*****************************************************************
*** *
* UTILIDAD DE AUTODIAGNOSTICO DEL 8250 EN TURBO C
*
*****************************************************************
****/

#include <dos.h>
#include <conio.h>

#define LCR (base+3) /* registro de control de lnea */
#define IER (base+1) /* registro de activacin de interrupciones */
#define DLL (base+0) /* parte baja del divisor */
#define DLM (base+1) /* parte alta del divisor */
#define MCR (base+4) /* registro de control del modem */
#define LSR (base+5) /* registro de estado de lnea */
#define RBR (base+0) /* registro buffer de recepcin */
#define THR (base+0) /* registro de retencin de transmisin */

#define DR 1 /* bit dato disponible del LSR */
#define OE 2 /* bit de error de overrun del LSR */
#define PE 4 /* bit de error de paridad del LSR */
#define FE 8 /* bit de error en bits de stop del LSR */
#define BI 0x10 /* bit de error de break en el LSR */
#define THRE 0x20 /* bit de THR vaco */


void error()
{
printf ("\r Fallo del puerto serie!!\n");
exit (2);
}


void main()
{
unsigned com, base, divisor, dato, entrada, lsr;

printf("- Elige COM (1, 2, ...): "); scanf ("%d", &com);
DEPARTAMENTO DE ELECTRNICA Y COMUNICACIONES

ASIGNATURA: DISPOSITIVOS DE COMUNICACIONES



51
base=peek(0x40, (com-1)*2);
if (base==0) {
printf("\n El COM elegido no existe para la BIOS!.\n");
exit (1);
}

printf("- Elige divisor (1-65535): ");
scanf ("%d", &divisor); if (!divisor) divisor=1;

printf("\nComprobando 8250 en %03Xh a %lu baudios.\nEspera...",
base, 1843200L/divisor/16);

outportb (LCR, 0x83); /* DLAB=1, 8 bits, 1 stop, sin paridad */
outportb (IER, 0);
outportb (DLL, divisor % 256);
outportb (DLM, divisor >>8);
outportb (MCR, 8+16); /* modo LOOP */
outportb (LCR, 0x03); /* DLAB=0, 8 bits, 1 stop, sin paridad */

for (dato=0; (dato<0x100) && !kbhit(); dato++) {

do { /* esperar por THR vaco */
lsr=inportb(LSR);
if (lsr & (OE|PE|FE|BI)) error();
} while (!(lsr & THRE));

outportb (THR, dato); /* enviar carcter */

do { /* esperar por RBR lleno */
lsr=inportb(LSR);
if (lsr & (OE|PE|FE|BI)) error();
} while (!(lsr & DR));

entrada=inportb (RBR); /* recibir carcter */

if (dato!=entrada) error();
printf ("\rEnviado y recibido byte %d",dato);
}

if (!kbhit())
printf("\rAutodiagnstico del 8250 en COM%d superado.\n", com);
else
{ getch(); printf("\rTecla pulsada - prueba abortada.\n");}
}
DEPARTAMENTO DE ELECTRNICA Y COMUNICACIONES

ASIGNATURA: DISPOSITIVOS DE COMUNICACIONES



52
DESCRIPCIN DE LOS REGISTROS DE LA UART 8250
REG. DE RETENCIN DE TRANSMISIN (THR) DIR =P_base +0 DLAB =0 Registro de Escritura
REG. (BUFFER) DE RECEPCIN (RBR) DIR =P_base +0 DLAB =0 Registro de Lectura
REG. DIVISOR (MENOS SIGNIFICATIVO) (DLL) DIR =P_base +0 DLAB =1 Reg. de (Lect/Esc) Byte bajo (7-0 bits) del Reg. divisor de CLK
REG. DIVISOR (MAS SIGNIFICATIVO)(DLM) DIR =P_base +1 DLAB =1 Reg. de (Lect/Esc) Byte alto (15-8 bits) del Reg. divisor de CLK
REGISTRO DE CONTROL DE LNEA (LCR)
Direccin =Puerto_base +3 DLAB (Es el bit 7) =X Registro de Lectura/Escritura
0 Primer bit de seleccin de longitud de carcter a procesar 0 (WLS0)*.
1 Segundo bit de seleccin de longitud de carcter a procesar 1 (WLS1)*.
BIT 1 Bit 0 (*)Longitud de carcter a procesar
0 0 5 Bits
0 1 6 Bits
1 0 7 Bits
1 1 8 Bits
2 Este bit especifica el numero de bits de parada (STB) generado por cada carcter enviado, o chequeado en cada carcter recibido: Con 0 Se
genera o chequea un bit de parada por carcter / 1 Cuando la longitud de carcter seleccionada es de cinco bits entonces son generados o
chequeados un bit y medio de parada. Cuando la longitud de carcter seleccionado es de seis, siete u ocho bits se generan o chequean dos
bit de parada.
3 =1 Activa paridad (PEN) sea para chequear o trasmitir. El bit de paridad se pone entre el ultimo bit de la palabra de datos (bit mas
significativo) y el bit de parada de la trama de informacin.
4 Suponiendo activo (1) el bit 3 con: 0 Se genera o comprueba un numero IMPAR de unos / 1 Se genera o comprueba un numero PAR de
unos.
5 (Stick Parity Bit) Define el valor lgico del bit de paridad. Con: 1 El bit de paridad valdr CERO en caso de paridad PAR (Uso habitual) / 0 El
bit de paridad valdr UNO en caso de paridad PAR.
6 (Break Control Bit) - Se utiliza para enviar una seal de BREAK. Con:1 La salida serie (SOUT) es obligada a permanecer en el estado lgico
cero (tensin +25v en salida del interface) y mantiene dicho estado a pesar de que exista actividad de transmisin. Manteniendo este estado
se activa la seal de ruptura (Break) en el Bit 4 del Registro de Estado de Lnea de la UART receptora. Para asegurar que eso ocurra ha de
mantenerse dicho estado durante al menos el tiempo de transmisin de una trama completa (bit de arranque +bits de datos +bit de paridad
+bits de parada).
7 =1 Permite el acceso a los registros divisores de reloj (DLAB) durante una operacin de lectura o escritura.
=0 Buffer de recepcin y registro de desplazamiento de transmisin.
REGISTRO DE CONTROL DE MODEM (MCR)
BIT Direccin =Puerto_base +4 DLAB =X Registro de Lectura/Escritura
0 =1 Activa circuito terminal de datos preparado (DTR)
1 =1 Activa circuito preparado para enviar (RTS)
2 =1 Lnea auxiliar 1 (-SOUT1) de propsito general (No usada habitualmente). La fuerza a activa.
3 =1 Lnea auxiliar 2 (-SOUT2) de propsito general (Activar)
4 =1 Activa el puerto serie en modo diagnostico conectando en bucle digital local la salida del registro de transmisin a la entrada del registro
de recepcin. Comprobando de forma inmediata el funcionamiento de la UART.
5-7 =0 Reservado.
REGISTRO DE ESTADO DE LNEA (LSR)
BIT Direccin =Puerto_base +5 DLAB =X Registro de Lectura/No recomendada Escritura
0 =1 Dato recibido preparado (DR). Se ha recibido un carcter que se encuentra almacenado para su lectura en el registro de recepcin.
Puerto 03F8h para COM1. Este es el bit que ha de comprobarse en el procedimiento de sondeo. Una vez ledo el carcter automticamente
se restaura a cero.
1 =1 Error de rebosamiento en recepcin. OVERRUN (OE) . Ha llegado otro carcter al registro de recepcin antes de que se haya ledo el
anterior. Se pierde el primer carcter.
2 =1 Error de paridad (PE). El carcter recibido tiene una paridad incorrecta respecto a la esperada.
3 =1 Error de sincronismo en la recepcin de trama (FE). Se espera un bit de parada (un uno) despus de el bit de paridad o ultimo bit de datos
y ha llegado un cero.
4 =1 Interrupcin por break (BI) o ruptura de comunicacin. Cuando el estado del circuito de recepcin es cero durante un tiempo mayor que el
bit de arranque +los bits de datos +el bit de paridad +el bit de parada. Tb>Tstar+Tbits-d+Tparidad+Tstop. En algunos casos puede
utilizarse como control de flujo.
5 =1 Registro de transmisin vaco (THRE). El controlador esta preparado para aceptar un nuevo carcter a enviar.
6 =1 Registro de transmisin y registro de desplazamiento de transmisin vacos (TSRE&THRE).
7 =0 Reservado.
REGISTRO DE ESTADO DE MODEM (MSR)
BIT Direccin =Puerto_base +6 DLAB =X Reg.(Lect/Esc). BIT Direccin =Puerto_base +6 DLAB =X Reg.(Lect/Esc).
0 Cambio en preparado para trasmitir (DELTA-CTS) 4 Preparado para enviar (CTS)
1 Cambio en equipo de datos preparado (DELTA-DSR) 5 Equipo de datos preparado (DSR)
2 Cambio en indicador de llamada (DELTA-RI) 6 Indicador de llamada (RI)
3 Cambio en la seal de recepcin detectada (DELTA-CD) 7 Detectada seal en la lnea de recepcin (CD)
DEPARTAMENTO DE ELECTRNICA Y COMUNICACIONES

ASIGNATURA: DISPOSITIVOS DE COMUNICACIONES



53
REGISTRO ACTIVADOR DE INTERRUPCIONES (IER) REGISTRO IDENTIFICADOR DE INTERRUPCIONES (IIR)
BIT Direccin =Puerto_base +1 DLAB =0 Reg.(Lect/Esc). BIT Direccin =Puerto_base +2 DLAB =X Reg. de Lectura
0 =1 Activa la interrupcin de dato recibido disponible 0 =0 Nos indica que hay pendiente alguna interrupcin
1 =1 Activa la int. de registro temporal de transmisin vaco 1 Bit 0* del campo identificador de interrupciones
2 =1 Activa la int. del estado de la lnea de recepcin 2 Bit 1* del campo identificador de interrupciones
3 =1 Activa la interrupcin del estado del modem 3-7 =0 Reservado
4-7 =0 Reservado

You might also like