Вы находитесь на странице: 1из 19

SECRETARA DE EDUCACIN PBLICA

DIRECCIN GENERAL DE EDUCACIN SUPERIOR TECNOLGICA

INSTITUTO TECNOLGICO DE HUEJUTLA


CLAVE: 13DIT0006L

LENGUAJES DE INTERFAZ
INVESTIGACION
Alumno:
JOSE LUIS VITE PEREZ ELMER HERNANDEZ BAUTISTA ENRIQUE BAUTISTA AZUARA

Semestre y Grupo VB Carrera Ingeniera en Sistemas Computacionales Docente Ing. Faustino Peraza Rodrguez Ciclo Escolar Enero Junio 2012

Carretera Huejutla-Chalahuiyapa Km. 5.5 Huejutla, Hgo.

INDICE Instruccin Int 14h.....................3 Instruccin int x86 en lenguaje c...6 Interfaz rs232..12 Configuracin de pines en db9 para puerto serie.17

INSTRUCCIN INT 14H


En lenguaje ensamblador, se puede acudir a la interrupcin 14H de la ROM-BIOS para configurar, leer, escribir o simplemente para conocer el estado del puerto; cada una de estas cuatro opciones es un servicio de la interrupcin, y se seleccionan a travs del registro AH. La figura 1 muestra los valores que debe contener el registro AH para invocar cada uno de los servicios. En todos los casos, el registro DX debe contener el nmero del puerto serie; el primero de ellos, COM1 se especifica como 00h.

Servicio
00 01 02 03

Descripcin
Inicializar puerto serie Enviar un dato Recibir un dato Obtener el estado del puerto

figura 1.Servicios para el puerto serial disponibles a travs de la interrupcin 14H

Para configurar o inicializar el puerto serie, bastar con utilizar el servicio 00 de la interrupcin, colocando en el registro AL los valores equivalentes a los parmetros, como se puede observar en la figura 2. Con ste mtodo es posible obtener frecuencias de transmisin que van desde los 110 hasta los 9600 baudios.

figura 2

Para enviar un dato por el puerto serial, bastar con colocar en el registro AH el valor 01 correspondiente a este servicio y en el registro AL el dato a ser enviado, invocando de nuevo la interrupcin 14H. La lectura de un dato que ha llegado al puerto se logra con el servicio 02, el cual devuelve en el registro AL el dato. La lectura del estado del puerto se consigue a travs del servicio 03 de esta misma interrupcin, y retorna en el registro AX el 3

estado del puerto, el cual contendr los bits que se muestran en la figura 3.

figura 3

FUNCIN 0 La funcin 0 (AH=00h) de la interrupcin 14 (INT 14h) nos servir para configurar el puerto. La configuracin cambiar en funcin del ratn que vayamos a emplear. Para realizar dicha configuracin, el registro AL estar formado por pequeos grupos de bits, cada uno de los cuales indicar una caracterstica configurable del ratn. Vamos a mostrarlo a continuacin, para que se entienda mejor lo que acabamos de explicar: Bits n 0 y 1: Estos bits son los encargados de indicar el tamao de la palabra, pudiendo elegir entre 8 bits (bit 0, bit 1 = 11) y 7 bits (bit 0, bit 1 = 10). Bit n 2: Este bit indica el nmero de stop bits que utiliza la interfaz RS232. Puede tratarse de 1 stop bit (bit 2= 0) o de 2 stop bits (bit 2= 1). Bits n 3 y 4: Son los encargados de indicar la paridad. stas son las posibles opciones: o Paridad nula (bit 4 bit 3 = 00, bit 4 bit 3 = 10) o Paridad par (bit 4 bit 3 = 11) o Paridad impar (bit 4 bit 3 = 01). Bits n 5, 6 y 7: Por ltimo, estos bits son los encargados de indicar la velocidad de transferencia del ratn conectado a la interfaz RS232. Las distintas opciones son: o 110 baudios (bit 5 bit 6 bit 7 = 000) o 150 baudios (bit 5 bit 6 bit 7 = 001) o 300 baudios (bit 5 bit 6 bit 7 = 010) o 600 baudios (bit 5 bit 6 bit 7 = 011) o 1200 baudios (bit 5 bit 6 bit 7 = 100) o 2400 baudios (bit 5 bit 6 bit 7 = 101) o 4800 baudios (bit 5 bit 6 bit 7 = 110) o 9600 baudios (bit 5 bit 6 bit 7 = 111) Esta funcin (la funcin 0) devuelve en el registro AH el estado del puerto, y en el registro AL el estado del mdem (esto ltimo no nos incumbe). FUNCIN 2 La funcin 2 (AH= 02h) de la interrupcin 14 (INT 14h) sirve para leer del puerto serie los datos recibidos. Estos datos deberemos tratarlos para saber en todo momento que accin realiza el usuario y as poder empezar a tratar los bytes de informacin correspondientes al ratn. 4

