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
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.
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.
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
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
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

Servicios de bios para la transmisión de datos

  • 1.
    1.1 SERVICIOS DEBIOS 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 unprocedimiento 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, lasllamadas 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 DEINTERRUPCIONES 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