Электронная библиотека книг Александра Фролова и Григория Фролова.
Shop2You.ru Создайте свой интернет-магазин
Библиотека
Братьев
Фроловых

Программирование модемов

© Александр Фролов, Григорий Фролов
Том 4, М.: Диалог-МИФИ, 1993, 236 стр.

[Назад] [Содеожание] [Дальше]

Включаемые файлы для программ

SYSP_COM.H

/* SYSP_COM.H - include-файл для примеров, приведенных в книге */



/**
*.Name      FP_MAKE
*
*.Title     Макро для составления FAR-указателя
*
*.Descr     Макро составляет FAR-указатель, пользуясь
*           значениями сегмента и смещения
*
*.Params    FP_MAKE(seg,off)
*              seg - сегмент;
*              off - смещение
*
*.Return    FAR-указатель seg:off
**/


#define FP_MAKE(seg,off) ((void far *)                         \
               ((((unsigned long) (unsigned)(seg)) << 16L) |   \
               ((unsigned long) (unsigned) (off))))


#pragma pack(1)

/* Идентификатор BIOS */

typedef struct _BIOS_ID_ {

   char date[8];
   unsigned reserve;
   char pc_type;

} BIOS_ID;


typedef struct _AUX_MODE_ {

   union {

      struct {
         unsigned char  len : 2,          // длина символа
                  stop         : 1, // число стоп-битов
                  parity       : 2, // контроль четности
                  stuck_parity : 1, // фиксация четности
                  en_break_ctl : 1, // установка перерыва
                  dlab         : 1; // загрузка регистра делителя
      } ctl_word;

      char ctl;

   } ctl_aux;

   unsigned long baud;            // скорость передачи данных

} AUX_MODE;


int aux_init(AUX_MODE *, int, int);    // инициализация
                        // асинхронного адаптера

void aux_stat(AUX_MODE *, int);    // определение режима
                     // асинхронного адаптера

void aux_outp(char, int);     // вывод символа в
                  // асинхронный адаптер

char aux_inp(int);          // ввод символа из асинхронного
                  // адаптера

BC_CONST.H

// BC_CONST.H
// определение констант для Turbo C и Borland C

#define _COM_INIT      0
#define _COM_SEND      1
#define _COM_RECEIVE   2
#define _COM_STATUS      3

#define _COM_CHR7      0x02
#define _COM_CHR8      0x03
#define _COM_STOP1      0x00
#define _COM_STOP2      0x04

#define _COM_NOPARITY   0x00
#define _COM_EVENPARITY   0x18
#define _COM_ODDPARITY   0x08

#define _COM_110      0x00
#define _COM_150      0x20
#define _COM_300      0x40
#define _COM_600      0x60
#define _COM_1200      0x80
#define _COM_2400      0xa0
#define _COM_4800      0xc0
#define _COM_9600      0xe0

UART_REG.H

// UART_REG.H

/**
*.Name      FP_MAKE
*
*.Title     Макро для составления FAR-указателя
*
*.Descr     Макро составляет FAR-указатель, пользуясь
*           значениями сегмента и смещения
*
*.Params    FP_MAKE(seg,off)
*              seg - сегмент;
*              off - смещение
*
*.Return    FAR-указатель seg:off
**/


#define FP_MAKE(seg,off) ((void far *)                         \
               ((((unsigned long) (unsigned)(seg)) << 16L) |   \
               ((unsigned long) (unsigned) (off))))


#pragma pack(1)


// регистр управления прерываниями

#define ICR_N     1

typedef union _ICR_ {

   struct {

      unsigned char in_ready : 1;
      unsigned char out_ready : 1;
      unsigned char err : 1;
      unsigned char change : 1;
      unsigned char reserv : 4;

   } bit_reg;

   unsigned char byte;

} ICR;


// регистр идентификации прерывания

#define IIDR_N     2

typedef union _IIDR_ {

   struct  {

      unsigned char no_inter : 1;
      unsigned char inter_id : 2;
      unsigned char reserv : 5;

   } bit_reg;

   unsigned char byte;

} IIDR;


// регистр управления модемом

#define MCR_N     4

typedef union  _MCR_ {

   struct {

      unsigned char dtr : 1;
      unsigned char rts : 1;
      unsigned char out1 : 1;
      unsigned char out2 : 1;
      unsigned char diag : 1;
      unsigned char reserv : 3;

   } bit_reg;

   unsigned char byte;

} MCR;


// регистр состояния модема

#define MSR_N     6

typedef union _MSR_ {

   struct {

      unsigned char change_cts : 1;
      unsigned char change_dsr : 1;
      unsigned char change_ri : 1;
      unsigned char change_dcd : 1;
      unsigned char cts : 1;
      unsigned char dsr : 1;
      unsigned char ri : 1;
      unsigned char dcd : 1;

   } bit_reg;

   unsigned char byte;

} MSR;


// регистр состояния линии

#define LSR_N     5

typedef union _LSR_ {

   struct {

      unsigned char in_ready : 1;
      unsigned char overflow : 1;
      unsigned char parity : 1;
      unsigned char synxr : 1;
      unsigned char break_detect : 1;
      unsigned char out_ready : 1;
      unsigned char shift_ready : 1;
      unsigned char taimout : 1;


   } bit_reg;

   unsigned char byte;

} LSR;



// управляющий регистр

#define LCR_N     3

typedef union _LCR_ {

   struct {

      unsigned char len : 2;
      unsigned char stop : 1;
      unsigned char parity : 2;
      unsigned char stuck_parity : 1;
      unsigned char en_break_ctl : 1;
      unsigned char dlab : 1;


   } bit_reg;

   unsigned char byte;

} LCR;


#pragma pack()


int test_com( unsigned );
[Назад] [Содеожание] [Дальше]