Como ya ocurriera con otras funciones, previa a la llamada de la interrupcin 14 (INT 14h) en el registro DX se ha de especificar el puerto al que est conectado el perifrico (el ratn). Tras la llamada, la funcin 2 devuelve en el registro AX datos muy importantes de cara al desarrollo de la prctica. Por un lado, en el registro AH devuelve el estado del puerto, distinguiendo si se produjo algn envo de datos (en cuyo caso el bit ms significativo estar a 0) o si por el contrario no se produjo envo ninguno, por lo que dicho bit contendr un 1. Esto nos ser de gran utilidad para saber en que momento el usuario est operando con el ratn. Por su parte, en caso de que se produjese algn envo de datos (un 0 en el bit ms significativo del registro AH), en el regisro AL se almacenar el byte de informacin recibido. Una cosa importante a resaltar es el hecho de que el perifrico en realidad no manda toda su informacin en un byte, sino que lo hace en paquetes de 3 bytes (incluso de hasta 4 bytes), y la funcin 2 (AH= 02h) de la interrupcin 14 (INT 14h) slo nos permite leer un byte. Es por eso por lo que se deber llamar a esta funcin tantas veces como haga falta para poder descifrar los bytes enviados por el perifrico y saber si se est realizando una accin u otra. FUNCIN 5 La funcin 5 (AH= 05h) de la interrupcin 14 (INT 14h) sirve para activar el lazo de prueba, el cual nos permitir conectar el ratn al puerto serie sin necesidad de modificar el cable. La modificacin de dicho cable no es necesaria porque el lazo de prueba conecta el controlador con el perifrico. Por otro lado, antes de llamar a la interrupcin 14 (INT 14h), debemos especificar si deseamos escribir o leer en el registro de control del puerto. En nuestro caso, deseamos realizar una escritura, por lo que deberemos establecer AL con el valor 01h (por lo que el valor 00h se refiere lgicamente a una operacin de lectura). A su vez, el registro DX deber contener el puerto al que est conectado el ratn. Para poner en marcha el lazo de prueba, deberemos activar en el registro BL el cuarto bit, que es el encargado de activar dicho lazo de prueba. Los dems bits no tienen importancia para el desarrollo de la prctica, por lo que no haremos ningn comentario al respecto. La funcin 5 (AH= 05h) de la interrupcin 14 (INT 14h) devuelve en el registro AH el estado del puerto y en el registro BL el la informacin del registro de control del controlador RS232. Adems devuelve en el registro AL el estado del mdem (pero esto no nos atae).

INSTRUCCIN INT X86 EN LENGUAJE C


INT (instruccin x86) INT es un lenguaje ensamblador de instrucciones x86 procesadores que genera una interrupcin de software . Se necesita el nmero de interrupcin formato de byte de valor. Cuando est escrito en lenguaje ensamblador, la instruccin se escribe as: INT X donde X es la interrupcin de software que debe ser generada (0-255). Dependiendo del contexto, compilador o ensamblador, un nmero de interrupcin software se da a menudo como un hexadecimal valor, a veces con un prefijo 0x o el sufijo h . Por ejemplo, la INT 21H va a generar la interrupcin de software 0x21 (33 en decimal), haciendo que la funcin a la que apunta el vector 34a en la tabla de interrupciones para ser ejecutado, que es tpicamente un MS-DOS API llamada.

