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

Передача данных


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

Признаком того, что регистр передатчика свободен, является установленный в 1 бит 5 регистра состояния линии с адресом base_adr+ 5. Функция aux_outp (см. листинг 5.6) ждет окончания передачи текущего символа, затем посылает в асинхронный адаптер следующий символ.

Листинг 5.6. Файл AUX_OUTP.C

/**

*.Name         aux_outp

*

*.Descr        Функция дожидается готовности

*              передатчика и посылает символ.

*

*.Proto        void aux_outp(char chr, int port);

*

*.Params       char chr - посылаемый символ;

*



*              int port - номер асинхронного адаптера:

*                 0 - COM1, 1 - COM2

*

*.Return       Ничего

***/

#include <stdio.h>

#include <conio.h>

#include "sysp_com.h"

void aux_outp(char chr, int port) {

     

unsigned status_reg, out_reg;

     

status_reg = 0x3fd - 0x100 * port;

     

out_reg = status_reg - 5;

     

while( (inp(status_reg) & 0x20) == 0 );

     

outp(out_reg, chr);

}


Данная функция используется для ускорения процесса передачи в COM-порт данных из буфера передатчика драйвера. Функция не возвращает управление до тех пор, пока буфер передатчика не станет пустым.

На входе:  AH = 08h;

     

DX = номер порта:         0 - COM1, 1 - COM2, 2 - COM3,

                                                              

3 - COM4 и т. д.

На выходе: не используется.



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