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

UART_REG.H



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 );



Содержание раздела