Uno de los problemas ms comunes que se encuentran en los programas escritos para x86 es suposiciones sobre el tamao del puntero y los tipos enteros. Por lo general esto lleva al truncamiento, un comn C + + error tiene el siguiente aspecto: str = string get_some_string (); unsigned int = delimPos str.find (':'); if (delimPos! = string :: npos) handle_delimiter (str); Sin embargo, desde un entero sin signo abarca una gama ms pequea de string :: size_type , string :: npos se trunca para ajustarse, y el condicional se ejecuta siempre. En realidad, con la int sin signo anterior es slo una mala prctica y debe evitarse en favor del tipo adecuado proporcionado por la biblioteca estndar, string :: size_type . Este tipo de errores se deslizan fcilmente por un sistema de 32-bit sin embargo donde suelen tener unsigned int == string :: size_type . Por suerte, son fcilmente encontrados por un compilador - estudiar cuidadosamente sus advertencias del compilador - son por lo general hay una razn! Punteros Un grupo de ms desagradables errores se producen porque el tamao del puntero en un sistema de 64-bit es naturalmente 64 bits de ancho. Cualquier cdigo que est haciendo horribles cosas de bajo nivel relacionados con punteros a enteros de fundicin probable que se rompa de una manera bastante desagradable. Los tamaos de los tipos, para el registro La pieza trivial de cdigo C + + aqu se muestran los tamaos correspondientes de varios tipos. Para un sistema de 64-bit amd64 con g+ +, tengo el siguiente: 6

$. / Test_data_sizes Tipos de enteros: sizeof (char) = 1 sizeof (short) = 2 sizeof (int) = 4 sizeof (long) = 8 sizeof (long long) = 8 Punteros: sizeof (void *) = 8 Tipos de punto flotante: sizeof (float) = 4 sizeof (double) = 8 sizeof (long double) = 16 Medidas desde stddef.h: sizeof (size_t) = 8 sizeof (ptrdiff_t) = 8 Por otro lado, cuando se compila con g+ + en un sistema de 32-bit (i686), obtenemos lo siguiente: $. / Test_data_sizes Tipos de enteros: sizeof (char) = 1 sizeof (short) = 2 sizeof (int) = 4 sizeof (long) = 4 sizeof (long long) = 8 Punteros: sizeof (void *) = 4 Tipos de punto flotante: sizeof (float) = 4 sizeof (double) = 8 sizeof (long double) = 12 Medidas desde stddef.h: sizeof (size_t) = 4 sizeof (ptrdiff_t) = 4 De particular relevancia, los tamaos de la larga, void * y tipos de stddef.h son diferentes. Tenga en cuenta que estos resultados tambin pueden depender del compilador, y no slo de la arquitectura. Me han dicho que VC + + se diferencia de + g+ en relacin con el sizeof (long).

Este pequeo ejercicio de lenguaje ensamblador es para la arquitectura x86 (Procesadores Intel y Amd 32 bits) y utiliza la sintaxis de Nasm, un ensamblador libre, gratuito y que puede ser utilizado en diferentes plataformas como Windows o Linux. Adems, las funciones externas utilizadas provienen de la biblioteca de C estndar. Por lo tanto, no tendrs problemas con tu equipo para realizar este ejercicio: ste no depende del sistema operativo utilizado. nicamente depende de la arquitectura x86. Nota: Para utilizar nasm con el propsito de probar este ejercicio, puedes consultar el tutorial de uso e instalacin de nasm para Windows y Linux haciendo clic aqu

Nociones tratadas en este ejercicio



Las funciones con parmetro de entrada Los saltos La pila Las cadenas de caracteres

Enunciado El objetivo es el de escribir una funcin en ensamblador capaz de invertir una cadena de Caracteres. Esta funcin deber aceptar como parmetro de entrada un puntero hacia una cadena de caracteres e invertir esta cadena en el mismo puntero. Esto es lo que dara esta funcin en C:
void invertir_cadena(char *str); //El modelo de esta funcin //Ejemplo de uso: char string[] = "Esta es la cadena a invertir"; invertir_cadena(string); printf(string); //Mostrar "ritrevni a anedac al se atsE"

Debers insertar este cdigo aqu:

extern printf section .data cadena db 'Invierteme! Yo te dire que programador eres!', 0x0 section .text global main, invertir_cadena invertir_cadena: ;Pon el cdigo aqu

