Программирование модемов© Александр Фролов, Григорий ФроловТом 4, М.: Диалог-МИФИ, 1993, 236 стр. 2.4. Прием данныхАналогично передаче данных перед вводом символа из регистра данных (адрес baseadr) необходимо убедиться в том, что бит 0 регистра состояния линии (адрес baseadr + 5) установлен в 1. Это означает, что символ принят из линии и находится в буферном регистре приемника. Для приема данных мы подготовили следующую функцию:
/**
*.Name aux_inp
*.Title Ввод символа из асинхронного адаптера
*
*.Descr Эта функция дожидается готовности
* приемника и вводит символ из асинхронного
* адаптера.
*
*.Proto char aux_inp(int port);
*
*.Params int port - номер асинхронного адаптера:
* 0 - COM1, 1 - COM2
*
*.Return Принятый символ
*
*.Sample aux_test.c
**/
#include <stdio.h>
#include <conio.h>
#include "sysp_com.h"
char aux_inp(int port) {
unsigned status_reg, inp_reg;
status_reg = 0x3fd - 0x100 * port;
inp_reg = status_reg - 5;
while( (inp(status_reg) & 1) == 0 );
return(inp(inp_reg));
}
|

