Puertos de ES y Su Interfaz

72
Microprocesadores 1121060 Tema 8. PUERTOS DE E/S Y SU INTERFAZ.

description

Ideal para estudiantes de ingenieria en electronica y computacion

Transcript of Puertos de ES y Su Interfaz

Microprocesadores 1121060Tema 8. PUERTOS DE E/S Y SU INTERFAZ.Tema 8. PUERTOS DE E/S Y SU INTERFAZ.1. Conceptos de transmisin serie y paralelo2. Decodificacin de direccin de puertos de E/S3. Interfaz de puertos de E/S con el Microprocesador4. Programacin de Puertos de E/S5. Interrupciones por hardware6. TemporizadoresDecodificacin de la memoriaConceptos bsicos en la interfaz de memoria. La funcin principal de la interfaz de memoria es la de permitir al procesador leer o escribir en un registro dado de la memoria. Para realizar esta operacin, el microprocesador deber:1. Ser capaz de activar el circuito integrado2. Identificar el registro que se va a acceder3. Habilitar el buffer apropiadoDecodificacin de dispositivos de E/SCmo se realiza la lectura de puertos con el 8086?. De acuerdo al diagrama de tiempos del ciclo de bus. Para leer los dispositivos de E/S el 8086 realiza los siguientes pasos: 1. Coloca una direccin de 16 bits en el bus de direcciones 2. Coloca la seal M/IO en 0 para indicar que se trata de una direccin de dispositivos de E/S. 3. Coloca la seal RD en 0 para indicar que se requiere una operacin de lectura.Decodificacin de puertos de E/S Conceptos bsicos en la interfaz de puertos de E/S. La funcin principal de la interfaz de E/S es la de permitir al procesador leer o escribir en un registro dado del dispositivo de E/S. Para realizar esta operacin, el microprocesador deber. 1.Ser capaz de activar el circuito integrado 2.Identificar el registro 3.Habilitar el buffer apropiadoDecodificacin de puertos de E/SSer capaz de activar el circuito integrado Para conectar un dispositivo de E/S con el microprocesador, se requiere decodificar la direccin enviada al dispositivo de E/S. Esta decodificacin provoca que el dispositivo de E/S funcione en una seccin nica del mapa de E/S, por ejemplo de la direccin F000H a la F002H. Y en cualquier otra direccin fuera de este rango no se activar.Decodificacin de la MemoriaEs importante recordar que el 8086 utiliza las seales BHE (habilitacin del bus alto) y Ao (bit de direccin Ao) para seleccionar uno o ambos bancos de puertos de acuerdo al tamao de la instruccin que se estejecutando para la transferencia de datos fuera del procesador y considerando la siguiente tabla.BHE Ao Funcin00Habilitacin de ambos bancos 16 bits (D15-D0)01Habilitacin banco alto 8 bits direccin non (D15-D8)10Habilitacin banco bajo 8 bits direccin par (D7-D0)11No se habilita ningn bancoRESUMEN DE INTERFAZ DE PUERTOS DE E/S1. Conectar las lneas del bus de direccin requeridas a las lneas de direcciones del circuito integrado de puertos.2. Decodificar las lneas de direcciones fijas junto conla seal M/IO, a travs de una compuerta NAND o con decodificador.3. La seal BHE se utiliza para habilitar el banco alto de puertos de E/S, en la entrada CS junto con la decodificacin del punto anterior.4. La seal Ao se utiliza para habilitar el banco bajo de puertos de E/S, en la entrada CS junto con la decodificacin del punto dos. Mapeo de dispositivos de E/S Mapa de Memoria y de E/S del 8086a) Mapeo AisladoDecodificar 16 lneas de direcciones, M/IO=0 usar instrucciones IN y OUTb) Mapeo de dispositivos de E/S en MemoriaDecodificar 20 lneas de direcciones, M/IO=1 usar instrucciones MOV para leer y escribir en los puertos.Mapeo de dispositivos de E/S Puerto de EntradaMapeo de dispositivos de E/S Puerto de salidaCOMUNICACIN Serie/Paralelo Paralelo Transmite los datos a travs de n lneas de datos n depende del tamao de datos que se manejen: 8 bits, 16 bits, 32 bits Ms rpido. En cortas distancias resulta ms efectivo Los datos a transmitir no necesitan pre-tratamiento A largas distancias resulta ms costoso por la mayor disposicin a generar errores Serie Transmiten los datos a travs de 1 nica lnea de datos con independencia del formato. La transmisin de bits es uno detrs de otro sobre la misma lnea. Mucho menos costoso nmero reducido de lneas Menor disposicin a errores Los datos necesitan ser serializados/deserializados Se requiere un protocolo de transmisinCOMUNICACIN Serie/ParaleloSistemas Digitales con Microprocesadores 112135Tema 8 Tema 8. Comunicacin Paralela y Serial.Interfaz Paralela1.1 Puerto Paralelo 8255AInterfaz Serie. 2.1 Conceptos de transmisin serial2.2 UART 8250 2.3 USART 8251A82C55AInterfaz E/S de propsitogeneral que conecta perifrcios con el bus delmicroprocesador Realiza tareas de buffering y latching Programable porsoftware Utilizado como interfaz de teclado, puerto paralelo.82C55A 24 pines E/S que se pueden programar de forma Independiente. 3 Modos de operacin distintosModo 0. Las 8 lneas del puerto A,By C se programan como entrada o salida. El puerto C se puede trabajar como 2 puertos de 4 bits de entrada o de salida.Modo 1. Las 8 lneas del puerto A y/o B se programan como entrada o salida + 3 bits del puerto C para protocolo y control de interrupcinModo 2 Bidireccional.El puerto A trabaja con 8 lneas bidireccionales+ 5 bits del puerto C para protocolo e interrupcin.82C55A Palabra de Programacin MOV AL,________ OUT _____,AL82C55A82C55A82C55A82C55A82C55A82C55A82C55A82C55A82C55ACOMUNICACIN Serie/Paralelo Paralelo Transmite los datos a travs de n lneas de datos n depende del tamao de datos que se manejen: 8 bits, 16 bits, 32 bits Ms rpido. En cortas distancias resulta ms efectivo Los datos a transmitir no necesitan pre-tratamiento A largas distancias resulta ms costoso por la mayor disposicin a generar errores Serie Transmiten los datos a travs de 1 nica lnea de datos con independencia del formato. La transmisin de bits es uno detrs de otro sobre la misma lnea. Mucho menos costoso nmero reducido de lneas Menor disposicin a errores Los datos necesitan ser serializados/deserializados Se requiere un protocolo de transmisinCONCEPTOS BASICOS DE TRANSMISIN SERIALLos conceptos bsicos concernientes al modode E/S serial pueden clasificarse en las siguientes categoras. Requerimientos de interface. Formatos de Entrada/Salida serial. Chequeo de error en comunicacin de datos. Estndares en E/S serialTRANSMISIN SNCRONA VS. TRANSMISIN ASNCRONA Las comunicaciones seriales ocurren en uno de dos formatos: sncrono y asncrono. Formato sncrono En el formato sncrono, un receptor y un transmisor se sincroniza con el mismo reloj, y un bloque de caracteres se transmite despus de caracteres de sincrona (SYNC). Este formato es generalmente usado para altas velocidades de transmisin ( ms de 20 K bits/seg).Formato asncrono El formato asncrono es orientado a carcter. La transmisin asncrona puede ocurrir en cualquier momento, es impredecible en relacin al tiempo. Por lo tanto cada carcter debe contener informacin de cuando inicia la transmisin y cuando termina. Esta informacin se incluye en cada carcter agregando un bit de inicio y uno o dos bits de paro. Cuando no se transfiere informacin, el receptor permanece en estado alto. La transmisin empieza con un bit de inicio (en estado de cero) seguido por un carcter (de 5,6,7,8 bits) y 1 2 bits de paro en estado alto. Esto se conoce como trama. En transmisin serial, el estado lgico 1 se conoce tambin como Marca. El formato asncrono es generalmente usado en transmisiones a baja velocidad (menos de 20 Kbits/seg).Formatos Serie FORMATO Serie Sncrono La comunicacin sncrona exige al menos dos lneas: reloj, datos Mejora la tasa de transferencia porque reduce la relacin de bits de protocolo/bits de datos. Los datos se transmiten por bloques Lo que distingue a los protocolos es los bytesde control que utilizanInterfaces asncronas Es de crucial importancia mantener la sincronizacin entre ambos comunicantes Puede ser necesario la introduccin de mtodos de codificacin que aseguren la sincronizacin Tabla resumen de Formato sncrono vs. asncronoSimplex, Half y Full duplexSimplex, Half y Full duplexDireccin de datosHardware y Software Hardware ImplementacinBits de inicio yparo presentes con cada caracterCaracteres de Sincrona seenvan con cada grupo Informacin de la Trama20 K bits/segundo o menor Alta (20 K bits/segundo) o mayor)VelocidadUn caracter a la vez Grupo de caracteres Formato de datosAsncrono Sncrono FormatoResumen de Formatos Sncrono y Asncrono de Comunicacin Serial Modos de Transmisin de DatosSegn el sentido y simultaneidad de la transmisin podemos encontrarnos con tres tipos diferentes: Simplex:Este modo de transmisin permite que la informacin discurra en un solo sentido y de forma permanente, con esta formula es difcil la correccin de errores causados por deficiencias de lnea. Como ejemplos de la vida diariatenemos, la televisin y la radio. Half Duplex:En este modo, la transmisin fluye en un nico sentido a la vez, pero no de una manera permanente, pues el sentido puede cambiar. Comoejemplo tenemos los radios de banda civil. Full Duplex.Es el mtodo de comunicacin ms aconsejable, puesto que en todo momento la comunicacin puede ser en los dos sentidos posibles simultneamente. El ejemplo tpico sera el telfono.VELOCIDAD DE TRANSMISION En transmisin serial el receptor debe activar la recepcin de bits a la misma velocidad que el transmisor, de otra manera el receptor no sera capaz de detectar la diferencia entre dos 0s o 1s consecutivos. La velocidad a la cual los bits son transmitidos (bits/seg)se conoce como baud, sin embargo, tcnicamente esta unidad se define como el nmero de cambios de seal /seg.1 s/1200 bits = 0.83 ms por c/bitEsquema de codificacin:Eslacorrespondenciaentreloselementosde datos(bits)yloselementosdeseal (smbolos).Elesquemadecodificacinpuede mejorar las presentaciones de la transmisin.Uncriterioeslasincronizacinquepermite determinarelprincipioyelfindecadabit.Lo cualsepuedelograraltransmitirunasealde reloj por separado, pero resulta costoso. Lasincronizacinpuedeirincluidaenelpropio esquemadecodificacin.Ejemplocodificacin Manchester.Esquema de codificacin: Dosvoltajes distintos para 0 y 1 Voltajeconstante para el intervalo Unipolar:0voltspara0lgicoyV volts para 1 lgico. Bipolar:-Vvoltspara0,+Vvoltspara 1 Transicinen mediodecada periodo Latransicinsirve para la sincrona. Latransicinde un nivel bajo a uno altorepresentaun uno Latransicinde un nivel altoauno bajo representa un 0Codificacin NRZ ( no retorno a cero)Codificacin ManchesterEstndares en Transmisin serial Qu es RS-232?RS-232 (Estndar ANSI/EIA-232) esel conector serial de las PCs IBM y compatibles. Se ha utilizado para una gran variedad de propsitos, como conectar un ratn, impresora omdem, as como instrumentacin de medicin. Gracias a las mejoras que se han ido desarrollando en las lneas de transmisin y en los cables, existen aplicaciones en las que se aumenta el desempeo de RS-232 en lo que respecta a la distancia y velocidad del estndar. RS-232 estlimitado a comunicaciones de punto a punto entre los dispositivos y el puerto serial de la computadora. El hardware de RS-232 se puede utilizar para comunicaciones seriales en distancias de hasta 50 pies. Qu es RS-422?RS-422 (Estndar EIA RS-422-A) es el conector serial utilizado en las computadoras Apple de Macintosh. RS-422 usa seales elctricas diferenciales, en comparacin con seales referenciadas a tierra como en RS-232. La transmisin diferencial, que utiliza dos lneas para transmitir y recibir, tiene la ventaja que es ms inmune al ruido y puede lograr mayores distancias que RS-232. La inmunidad al ruido y la distancia son dos puntos clave para ambientes y aplicaciones industriales.Estndar RS-232Estndar RS-232 El mtodo de comunicacin usado por RS-232 requiere de una conexin muy simple, utilizando slo tres lneas: Tx, Rx, y GND. Formas ms populares de handshaking o intercambio de pulsos de sincronizacin con RS-232: handshaking for software y handshaking por hardware. Handshaking por software: Esta forma de sincronizacin utiliza bytes de datos como caracteres de control. Las lneas necesarias para la comunicacin siguen siendo Tx, Rx, y GND, ya que los caracteres de control se envan a travs de las lneas de transmisin como si fueran datos. Handshaking por hardware: Utiliza lneas de hardware. De manera similar a las lneas Tx y Rx, las lneas RTS/CTS y DTR/DSR trabajan de manera conjunta siendo un par la entrada y el otro par la salida. El primer par de lneas es RTS (Request to Send) y CTS (Clear to Send). Cuando el receptor est listo para recibir datos, cambia la lnea RTS a estado alto; este valor ser ledo por el transmisor en la lnea CTS, indicando que est libre para enviar datos. El siguiente par de lneas es DTR (Data Terminal Ready) y DSR (Data Set Ready). Estas lneas se utilizan principalmente para comunicacin por mdem, permiten al puerto serial y mdem indicarse mutuamente su estado. Por ejemplo, cuando el mdem se encuentra preparado para que la PC enve datos, cambia la lnea DTR a estado alto indicando que se ha realizado una conexin por la lnea de telfono. Este valor se lee a travs de la lnea DSR y la PC comienza a enviar datos. Como regla general, las lneas DTR/DSR se utilizan para indicar que el sistema est listo para la comunicacin, mientras que las lneas RTS/CTS se utilizan para paquetes individuales de datos.RS-232Acoplamiento de voltajesTRANSMISION SERIAL Chequeo de Errores Paridad. Checksum Chequeo de Redundancia Cclica (CRC)Chequeo de errores:PARIDAD Paridad.Se aade un bit a los bits de datos, llamado bit de paridad que se elige de forma tal que el nmero total de 1 sea siempre par o impar de acuerdo a la paridad seleccionada.Chequeo de errores:Checksum La paridad horizontal y verticales utilizada en algunos cdigos de bloque para una combinacin de chequeo de redundancia vertical (VRC) combinada con chequeo de redundancia longitudinal u horizontal (LRC) para detectar errores. En este chequeo de errores, un bytellamado checksum se agrega al final del bloque de datos que sertransmitido, este byte se compone de los bits de paridad columna por columna del bloque de datos. Este byte es calculado y transmitido por la mquina transmisora y recalculado y comparado por la mquina receptora. En caso de detectar algn error el receptor deber solicitar una retransmisinChequeo de errores:ChecksumProceso El proceso para calcular la paridad de bloque es el siguiente: Los caracteres a transmitir se agrupan en bloques de n filas y mcolumnas Se calcula el bit de paridad de cada fila y se aade al principio (o al final, segn convenio) de la fila Se calcula el bit de paridad de cada columna y se aade al principio (o al final, segn convenio) de la columna El bloque final a transmitir tendr por tanto una fila y una columna ms que el original. La nueva columna estar formada por los bits de paridad horizontal de todas las filas La nueva fila estar formada por los bits de paridad vertical de todas las columnas. Adicionalmente se emplea un bit de paridad cruzada que se calcula a partir de los bits de paridad de filas y columnas. Los chequeos de paridad horizontal y vertical se usan para detectar y corregir los posibles errores que se puedan producir durante la transmisin de datos.Chequeo de errores:Chequeo de errores:Chequeo de redundancia cclicaLa tcnica se basa en relaciones matemticas de polinomios, se utiliza en comunicacin de datos sncrona.Un conjunto de datos puede representarse como un polinomio elcual es dividido por un polinomio constante conocido como polinomio generador. El residuo de la divisin (CRC) se enva junto con el conjunto de datos como chequeo de error. El receptor realiza la divisin del polinomio (datos mas el CRC) entre el polinomiogenerador y verifica el residuo para detectar errores en la transmisin conforme al siguiente procedimiento.1. Un conjunto de bits de datos se puede representar como:M(x) = bnX0+ bn-1X1+. . . +b0Xn,dondeb0 = bit menos significativobn = bit ms significativopor ejemplo, el polinomio del nmero hexadecimal 8AH (10001010) esM(x) = 1X0+ 0X1+0X2+0X3+1X4+0X5+1X6+0X7M(x) = 1X0+ 1X4+1X6= X6+ X4+ 12. Asumiendo que la longitud del cdigo CRC es de cuatro bits, en las transmisiones de las redes actuales el polinomio es de grado 16. Para obtener la divisin, primero, el polinomio se multiplica por el grado del polinomio generador (en el ejemplo x4, ver paso 3) y, posteriormente se divide entre el polinomio generador G(x). La formula es:M(x) *X 4=Q(x) + R(x)G(x)Donde Q(x) es el cociente obtenido por la aritmtica de mdulo 2 y R(x) es el residuo.Chequeo de errores:Chequeo de redundancia cclica2. Asumiendo que la longitud del cdigo CRC es de grado 4, en las transmisiones de lasredes actuales el polinomio es de grado 16. Para obtener la divisin, primero, el polinomio se multiplica por el grado del polinomio generador (en el ejemplo x4, ver paso 3) y, posteriormente se divide entre el polinomio generador G(x). La formula es:M(x) *X 4=Q(x) + R(x)G(x)Donde Q(x) es el cociente obtenido por la aritmtica de mdulo 2 y R(x) es el residuo.3. Considerando como polinomio generador: G(x) = X 4+ 1, tenemos: M(x) *X 4= X10+ X8+ X 4= (X6+ X4+ X2)+X2G(x) X4+ 1 cociente Q(x) residuo R(x)4. Este residuo se suma al polinomio modificadoM(x) *X 4+R(x) =X10+ X8+ X 4+ X2y es transmitido como:X10X8X4X20101000101 00D0 D1D2 D3D4D5D6D7 D8D9 D10D11 Dato = 8AHEl flujo de bits de datostransmitidoincluye el byte original 8AH en orden invertido, mslos bits del CRC obtenido que se colocan al final.Chequeo de errores:Chequeo de redundancia cclica5. El receptor divide el polinomio transmitido entre G(x), y si el residuo es 0, esto indica que no existi error (divide X10+ X8+ X4+ X2entre X4+ 1 y checa el resultado).(Nota: el polinomio generador de la CCITTesG(x)= x16+ x12+ x5+ 1) El 8250 dispone de 11 registros pero slo 3 lneas de direccin para seleccionarlos. Lo que permita distinguir unos de otros ser, aparte de las lneas de direcciones, el sentido del acceso (en lectura o escritura) y el valor de un bit de uno de los registros: el bit DLAB del registro LCR, que es el bit 7 de dicho registro.Realmente, DLAB se emplea slo puntualmente para poder acceder y programar los registros que almacenan el divisor de velocidad; el resto del tiempo, DLAB estar a 0 para acceder a otros registros.El puerto serie: UART 8250 (Universal Asynchronous Receiver/Transmitter)El puerto serie: UART 8250 (Universal Asynchronous Receiver/Transmitter)Terminales:RCLK Receiver Clock Input. Debe ser igual a (Receiver Baud Rate)* 16BAUDOUT Baud Output. Salida del generador de rango de baud programable. Frecuencia = Baud Rate * 16XIN External crystal Input. Se usa para el oscilador generadorde Baud Rate.XOUT External Crystal Output.DOSTR y DOSTR (WR) Write LineDISTR, DISTR (RD) Read LineDDIS Driver Disable. Se pone en "0" cuando el CPU leedel UARTADS Address Strobe. Se usa si las seales no son establesdurante los ciclos de lectura o escritura.INTRPT Interrupt OutputMR Master ResetDCD Data Carrier DetectCSOUT Chip Select OutCS0-CS1,CS2 Chip SelectD0..D7:Data Bits 0..7: Bus triestado bidireccional de 8 lneasSOUT:Serial Data Output: Salida de datos en serie.SIN Serial Data Input: Entrada de datos en serie.A2,A1,A0 Lneas de direccin para seleccionar Registro internoSIGNIFICADO DE LAS LNEAS DEL 8250 DISTR, DISTR:Data In Strobe. (RD) Read Line. DOSTR:Data Out Strobe. (WR) Write Line. D0..D7:Data Bits 0..7: Bus triestado bidireccional de 8 lneas para transmitir datos, informacin de control y de estado entre la CPU y el 8250. XTALx:Crystal/Clock: Conexiones para el cristal del cuarzo del BRG. XTAL1, XTAL2 entrada de reloj externa. SOUT:Serial Data Output: Salida de datos en serie del 8250. Una marca es un '1' y un espacio es un '0'. SOUT est en marca cuando el transmisor est inhibido, MR est a 1, el registro de transmisin est vaco o en el modo lazo (LOOP) del 8250. No es afectado por -CTS. CTS:Clear To Send: Lnea de entrada. El estado lgico de esta seal puede consultarse en el bit CTS del Modem Status Register (MSR) -como el bit CTS es el bit 4 del MSR se referencia MSR(4)-. Un cambio en el estado de -CTS desde la ltima lectura del MSR provoca que se active DCTS (bit MSR(0)). Cuando -CTS estactivo (a 0) el modem indica que el dato en SOUT puede ser transmitido. -CTS no afecta al modo lazo (LOOP) del 8250. DSR:Data Set Ready: Lnea de entrada. El estado lgico de esta seal puede consultarse en MSR(5). SIGNIFICADO DE LAS LNEAS DEL 8250 DDSR (bit MSR(1)) indica si -DSR ha cambiado desde la ltima lectura del MSR. Cuando -DSR est activo el modem indica que est listo para intercambiar datos con el 8250; ello depende del estado del DCE (Data Communications Equipment) local y no implica que haya comunicacin con la estacin remota. DTR:Data Terminal Ready. Lnea de salida que puede activarse (poner a 0) escribiendo un 1 en MCR(0), y desactivarse escribiendo un 0 en dicho bit o ante la activacin del pin MR. Con -DTR activo se indica al DCE que el 8250 puede recibir datos. En algunas circunstancias, esta seal se usa como LED de 'power on'. Si est inactivo, el DCE desconecta el modem del circuito de telecomunicaciones. RTS:Request To Send. Lnea de salida que habilita el modem. Se activa (poner a 0) escribiendo un 1 en MCR(1). Esta seal se pone en alto en respuesta a MR. -RTS indica al DCE que el 8250 tiene un dato listo para transmitir. En la modalidad half-duplex, esta seal se utiliza para controlar la direccin de la lnea. BAUDOUT:Esta lnea de salida contiene una seal de reloj 16 veces mayor que la frecuencia usada para transmitir. Equivale a la frecuencia de entrada en el oscilador dividida por el BRG. La estacin receptora podra emplear esta seal conectndola a RCLK (para compartir el mismo reloj). OUTx:Estas dos salidas de propsito general se pueden activar (poner a 0) escribiendo un 1 en MCR(2) y MCR(3). Son desactivadas por la seal MR. En el modo lazo (LOOP o bucle), estn tambin inactivas. RI:Ring Indicator. Esta lnea de entrada indica si el modem ha detectado que llaman por la lnea y puede consultarse en MSR(6). El bit TERI (MSR(2)) indica si esta lnea ha cambiado desde la ltima lectura del MSR. Si las interrupciones estn habilitadas (IER(3) activo) esta patilla provoca una interrupcin al activarse. -RI permanece activo durante el mismo intervalo de tiempo que la zona activa del ciclo de llamada e inactivo en los intervalos de la zona inactiva (o cuando el DCE no detecta la llamada). El circuito no se corta por culpa de -DTR. El puerto serie: UART 8250 RegistrosDivisor latch MSB (Divisor de velocidad, parte alta)3F9H DLMR/W1001 Divisor Latch LSB (Divisor de velocidad, parte baja3F8H DLLR/W0001 Scratch Register (Registro residual)3FFH SCRR/W111X Modem Status Register (Registro de estado del modem)3FEH MSRR/W011X Line Status Register (Registro de estado de la lnea)3FDH LSRR/W101X Modem Control Register (Registro de control del modem)3FCH MCRR/W001X Line Control Register (Registro de control de lnea)BIT 7 es DLAB3FBH LCRR/W110X Interrupt Identification Register (Registro de identificacin de interrupciones) 3FAHIIRR010X Interrupt Enable Register (Registro de habilitacin de interrupciones)3F9H IERR/W1000 Transmitter Holding Register (Registro de retencin de transmisin3F8H THRW0000 Receiver Buffer Register (Registro buffer de recepcin)3F8H RBRR0000 SIGNIFICADODir.PC NOMBREMODOA0A1A2DLAB Para programar al 8250 primero se debe enviar las palabras para seleccionar la velocidad de transmisin, lo cual se realiza en los registros DLL y DLM, sin embargo como estos registros se encuentran multiplexados a travs del bitDLAB (bit 7 del registro LCR) primero debemos poner a1 dicho bit.El puerto serie: UART 8250 Registros3F8H--3F8H--3F8H--3F9H--3F9H--3FAH--3FBH3FCH3FDH3FEH--3FFH--El puerto serie: UART 8250 Programacin;DLAB =1MOV DX,3FBHMOV AL, 80HOUT DX,AL;Velocidad de Transmisin.;Para programar la velocidad a 9600 baudios MOV DX,3F8HMOV AL,12OUT DX,ALMOV DX,3F9HMOV AL,00OUT DX,AL;Programacin de la tramaMOV DX, 3FBHMOV AL,00001111BOUT DX,ALEl puerto serie: UART 8250 Programacin (POLEO);----------DLAB =1MOV DX,3FBHMOV AL, 80HOUT DX,AL;---------Velocidad de Transmisin.;Para programar la velocidad a;9600 baudios MOV DX,3F8HMOV AL,12OUT DX,ALMOV DX,3F9HMOV AL,00OUT DX,AL;---------Programacin de la tramaMOV DX, 3FBHMOV AL,00001111BOUT DX,AL;Trabajo del puerto por Poleo;----------Poleo para transmisinXX:MOV DX,3FDHIN AL,DXAND AL, 20HJZ XX;---------------------Transmitir dato MOV AL, DATOMOV DX, 3F8HOUT DX,AL;----------;Poleo para recepcinYY:MOV DX,3FDHIN AL,DXAND AL, 01HJZ YY;---------------------Recibir datoMOV DX,3F8HIN AL ,DXEl puerto serie: UART 8250 ProgramacinDetalle Programacin de la tramaLa trama se programa a travs del registro LCR (Line Control Register).Por ejemplo si queremos programar con 8 bits de datos, 2 bits de paroy paridad non, la programacin quedar de la siguiente forma. El bitDLAB deber apagarse.MOV DX, 3FBHMOV AL,00001111BOUT DX,ALEl puerto serie: UART 8250 ProgramacinDetalle POLEOParatrabajar por poleo es necesario leer el registro de status LSR (Line Status Register) y consultar el bit correspondiente (de transmisin o recepcin).;Poleo para transmisinXX:MOV DX,3FDHIN AL,DXAND AL, 20HJZ XX;------------------------------------------Recibir dato del tecladoMOV AL, DATOMOV DX, 3F8HOUT DX,AL;------------------------------------------Desplegar caracter en ventana de transmisin;Poleo para recepcinYY:MOV DX,3FDHIN AL,DXAND AL, 01HJZ YYMOV DX,3F8HIN AL ,DXEl puerto serie: UART 8250 Programacin El bit DR est activo cuando hay un carcter listo en el RBR (buffer de recepcin) y es puesto a 0 cuando se lee el RBR. Los bits 1 al 4 de esteregistro (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. OE 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 sobreescrito. PE indica si hay un error de paridad. FE indica si el carcter recibido no tiene los bit de stop correctos. BI se activa cuando la entrada de datos es mantenida en espacio (a 0) durante un tiempo superior al de transmisin de un carcter (bit de inicio + bits de datos + bit de paridad + bit de parada). THRE indica que el 8250 puede aceptar un nuevo carcter para la transmisin: este bit se activa cuando el THR queda libre y se desactiva escribiendo un nuevo carcter en el THR. Se puede producir, si esthabilitada; la interrupcin THRE (prioridad 3). El 8250 emplea un registro interno para ir desplazando los bit y mandarles en serie (el TransmitterShift Register), dicho registro se carga desde el THR. Cuando ambos registros (THR y el Transmitter Shift) estn vacos, TEMT se activa; volvera desactivarse cuando se deje otro dato en el THR hasta que el ltimo bitsalga por SOUT ; activar interrupcin RX y TXMOV DX,3F9HMOV AL,03HOUT DX,AL;poner bit OUT2=1MOV DX,3FCHMOV AL, 08HOUT DX,AL; Quitar mscara de interrupcinIN AL, 21HAND AL,0EFHOUT 21H,ALEl puerto serie: UART 8250 Programacin; Subrutina de InterrupcinSUBINT PROCMOV DX,3FAHIN AL,DXCMP AL,04JE RECIBIRMOV AL,DATOMOV DX,3F8HOUT DX,ALJMP SALIRRECIBIR: MOV DX,3F8HIN AL,DXSALIR: IRET SUBINT ENDPEl puerto serie: UART 8250 Programacin (Interrupciones); Quitar mscara de interrupcinIN AL, 21HAND AL,0EFHOUT 21H,AL; activar interrupcin TX y RXMOV DX,3F9HMOV AL,03HOUT DX,AL::; Subrutina de InterrupcinSUBINT PROCMOV DX,3FAHIN AL,DXCMP AL,04JE RECIBIRTRANSMITIR: MOV AL,DATOMOV DX,3F8HOUT DX,ALJMP SALIRRECIBIR: MOV DX,3F8HIN AL,DXSALIR: IRET SUBINT ENDP;Cambio de vector (0CH);----------DLAB =1MOV DX,3FBHMOV AL, 80HOUT DX,AL;---------Velocidad de Transmisin.;Para programar la velocidad a;9600 baudios MOV DX,3F8HMOV AL,12OUT DX,ALMOV DX,3F9HMOV AL,00OUT DX,AL;---------Programacin de la tramaMOV DX, 3FBHMOV AL,00001111BOUT DX,AL;poner bit OUT2=1MOV DX,3FCHMOV AL, 08HOUT DX,ALEl puerto serie: USART 8251A USART significa "Universal Synchronous/AsynchronousReceiver-Transmitter. Es un dispositivo que sirve para transmitir o recibir datos secuenciales de manera sncrona o asncrona.El puerto serie: USART 8251A USART 8251Terminales:C/D' seal de Control/Datos (Ao)RD' Read. Seal de lecturaWR' Write. Seal de Escritura TxC' Transmitter Clock Output.TxD Transmitter Data (salida serie)TxRDY Transmitter ReadyRxC' Receiver Clock Input.RxD Receiver Data (entrada serie)RxRDY Receiver ReadyDSR' Data Set ReadyDTR' Data Terminal ReadySyndet/BD Detector de sincrona/Detector de velocidad (rapidez de envo)RTS' Request to Send. Peticin de envo de datosCTS' Clear to Send. Borrar para enviar datosTxE Transmitter Empty. Transmisor vaco.El puerto serie: USART 8251AEl puerto serie: USART 8251A Programacin 8251A;Palabra de Modo basuraMOV AL,XXOUT CTRL,AL;Palabra de Comando con RESETMOV AL,40HOUT CTRL,AL;Palabra de Modo;2bits paro,sin paridad,7 bits;factor 1MOV AL,11X01001BOUT CTRL,AL;Palabra de comandoMOV AL,OUT CTRL,ALProgramacin 8251A;Palabra de Modo basuraMOV AL,XXOUT CTRL,AL;Palabra de Comando con RESETMOV AL,40HOUT CTRL,AL;Palabra de Modo;2bits paro,sin paridad,7 bits;factor 1MOV AL,11X01001BOUT CTRL,AL;Palabra de comandoMOV AL,X0X101X1BOUT CTRL,ALProgramacin 8251APOLEO;Palabra de Modo basuraMOV AL,XXOUT CTRL,AL;Palabra de Comando con RESETMOV AL,40HOUT CTRL,AL;Palabra de Modo:2bits paro, sin; paridad,7 bits factor 1MOV AL,11X01001BOUT CTRL,AL;Palabra de comandoMOV AL,X0X101X1BOUT CTRL,AL;Poleo TransmisinXX: IN AL,CTRLAND AL,01JZ XX;------------------------TX: MOV AL, DATOOUT PTO_DATOS,AL;Poleo RecepcinYY: IN AL,CTRLAND AL,02JZ YY;------------------------RX: IN AL,PTO_DATOSProgramacin 8251AINTERRUPCIONES;CODIGO CAMBIO DE VECTOR TX;CODIGO CAMBIO DE VECTOR RX;Palabra de Modo basuraMOV AL,XXOUT CTRL,AL;Palabra de Comando con RESETMOV AL,40HOUT CTRL,AL;Palabra de Modo:2bits paro, sin; paridad,7 bits factor 1MOV AL,11X01001BOUT CTRL,AL;Palabra de comandoMOV AL,X0X101X1BOUT CTRL,AL...;Subrutina de TXSUB_TX PROCMOV AL,DATOOUT PTO_DATOS,ALIRETSUB_TX ENDP;Subrutina de RXSUB_RX PROCIN AL, PTO_DATOSIRETSUBRX ENDPEl puerto serie: USART 8251A El puerto serie: USART 8251A AplicacionesEl puerto serie: USART 8251A