main: mov eax, cadena ;Direccion de cadena en eax push eax ;Llamado de invertir_cadena con la direccin de la cadena a invertir call invertir_cadena ;Las dos lneas siguientes son opcionales ya que la direccin De la cadena (ahora invertida) siempre est en la pila. mov eax, cadena; Direccin de la cadena en eax push eax ;Visualizacin de la cadena con printf call printf add esp, 4 ;Salimos de la funcin main mov eax, 0

Intenta resolver este ejercicio por ti mismo sin mirar las siguientes secciones. Si tienes alguna dificultad, consulta la seccin que sigue (ndices), luego vuelve a intentarlo. Para recordar

Un carcter ASCII estndar est codificado en un octeto. Por lo tanto, una cadena de caracteres es una serie de caracteres de 1 octeto y no de 4 como los enteros. Una cadena termina con el carcter 0 (el valor 0 y no el carcter '0'). nicamente se pueden apilar elementos de 2 4 octetos en la pila (a menos que se trate de una constante de un octeto).

Propiedad Probablemente sepas que la pila es una memoria cuyo acceso es del tipo Last In First Out. Lo que significa que si pones en la pila tres letras una a continuacin de la otra, por ejemplo primero a luego b luego c, las recuperars en el orden inverso: primero c luego b luego a. Solucin Aqu una solucin:
invertir_cadena: ;Inicio de la funcin push ebp mov ebp, esp ;Cargamos el puntero pasado como parmetro en eax mov eax, [ebp+8] ;Introducimos el carcter de fin de cadena en la pila push word 0 cadena_en_pila: ;Vamos a apilar cada carcter de la cadena ;Recuperacin del carcter actual

mov bl, byte [eax] ;Es el fin de la cadena? (bl = 0 ?) test bl, bl ;Si es s pasamos a la etapa siguiente jz fin_cadena_en_pila ;Si no apilamos el siguiente carcter push bx ;Incrementamos el puntero en 1 para procesar el siguiente carcter inc eax ;Pasamos al siguiente carcter jmp cadena_en_pila fin_cadena_en_pila: ;Volvemos a cargar el puntero de la cadena para desapilar uno a uno cada carcter mov eax, [ebp + 8] invertir: ;Desapilamos el carcter actual pop bx ;Lo cargamos en el puntero de cadena mov byte [eax], bl ;Incrementamos la direccin inc eax ;Era el fin de la cadena? (el 0 que hemos apilado al inicio?) test bl, bl ;No entonces continuamos jnz invertir ;Es el fin de la cadena, indicamos el fin de la funcin leave ret

Explicacin Como ha sido sugerido en la seccin ndices, lo ideal es utilizar la pila. Se apilan los caracteres de la cadena y al ser desapilados se obtienen en el orden inverso. Esto es lo que ocurre: primero apilamos 0 que ser desapilado al final para indicar el fin de la cadena. Luego, apilamos uno a uno cada carcter de la cadena pasando por bl (los 8 caracteres de peso dbil de ebx) que es suficiente para un carcter. Al apilar, tomamos bx (16 bits de peso dbil de ebx) que contiene a su vez bl ya que estamos obligados a apilar al menos 2 octetos. Durante estos sucesivos apilamientos, tendremos cuidado de no apilar el carcter de fin. En la siguiente etapa, volvemos a cargar el puntero con la direccin del inicio de la cadena. Luego, desapilamos sucesivamente cada carcter en la cadena borrando los valores antiguos. Cuando hayamos desapilado el 0 de fin de cadena, tambin lo insertamos en la cadena luego terminamos. Y listo!

10

Ejemplo para la arquitectura x86 El siguiente es un ejemplo del programa clsico Hola mundo escrito para la arquitectura de procesador x86 (bajo el sistema operativo DOS).

; --------------------------------------------; Programa que imprime un string en la pantalla ; --------------------------------------------.model small ; modelo de memoria .stack ; segmento del stack ; segmento de datos .data Cadena1 DB 'Hola Mundo.$' ; string a imprimir (finalizado en $) .code ; segmento del cdigo ; --------------------------------------------; Inicio del programa ; --------------------------------------------programa: ; carga en AX la direccin del segmento de datos MOV AX, @data ; mueve la direccin al registro de segmento por medio de MOV DS, AX AX MOV DX, offset Cadena1 ; mueve a DX la direccin del string a imprimir ; AH = cdigo de la funcin del MS DOS para imprimir un MOV AH, 9 string en la pantalla ; llamada al MS DOS para imprimir un string en la pantalla INT 21h ; llamada al MS DOS para finalizar el programa INT 20h end programa

11

INTERFAZ RS232
RS232 (Recommended Standard 232, tambin conocido como Electronic Industries Alliance RS-232C) es una interfaz que designa una norma para el intercambio de una serie de datos binarios entre un DTE (Equipo terminal de datos) y un DCE (Data Communication Equipment, Equipo de Comunicacin de datos), aunque existen otras en las que tambin se utiliza la interfaz RS-232.

Conector RS-232 (DB-9 hembra).

En particular, existen ocasiones en que interesa conectar otro tipo de equipamientos, como pueden ser computadores. Evidentemente, en el caso de interconexin entre los mismos, se requerir la conexin de un DTE (Data Terminal Equipment) con otro DTE. Para ello se utiliza una conexin entre los dos DTE sin usar mdem, por ello se llama: null mdem mdem nulo. El RS-232 consiste en un conector tipo DB-25 (de 25 pines), aunque es normal encontrar la versin de 9 pines (DE-9, o popularmente tambin denominados DB-9), ms barato e incluso ms extendido para cierto tipo de perifricos (como el ratn serie del PC). Conexiones (Desde la perspectiva del DTE) En la siguiente tabla se muestran las seales RS-232 ms comunes segn los pines asignados:
Seal DB-25 DE-9 (DB-9, TIA-574) EIA/TIA 561 Host RJ-50 MMJ

Common Ground

4,5

3,4

Transmitted Data

TD

Received Data

RD

12

Data Terminal Ready

DTR

20

Data Set Ready

DSR

Request To Send

RTS

Clear To Send

CTS

Carrier Detect

DCD

10

Ring Indicator

RI

22

La interfaz RS-232 est diseada para imprimir documentos para distancias cortas, de hasta 15 metros segn la norma, y para velocidades de comunicacin bajas, de no ms de 20 kbps. A pesar de esto, muchas veces se utiliza a mayores velocidades con un resultado aceptable. La interfaz puede trabajar en comunicacin asncrona o sncrona y tipos de canal simplex, half duplex o full duplex. En un canal simplex los datos siempre viajarn en una direccin, por ejemplo desde DCE a DTE. En un canal half duplex, los datos pueden viajar en una u otra direccin, pero slo durante un determinado periodo de tiempo; luego la lnea debe ser conmutada antes que los datos puedan viajar en la otra direccin. En un canal full duplex, los datos pueden viajar en ambos sentidos simultneamente. Las lneas de handshaking de la RS-232 se usan para resolver los problemas asociados con este modo de operacin, tal como en qu direccin los datos deben viajar en un instante determinado. Si un dispositivo de los que estn conectados a una interfaz RS-232 procesa los datos a una velocidad menor de la que los recibe deben de conectarse las lneas handshaking que permiten realizar un control de flujo tal que al dispositivo ms lento le de tiempo de procesar la informacin. Las lneas de "hand shaking" que permiten hacer este control de flujo son las lneas RTS y CTS. Los diseadores del estndar no concibieron estas lneas para que funcionen de este modo, pero dada su utilidad en cada interfaz posterior se incluye este modo de uso. El estndar RS-232C

El puerto serie RS-232C, presente en todos los ordenadores actuales, es la forma mas comnmente usada para realizar transmisiones de datos entre ordenadores. El RS-232C es un estndar que constituye la tercera revisin de la antigua norma RS-232, propuesta por la EIA (Asociacin de Industrias Electrnicas), realizndose posteriormente un versin internacional por el CCITT, conocida como V.24. Las diferencias entre ambas son mnimas, por lo que a veces se habla indistintamente de V.24 y de RS-232C (incluso sin el sufijo "C"), refirindose siempre al mismo estndar.

13

