Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Nombre Direccin Descripcin CD Deteccin de Portadora RxD Recepcin de Datos TxD Transmisin de Datos DTR Terminal de Datos Preparada GND Masa del Sistema DSR Set de Datos Preparado RTS Peticin para Enviar CTS Listo para Enviar RI Indicador de Llamada conectores se utilizar el esquema cruzado entre transmisin y recepcin, interconectando las
Segunda parte: programacin de la conexin serie Se utilizar el cable realizado en el apartado anterior para conectar dos PCs por el puerto serie. A continuacin se probar un programa en C que controle los registros del puerto serie RS-232. Este programa permite que cuando en un computador se apriete una tecla, el carcter correspondiente aparezca en la pantalla del otro computador. Para ello el programa muestrea contnuamente los registros apropiados del puerto y realiza una transmision full-duplex. Se utilizar para la explicacin de este programa la informacin sobre el hardware de comunicaciones de datos de la UART 8250. Adems, se utilizar un compilador bsico de C para crear el programa, compilarlo y ejecutarlo. El programa inicial es el siguiente: main( ) { unsigned char x,y; /* Inicializacin de variables */ x=inport(0x3FB); x=x|0x080; outport(0x3FB,x); /* DLAB=1 respetando el resto del contenido*/ outport(0x3F9,1); /* Pongo el Divisor Latch (D=288) para */ outport(0x3F8,32); /* 400 bps a frec=1,8432 MHz */ outport(0x3FB,2); /* DLAB=0 y 7 bits de longitud, 1 bit de stop */ do { if(kbhit()!=0) { y=getch(); x=inport(0x3FD); while(!(x&0x30)) x=inport(0x3FD); outport(0x3F8,y); }; /* Si se aprieta una tecla */ /* leemos un carcter */ /* Esperamos Buff.Transm.Vaco */ /* Bit 5 de 3FDh=1 */ /* y mandamos caracter leido */
Anexo 1: Registros de la UART (direccin base=0x3F8 para COM1). En negrita se muestran los registros utilizados en el programa. Todos los registros son de 8 bits. Registro del buffer de receptor (0x3F8+0) Registro del buffer de transmisor (0x3F8+0) Registro de activacin de interrupciones (0x3F8+1) Registro de identificacin de interrupciones (0x3F8+2) Registro de formato de datos (0x3F8+3). Control de linea. Registro de control de salida RS-232 (0x3F8+4). Control de modem. Registro de estado de linea (0x3F8+5) Registro de estado de entrada RS-232 (0x3F8+6). Estado de modem. Registro de scratch pad (0x3F8+7) Registro de latch divisor (0x3F8+0) (0x3F8+1) con DLAB=1 Explicacin: Bits del registro de Control de linea (0x3F8+3): Bits 0-1. Nmero de bits a transmitir segn la tabla: Bit 1 0 0 1 1 Bit 0 0 1 0 1 bits de datos 5 6 7 8
Bit 2. Indica el nmero de bits de stop (0=> 1 bit, 1=> 2 bits) Bit 3. Refleja si la paridad esta activada (1) o desactivada (0). Bit 4. Selector de paridad, par (1) o impar (0). Bit 5. Habilitacin de paridad. (responde a otra tabla que no vemos aqu) Bit 6. BREAK. Bit 7. DLAB. Acceso al latch divisor.
Por ejemplo, para una velocidad deseada de 400 bps, y sabiendo que la frecuencia de oscilacin del cristal de la 8250 es de 18432 MHz, nos sale Divisor = 18432x106 / (16*400) = 288 , que ha de expresarse mediante dos octetos= 0000 0001 0010 0000 . Por lo tanto el byte menos significativo, que hay que introducir en 0x3F8+0 ser el valor 32, y en 0x3F8+1 (MSB) se debera cargar un 1.