Práctica 1 - Escuela de Ingenierías Industriales

Anuncio
Escuela de Ingenierías Industriales (Badajoz) - UEx
Interfaces y Periféricos
Escuela de Ingenierías Industriales (Badajoz)
Universidad de Extremadura
Asignatura:
INTERFACES Y PERIFÉRICOS
Profesor:
José Ignacio Suárez Marcelo
Práctica 1: “Programación de la UART 8250/16450 mediante
E/S por programa”.
Objetivo
Conseguir que el alumno aprenda a programar una interfaz serie y que
establezca una comunicación con otro procesador empleando para ello la
técnica de E/S por programa.
La práctica consiste en establecer una comunicación serie entre dos ordenadores
PCs. Ambos ordenadores se intercambiarán mensajes escritos por teclado que serán
mostrados en la pantalla del ordenador remoto. El programa de comunicación deberá
realizar entre otras cosas las siguientes tareas:
•
Programación adecuada de la UART 8250/16450.
•
Comprobación de que el ordenador remoto esté dispuesto a establecer
comunicación.
•
Mostrar al ordenador remoto la disponibilidad del ordenador local para
establecer comunicación.
•
Comprobar la llegada de nuevos datos al puerto serie (mediante la técnica de E/S
por programa) y, en caso de tener un nuevo dato, éste deberá ser leído y
mostrado por la pantalla.
•
Lectura del teclado y, en caso de detectar la pulsación de alguna tecla, enviar su
código a través del puerto serie cuando el ordenador remoto esté preparado.
NOTA: Serán necesarios los apuntes sobre programación de la UART 8250/16450.
Práctica 1
Programación de la UART 8250/16450 mediante E/S por programa
Escuela de Ingenierías Industriales (Badajoz) - UEx
Interfaces y Periféricos
/****************************************/
/*
*/
/*
INTERFACES Y PERIFÉRICOS
*/
/*
*/
/*
PRACTICA 1
*/
/*
*/
/*
Comunicación serie con otro PC
*/
/*
empleando E/S POR PROGRAMA
*/
/*
*/
/****************************************/
#include <dos.h>
#include <stdio.h>
#include <conio.h>
//carga bibliotecas
#define
#define
#define
#define
0x3F8
0x2F8
0x3E8
0x2E8
//define direcciones base
//de los puertos serie
#define PUERTO
COM2
//define puerto que va a ser utilizado
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
PUERTO+0
PUERTO+0
PUERTO+0
PUERTO+1
PUERTO+1
PUERTO+2
PUERTO+2
PUERTO+3
PUERTO+4
PUERTO+5
PUERTO+6
PUERTO+7
COM1
COM2
COM3
COM4
TB
RB
DLAB_L
IER
DLAB_H
IIR
FCR
LCR
MCR
LSR
MSR
SR
//Transmitter Holding Buffer (DLAB=0)
//Receiver Buffer (DLAB=0)
//Divisor Latch Low Byte (DLAB=1)
//Interrupt Enable Register (DLAB=0)
//Divisor Latch High Byte (DLAB=1)
//Interrupt Identification Register
//FIFO Control Register
//Line Control Register
//Modem Control Register
//Line Status Register
//Modem Status Register
//Scratch Register
[Write]
[Read]
[R/W]
[R/W]
[R/W]
[R]
[W]
[R/W]
[R/W]
[R]
[R]
[R/W]
/* =============== PROGRAMA PRINCIPAL =============== */
void main(void)
{
int c;
int char_in;
int tecla;
//carácter leído por el puerto serie
//carácter leído por el teclado
/* ---------- Configuración Puerto ---------- */
clrscr();
//limpia pantalla
printf("\n**************************************************");
printf("\n*
*");
printf("\n*
INTERFACES Y PERIFÉRICOS - Curso 2001/02
*");
printf("\n*
*");
printf("\n**************************************************");
printf("\nPresiona ESC para salir.\n\n");
do {
/* --- Proceso de RECEPCIÓN --- */
/* --- Proceso de TRANSMISIÓN --- */
} while (tecla != 27);
//sale del programa cuando se presiona ESC (ASCII 27)
}
Práctica 1
Programación de la UART 8250/16450 mediante E/S por programa
Descargar