Аппаратное обеспечение персонального компьютера


           

Вводим символ из асинхронного адаптера


  aux_stat(&amd, 0);

  printf("\nСостояние порта COM1:"

    "\nКод длины символа:    %d"

    "\nКод числа стоп-битов: %d"

    "\nКонтроль четности:    %d"

    "\nСкорость передачи:    %lu",

    amd.ctl_aux.ctl_word.len,

    amd.ctl_aux.ctl_word.stop,

    amd.ctl_aux.ctl_word.parity,

    (unsigned long)amd.baud);

  printf("\n\nТестирование асинхронного адаптера."

    "\nНажимайте клавиши!"

    "\nДля завершения работы нажмите <Contril+C>\n");

  for(;;)

  {

    // Вводим символ с клавиатуры и передаем его

    // в асинхронный адаптер

    aux_outp((char)getch(), 0);

    // Вводим символ из асинхронного адаптера и

    // отображаем его на экране

    putchar(aux_inp(0));

  }

  return 0;

}

/**

*.Name         aux_stat

*.Title        Определение режима асинхронного адаптера

*

*.Descr        Эта функция считывает текущий режим

*              асинхронного порта и записывает его

*              в структуру с типом AUX_MODE

*

*.Proto        void aux_stat(AUX_MODE *mode, int port);

*

*.Params       AUX_MODE mode - структура, описывающая

*              протокол и режим работы порта:

*

*              int port - номер асинхронного адаптера:

*                 0 - COM1, 1 - COM2

**/

void aux_stat(AUX_MODE *mode, int port)

{

  unsigned long b;

  // Запоминаем режим адаптера

  mode->ctl_aux.ctl = (char)inp(0x3fb - 0x100 * port);

  // Устанавливаем старший бит режима

  // для считывания текушей скорости передачи

  outp(0x3fb - 0x100 * port, mode->ctl_aux.ctl | 0x80);

  // Считываем значение регистра делителя

  b = inp(0x3f9 - 0x100 * port); b = b << 8;

  b += inp(0x3f8 - 0x100 * port);

  // Преобразуем его в боды

  switch (b)

  {

    case 1040: b = 110; break;

    case 768: b = 150; break;

    case 384: b = 300; break;

    case 192: b = 600; break;

    case 96: b = 1200; break;


Содержание  Назад  Вперед





Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий