Прием данных
Аналогично передаче данных, перед вводом символа из порта приемника 3F8h необходимо убедиться в том, что бит 0 порта 3FDh установлен в 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.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));
}