El RS-232C consiste en un conector tipo DB-25 de 25 pines, aunque es normal encontrar la versin de 9 pines DB-9, mas barato e incluso mas extendido para cierto tipo de perifricos (como el ratn serie del PC). En cualquier caso, los PCs no suelen emplear mas de 9 pines en el conector DB-25. Las seales con las que trabaja este puerto serie son digitales, de +12V (0 lgico) y -12V (1 lgico), para la entrada y salida de datos, y a la inversa en las seales de control. El estado de reposo en la entrada y salida de datos es 12V. Dependiendo de la velocidad de transmisin empleada, es posible tener cables de hasta 15 metros. Cada pin puede ser de entrada o de salida, teniendo una funcin especifica cada uno de ellos. Las mas importantes son: Pin TXD RXD DTR DSR RTS CTS DCD Funcin (Transmitir Datos) (Recibir Datos) (Terminal de Datos Listo) (Equipo de Datos Listo) (Solicitud de Envo) (Libre para Envo) (Deteccin de Portadora)

Las seales TXD, DTR y RTS son de salida, mientras que RXD, DSR, CTS y DCD son de entrada. La masa de referencia para todas las seales es SG (Tierra de Seal). Finalmente, existen otras seales como RI (Indicador de Llamada), y otras poco comunes que no se explican en este artculo por rebasar el alcance del mismo. Numero 1 2 3 4 5 6 7 8 15 17 20 22 24 de Pin 1 3 2 7 8 6 5 1 4 9 Seal TxD RxD RTS CTS DSR SG TxC(*) RxC(*) DTR RI Descripcin Masa chasis Transmit Data Receive Data Request To Send Clear To Send Data Set Ready Signal Ground Transmit Clock Receive Clock Data Terminal Ready Ring Indicator E/S S E S E E E S E S E

En DB-25 En DB-9

CD/DCD (Data) Carrier Detect

RTxC(*) Transmit/Receive Clock S

(*) = Normalmente no conectados en el DB-25 14

Conector DB 25

Conector DB 9

El

puerto

serie

en

el

PC

El ordenador controla el puerto serie mediante un circuito integrado especifico, llamado UART (Transmisor-Receptor-Asncrono Universal). Normalmente se utilizan los siguientes modelos de este chip: 8250 (bastante antiguo, con fallos, solo llega a 9600 baudios), 16450 (versin corregida del 8250, llega hasta 115.200 baudios) y 16550A (con buffers de E/S). A partir de la gama Pentium, la circuiteria UART de las placa base son todas de alta velocidad, es decir UART 16550A. De hecho, la mayora de los mdems conectables a puerto serie necesitan dicho tipo de UART, incluso algunos juegos para jugar en red a travs del puerto serie necesitan de este tipo de puerto serie. Por eso hay veces que un 486 no se comunica con la suficiente velocidad con un PC Pentium... Los porttiles suelen llevar otros chips: 82510 (con buffer especial, emula al 16450) o el 8251 (no es compatible). Para controlar al puerto serie, la CPU emplea direcciones de puertos de E/S y lneas de interrupcin (IRQ). En el AT-286 se eligieron las direcciones 3F8h (o 0x3f8) e IRQ 4 para el COM1, y 2F8h e IRQ 3 para el COM2. El estndar del PC llega hasta aqu, por lo que al aadir posteriormente otros puertos serie, se eligieron las direcciones 3E8 y 2E8 para COM3-COM4, pero las IRQ no estn especificadas. Cada usuario debe elegirlas de acuerdo a las que tenga libres o el uso que vaya a hacer de los puertos serie (por ejemplo, no importa compartir una misma IRQ en dos puertos siempre que no se usen conjuntamente, ya que en caso contrario puede haber problemas). Es por ello que ltimamente, con el auge de las comunicaciones, los fabricantes de PCs incluyan un puerto especial PS/2 para el ratn, dejando as libre un puerto serie. Mediante los puertos de E/S se pueden intercambiar datos, mientras que las IRQ producen una interrupcin para indicar a la CPU que ha ocurrido un evento (por ejemplo, que ha llegado un dato, o que ha cambiado el estado de algunas seales de entrada). La CPU debe responder a estas interrupciones lo mas rpido posible, para que de tiempo a recoger el dato antes de que el siguiente lo sobrescriba. Sin embargo, las UART 16550A incluyen unos buffers de tipo FIFO, dos de 16 bytes (para recepcin y transmisin), donde se pueden guardar varios datos antes de que la CPU los recoja. Esto tambin disminuye el numero de interrupciones por segundo generadas por el puerto serie.

