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

       

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


Этот регистр используется либо для управления прерываниями от асинхронного адаптера, либо (после вывода в управляющий регистр байта с установленным в 1 старшим битом) для вывода значения старшего байта делителя частоты тактового генератора.

В режиме управления прерываниями регистр имеет следующий формат:

D0        Разрешение прерывания при готовности принимаемых данных. Если бит содержит единицу, генерация прерывания при готовности принимаемых данных разрешена

D1        Разрешение прерывания после передачи байта (когда выходной буфер передачи пуст). Если бит содержит единицу, генерация прерывания после передачи байта разрешена

D2        Разрешение прерывания по обнаружению состояния BREAK или по ошибке. Если бит содержит единицу, то при обнаружении состояния BREAK или при возникновении ошибки происходит прерывание

D3        Разрешение прерывания по изменению состояния входных линий на разъеме RS-232-C (CTS, DSR, RI, DCD). Если бит содержит единицу, то при изменении состояния линий CTS, DSR, RI, DCD COM-порт вырабатывает прерывание

D7-D4 Не используются, должны быть равны 0

Для удобства доступа к регистрам UART мы определили для каждого регистра соответствующее объединение (см. файл UART_REG.H).

Ниже мы приводим объединение, которое можно использовать для доступа к отдельным полям регистра управления прерываниями из программ на языке Си:

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

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



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