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


Прием данных


Аналогично передаче данных перед вводом символа из регистра данных (адрес 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));

}




Начало  Назад  Вперед