1. 1.1 SERVICIOS DE BIOS PARA LA TRANSMISIÓN DE DATOS:
La interrupción 14H (20 decimal) es un llamado a un subprograma del BIOS para
efectuar servicios de comunicación. Estos servicios se enumeran del 0 al 3 y se
especifican en el registro AH.
AX tiene 16 bits ah 8 estado o servicio y al 8 características q se necesitan especificar.
AH AL
AX Servicio
El número del puerto serie se especifica en el registro DX. Si sólo hay un puerto se pone
0.
DX Nº puerto serie (1 Com1, 2 Com2)
Estos servicios son:
0 : INICIALIZACIÓN DEL PUERTO SERIE
1 : TRANSMISIÓN DE UN CARACTER
2 : RECEPCIÓN DE UN CARACTER
3 : ESTADO DEL PUERTO SERIE
El primer paso para establecer una comunicación con el 8250 es utilizar el servicio "0"
de ROM - BIOS.
1.1.1 SERVICIO “0”. INICIALIZACIÓN DEL PUERTO SERIE
Los parámetros de la inicialización se establecen en AL, según el formato:
AH 7 6 5 4 3 2 1 0
Servicio
Velocidad Paridad bitstop Longitud
000: 110 bps 11: par 0: 1 palabra
001: 150 bps 01: impar 1: 2 00: 5
010: 300 bps 00,10: ninguna 01: 6
011: 600 bps 10: 7
100: 1200 bps 11: 8
101: 2400 bps
110: 4800 bps
111: 9600 bps
1.1.1.1 EJEMPLO:
Hacer un segmento de programa para inicializar el 8250 para 8 bits de dato, 1 bit de
stop, paridad par y 1200 bps.
AL
7 6 5 4 3 2 1 0
1 0 0 1 1 0 1 1
2. 1.1.1.2 SOLUCIÓN:
long_dato: tstop: = 0 reg: registers;
paridad: = 24 reg.dx := 0; {un puerto}
velocidad: = 128 reg.ah := 0; {servido}
with reg do begin reg.al := $9B;
DX := 0 numero de puerto ¡ntr($14, reg);
AH := 0 especificar servicio
AL := long_dato + bitstop + paridad + velocidad
end;
intr($14, reg)’’la interrupción 14 permite escribir en
los registros. = 3
bi
1.2 SERVICIO “1”. TRANSMITE UN CARÁCTER.
El servido se selecciona en AH y el carácter se coloca en AL
AH AL
AX Servicio = 1 Carácter
El registro AH retoma “0” si hubo éxito en la Tx ó un código de error que se discutirá en el
servicio 3.
AH = 1 Servicio 0 ok
1.2.1 EJEMPLO
Hacer un procedimiento que transmita un carácter.
Procedure T_char (c: char);
Begin
reg.dx:= 0; ’’cuando solo tenemos un puerto
reg.ah: = 1; {servicio 1}
reg.al: = ord (c);
intr($14, reg);
End
1.3 SERVICIO “2”. RECIBE UN CARÁCTER
Recibe un carácter del canal especificado en DX y lo coloca en AL
AH AL
AX Servicio = 2 Carácter
El servicio espera un carácter ó señal que indique condición del servicio como “time-
out”. Al igual que en el servido 1, el contenido de AH indica que el proceso fue exitoso.
3. 1.3.1 EJEMPLO
Hacer un procedimiento que reciba un carácter
Procedure R_char (var c: char);
Begin
reg.dx: = 0;
reg.ah:= 2; {servicio 2}
intr ($14, reg)
c = chr (reg.al)
End;
El informe de AH en los servicios 1 y 2 es muy elemental ya que se usa el bit 7 para
señalizar si hubo ó no error. No se realiza, por ejemplo, un error de temporización (time
- out). En general, se aconseja utilizar el servicio 3 para chequear el estado del puerto
serie.
1.4 SERVICIO 3. OBTENCIÓN DEL ESTADO DEL PUERTO
SERIE.
Este servido realiza un informe completo del puerto serie en AX codificando cada uno
de los 16 bits con un posible problema. La parte AH informa acerca del estado de la
línea y AL el estado del módem. Estos bits indican error cuando se coloca en 1.
4. En resumen, las llamadas a la ROM-BIOS son útiles, pues permiten utilizar servicios
preestablecidos. Sin embargo, se reportan más lentos que aplicaciones desarrolladas a
nivel de registros. Por otro lado, los "parámetros" al llamado son más limitados para el
programador. Además, algunas versiones de la ROM-BIOS pueden tener
AH (estado de la línea) AL (estado del módem)
7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
Datos Prep p’
prep. envío
Error de Datos de
overrun preparación
Error de Det. de llamada
paridad
Error de trama Det. de port (Sec)
Error en determinación de Preparación para envío
port
Registro de retención vacío Datos preparados (DSR)
Registro de despido vacío Ind. de llamada
Error de temporización Determinación de portadora
comportamientos similares, pero no lo suficientemente idénticos para una aplicación.
1.5 INTERRUPCIONES DE HARDWARE PARA COMUNICACIONES
Se debe recordar las funciones del controlador de interrupciones periféricas (PIC) 8259
que se encarga de vincular 8 periférico con el CPU.
Cada uno de estos periféricos tiene una prioridad a la interrupción y se establecen a
través de IRQ (Interrupt Request) con los niveles 0,1,...,7
Las líneas IRQ correspondientes al 8259 son IRQ3 (COM2) y IRQ4 (COM1).
8259 CPU
Tabla de
Reloj IRQ 0 vectores de
interrupción
Teclado Vector 8
Solicitud de Vector 9
Reservado interrupción .........
vector 11
COM2 IRQ 3 INT (COM2)
vector 12
COM1 IRQ 4 (COM1)
.........
vector 15
Disco fijo
Disco
flexible
Impresora
5. 1.6 ESTRUCTURA DE INTERRUPCIONES DEL IBM-PC
El CPU, una vez interrumpido, identifica la interrupción, elabora el vector
correspondiente, tratará la interrupción y continuará su tarea.
Las tareas básicas que debe realizar el 8259 son:
Habilitar o inhabilitar cada fuente de interrupción. Para ello escribe un valor en
el registro de enmascaramiento (IMR) de interrupciones al cual tiene acceso por
el puesto 21H.
Indicar el fin de la rutina de servicio de interrupción, enviando el comando 20H,
que significa fin de la interrupción (EOI), al registro de comando de
interrupción. A ese registro se toma acceso por el puerto 20H.
El registro IMR (21H) establece cuales interrupciones (IRQ 0 – IRQ 7) serán permitidas
y cuales enmascaradas. Cada bit corresponde con un nivel IRQ y se activa cuando está
en 0.
7 6 5 4 3 2 1 0
IMR 21H IRQ 7 IRQ 4 IRQ 3 IRQ 1 IRQ 0
Así, por ejemplo para activar interrupción por COM 1 solamente.
7 6 5 4 3 2 1 0
Port[$21] := $EF 1 1 1 0 1 1 1 1
Al terminar una rutina de interrupción de hardware se debe enviar al puerto 20H el
comando 20H para limpiar la interrupción actual.
Port [$20] := $20 {fin de interrupción}
1.6.1 INICIALIZACIÓN:
Parámetros
Velocidad y otros
Activar 8250 y 8259
Activar evento de interrupción de comunicación [$3F9]
Enmascarar interrupción en IMR [$21]
Colocar bit3 = 1 del registro de control del módem [3FC]
Salvar vector de interrupción
Desviar la interrupción de hard hacia procedimiento del usuario que va a
darle tratamiento
Restaurar vector original
6. 2 CONCLUSIONES
El canal telefónico es incapaz de Transmitir ondas cuadradas.
Los modos de Transmisión especifican la forma en que se está utilizando el
canal de comunicación
La modulación es importante al momento de transmitir una señal
Los protocolos son conjuntos de reglas necesarias par realizar interacciones en
la computadora
3 RECOMENDACIONES
Se deben tener en claro los tipos de modulación, para nuestra mejor
comprensión
Se debe analizar los modos de transmisión en serie que se utilizan en el canal de
comunicación.
Tener en claro los elementos básicos de un protocolo
Debemos aprender los tipos de protocolos y para que sirven