15

El RS-232 puede transmitir los datos en grupos de 5, 6, 7 u 8 bits, a unas velocidades determinadas (normalmente, 9600 bits por segundo o mas). Despus de la transmisin de los datos, le sigue un bit opcional de paridad (indica si el numero de bits transmitidos es par o impar, para detectar fallos), y despus 1 o 2 bits de Stop. Normalmente, el protocolo utilizado ser 8N1 (que significa, 8 bits de datos, sin paridad y con 1 bit de Stop). Una vez que ha comenzado la transmisin de un dato, los bits tienen que llegar uno detrs de otro a una velocidad constante y en determinados instantes de tiempo. Por eso se dice que el RS-232 es asncrono por caracter y sincrono por bit. Los pines que portan los datos son RXD y TXD. Las dems se encargan de otros trabajos: DTR indica que el ordenador esta encendido, DSR que el aparato conectado a dicho puerto esta encendido, RTS que el ordenador puede recibir datos (porque no esta ocupado), CTS que el aparato conectado puede recibir datos, y DCD detecta que existe una comunicacin, presencia de datos. Tanto el aparato a conectar como el ordenador (o el programa terminal) tienen que usar el mismo protocolo serie para comunicarse entre si. Puesto que el estndar RS-232 no permite indicar en que modo se esta trabajando, es el usuario quien tiene que decidirlo y configurar ambas partes. Como ya se ha visto, los parmetros que hay que configurar son: protocolo serie (8N1), velocidad del puerto serie, y protocolo de control de flujo. Este ultimo puede ser por hardware (el que ya hemos visto, el handshaking RTS/CTS) o bien por software (XON/XOFF, el cual no es muy recomendable ya que no se pueden realizar transferencias binarias). La velocidad del puerto serie no tiene por que ser la misma que la de transmisin de los datos, de hecho debe ser superior. Por ejemplo, para transmisiones de 1200 baudios es recomendable usar 9600, y para 9600 baudios se pueden usar 38400 (o 19200).

16

Configuracin de pines en db9 para puerto serie


En los PCs hay conectores DB9 macho, de 9 pines, por el que se conectan los dispositivos al puerto serie. Los conectores hembra que se enchufan tienen una colocacin de pines diferente, de manera que se conectan el pin 1 del macho con el pin 1 del hembra, el pin2 con el 2, etc...

La informacin asociada a cada uno de los pines es la siguiente: Nmero de pin Seal DCD (Data Carrier 1 Detect) 2 RX 3 TX DTR (Data Terminal 4 Ready) 5 GND 6 DSR (Data Sheet Ready) 7 RTS (Request To Send) 8 CTS (Clear To Send) 9 RI (Ring Indicator)

Puerto

serie,

DB9

DB25:

El puerto fsico de conexin de la PC, puede tener el zcalo DB9 o DB25. Se utilizan tres pines, en la conexin al circuito. El pin TXD, para transmitir bits. El pin RXD, para recibir y el pin de masa. Cuando no hay transmisin de datos el pin TXD, se indica con el estado mark, con un uno lgico continuo o 10v continuos.

17

Todos estos materiales se pueden adquirir en una tienda de electrnica o de componentes elctricos. Si no se sabe soldar o no se est seguro puede pedirse a un servicio de reparacin que fabrique el cable teniendo en cuenta el esquema de conexiones.

Este es un ejemplo de cmo se fabrica un cable soldando un conector db9, la foto no es especfica de nuestro cable pero sirve para ilustrar el proceso. Ntese en la foto de la derecha la parte del conector que constituye el chasis.

Para realizar la conexin en el PC se puede hacer de diferentes maneras. Una manera es utilizar un cable serie macho-hembra no cruzado, y en el circuito un conector hembra db9 para circuito impreso:

Tambin se puede fabricar un cable serie utilizando cable plano de bus, conectactando un conector db9 hembra para bus:

18

CONECTOR 1 CONECTOR 2 PIN 2-------------------->PIN 3 PIN 3-------------------->PIN 2 PIN 4-------------------->PIN 6 PIN 5-------------------->PIN 5 PIN 6-------------------->PIN 4 PIN 7-------------------->PIN 8 PIN 8-------------------->PIN 7

19

Вам также может понравиться