Модемы и факс-модемы. Программирование для MS-DOS и Windows

       

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


После того как произошло прерывание от COM-порта, программа может прочитать значение регистра идентификации прерывания, чтобы определить причину его возникновения.

Формат регистра представлен ниже:

D0        Если бит равен единице, значит нет прерываний, ожидающих обслуживания

D2-D1 Содержит идентификатор прерывания



Значение бит

D2 D1

Причина прерывания

00

Изменилось состояние модема. Устанавливается при изменении состояния входных линий CTS, RI, DCD, DSR. Сбрасывается после чтения состояния модема из регистра состояния модема

01

Буфер передатчика пуст. Сбрасывается при записи новых данных в регистр данных

10

Данные приняты и доступны для чтения. Сбрасывается после чтения данных из регистра данных

11

Прерывание по линии состояния приемника, возникает при переполнении приемника, ошибках четности или формата данных или при состоянии BREAK. Сбрасывается после чтения состояния линии из регистра состояния линии

D7-D3 Должны быть равны 0

В файле UART_REG.H регистр идентификации прерывания определен следующим образом:

// Смещение относительно базового адреса

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



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