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




Программа COMTEST


В листинге 6.1 приведен исходный текст программы COMTEST, использующей описанные выше способы работы с асинхроннымо адаптером.

Программа вводит символы с клавиатуры, передает их в асинхронный адаптер, а затем считывает из входного регистра этого же адаптера. Для правильной работы программы выход асинхронного адаптера должен быть соединен с его входом.

Листинг 6.1. Файл comtest\comtest.с

// =====================================================

// Работа с асинхронным адаптером COM1.

// Перед запуском программы необходимо замкнуть

// контакты 2 и 3 разъема COM1

//

// (C) Фролов А.В, 1997

//

// E-mail: frolov@glas.apc.org

// WWW:    http://www.glasnet.ru/~frolov

//            или

//         http://www.dials.ccas.ru/frolov

// =====================================================

#include <stdio.h>

#include <conio.h>

typedef struct _AUX_MODE_

{

  union

  {

    struct

    {

      unsigned char len : 2, // длина символа

           stop         : 1, // число стоп-битов

           parity       : 2, // контроль четности

           stuck_parity : 1, // фиксация четности

           en_break_ctl : 1, // установка перерыва

           dlab         : 1; // загрузка регистра делителя

    } ctl_word;

    char ctl;

  } ctl_aux;

  unsigned long baud; // скорость передачи данных

} AUX_MODE;

void aux_stat(AUX_MODE *mode, int port);

int aux_init(AUX_MODE *mode, int port, int imask);

void aux_outp(char chr, int port);

char aux_inp(int port);

int main(void)

{

  AUX_MODE amd;

  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);

  amd.baud = 115200;

  aux_init(&amd, 0, 0);




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