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

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


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

Признаком того, что регистр передатчика свободен, является установленный в 1 бит 5 регистра состояния линии с адресом baseadr+ 5. Следующая функция ждет окончания передачи текущего символа, затем посылает в асинхронный адаптер следующий символ:

/** *.Name aux_outp *.Title Вывод символа в асинхронный адаптер * *.Descr Эта функция дожидается готовности * передатчика и посылает символ. * *.Proto void aux_outp(char chr, int port); * *.Params char chr - посылаемый символ; * * int port - номер асинхронного адаптера: * 0 - COM1, 1 - COM2 * *.Return Ничего * *.Sample aux_test.c **/

#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 и т. д.

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



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