Программирование модемов© Александр Фролов, Григорий ФроловТом 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)); } |