Электронная библиотека книг Александра Фролова и Григория Фролова.
Shop2You.ru Создайте свой интернет-магазин
Библиотека
Братьев
Фроловых

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

© Александр Фролов, Григорий Фролов
Том 4, М.: Диалог-МИФИ, 1993, 236 стр.

[Назад] [Содеожание] [Дальше]

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

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

Признаком того, что регистр передатчика свободен, является установленный в 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);

}

[Назад] [Содеожание] [Дальше]