Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Инициализация комуникационного порта

Читайте также:
  1. Means of transport виды транспорта
  2. V. Особенности осуществления спортивной подготовки по отдельным спортивным дисциплинам по виду спорта велоспорт-шоссе
  3. Боязнь автотранспорта
  4. Виды конного спорта
  5. Возникновение внушенного сна и зоны раппорта
  6. Восьмиканальные цифровые портастудии.
  7. Всероссийская конференция по развитию адаптивного и инклюзивного спорта пройдет в Свердловской области

 

Известно, что "мышь" передает данные со следующим описанием последовательного протокола:

- скорость - 1200 бод;

- длина данных - 8 бит, (7 бит у двухклавишной);

- контроль по паритету - отсутствует;

- количество стоп-битов - 1.

Описание протокола, который устанавливается при подключении электропитания ПЭВМ при отсутствии драйвера "мышки", не совпадает с приведенным выше, поэтому требуется инициализация коммуникационного порта с целью установления требуемого протокола. Для инициализации требуется установить определенные значения битов в РЕГИСТРЕ УПРАВЛЕНИЯ ЛИНИИ и в РЕГИСТРЕ ДЕЛИТЕЛЯ. Запись в регистр управления линии происходит через порт с адресом 3FB. Значения битов РЕГИСТРА УПРАВЛЕНИЯ ЛИНИИ (3FDh) даны в таблице 3.

 

 

№ бита Назначение
1- 0 длина байта: "00" - 5 бит,"01" - 6 бит,"10" - 7 бит,"11" - 8 бит
  количество стоп-битов: "0" - 1, "1" - 1.5, если длина байта равна 5 битам, иначе - 2
  наличие контроля по паритету: "1" - бит есть, "0" - бита контроля нет
  тип контроля по паритету: "0" - непарность, "1"- парность
  установка фиксированного значения бита контроля по паритету: "0" - отменить установку,"1" - установить "0", если бит 3 и бит 4 имеют значение"1", или отменить бит контроля, когда бит 3 = "0"
  "1" - установка передачи беспрерывной строки единиц, используют с целью проверки оборудования или как объявление перерыва
  "1" - позволяет через порты с адресами 3F8 и 3F9 делать запись младшего и старшего байтов в РЕГИСТР ДЕЛИТЕЛЯ, иначе - обыкновенная работа портов с адресами 3F8 и 3F9

 

 

Записать в рабочий файл параметры протокола обмена, которые устанавливаются при подключении электропитания ЭВМ.

Скорость передачи данных зависит от частоты генератора колебаний, который входит в состав контроллера коммуникационного порта (f =115.2 кГц), и коэффициента деления, который нужно установить в РЕГИСТРЕ ДЕЛИТЕЛЯ (3F9h). Чтобы получить скорость передачи 1200 бод нужно иметь делитель 96.

Написать программу инициализации:

а) В РЕГИСТР СОСТОЯНИЯ ЛИНИИ 3FB записать число 80h, которое имеет "1" в разряде с номером 7;

б) записать нуль в старший байт РЕГИСТРА ДЕЛИТЕЛЯ (3F9);

в) записать число 60h = 96d в младший байт РЕГИСТРА ДЕЛИТЕЛЯ (3F8), это даст скорость передачи 1200 бод.

г) записать число 3 в РЕГИСТР СОСТОЯНИЯ ЛИНИИ (3FB), которое устанавливает длину байта данных 8 бит, один стоп-бит и отсутствие контроля по паритету.

Выполнить программу инициализации, после чего выполнить программу из задания 3 и зафиксировать неизменное количество (5) байтов в сообщениях от "мышки" независимо от направления движения.

 

 

Задание 5

 

 

Написать программу по выводу информации о перемещении мыши (текущие координаты курсора). Также необходимо выдавать информацию о нажатых кнопках мыши.

Данное задание может быть выполнено двумя способами:

1) написанием собственного драйвера мыши;

2) установкой собственного обработчика прерывания мыши.

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

Все общение с мышью в DOS выполняется через прерывание 33h, обработчик которого устанавливает драйвер мыши, загружаемый обычно при запуске системы. Современные драйверы поддерживают около 60 функций, позволяющих настраивать разрешение мыши, профили ускорений, виртуальные координаты, дополнительные обработчики событий и т. п. Большинство этих функций требуются редко, сейчас рассмотрим основные.

 

INT33h, AX = 0: Инициализация мыши

Вход: АХ - 0000h

Выход: АХ = 0000h, если мышь или драйвер мыши не установлены

АХ = 0FFFFh, если драйвер и мышь установлены

ВХ = число кнопок:

0002 или 0FFFFh - две

0003 - три

0000 - другое количество

 

Выполняется аппаратный и программный сброс мыши и драйвера.

 

INT33h, AX = 1: Показать курсор Вход: АХ = 0001 h

INT33h, AX = 2: Спрятать курсор Вход: АХ = 0002h

 

Драйвер мыши поддерживает внутренний счетчик, управляющий видимостью курсора мыши. Функция 2 уменьшает значение счетчика на единицу, а функция 1 увеличивает его, но только до значения 0. Если значение счетчика - отрицательное число, он спрятан, если ноль - показан. Это позволяет процедурам, использующим прямой вывод в видеопамять, вызывать функцию 2 в самом начале и 1 в самом конце, не заботясь о том, в каком состоянии был курсор мыши у вызвавшей эту процедуру программы.

 

INT33h, AX = 3: Определить состояние мыши

Вход: АХ - ОООЗЬ

Выход: ВХ = состояние кнопок:

бит 0: нажата левая кнопка

бит 1: нажата правая кнопка

бит 2: нажата средняя кнопка

СХ = Х-координата

DX = Y-координата

 

Возвращаемые координаты совпадают с координатами пикселов соответствующей точки на экране в большинстве графических режимов, кроме 04, 05, 0Dh, 13h, где Х-координату мыши нужно разделить на 2, чтобы получить номер столбца соответствующей точки на экране. В текстовых режимах обе координаты надо разделить на 8 для получения номера строки и столбца соответственно.

В большинстве случаев эта функция не используется в программах, так как для того, чтобы реагировать на нажатие кнопки или перемещение мыши в заданную область, требуется вызывать это прерывание постоянно, что приводит к трате процессорного времени. Функции 5 (определить положение курсора при последнем нажатии кнопки), 6 (определить положение курсора при последнем отпускании кнопки) и 0Bh (определить расстояние, пройденное мышью) могут помочь оптимизировать работу программы, самостоятельно “следящей” за всеми передвижениями мыши, но гораздо эффективнее указать драйверу контролировать ее передвижения (чем он, собственно, и занимается постоянно) и передавать управление в программу, как только выполнится заранее определенное условие, например пользователь нажмет на левую кнопку мыши. Такой сервис обеспечивает функция 0Сh - установить обработчик событий. INT33H, АХ = 0Ch:

Установить обработчик событий

 

Вход: АХ = 000Ch

ES:DX = адрес обработчика

СХ = условие вызова

бит 0: любое перемещение мыши

бит 1: нажатие левой кнопки

бит 2: отпускание левой кнопки

бит 3: нажатие правой кнопки

бит 4: отпускание правой кнопки

бит 5: нажатие средней кнопки

бит 6: отпускание средней кнопки

СХ = 0000h - отменить обработчик

 

Обработчик событий должен быть оформлен, как дальняя процедура (то есть завершаться командой RETF). На входе в процедуру обработчика АХ содержит условие вызова, ВХ - состояние кнопок, СХ, DX - Х- и Y-координаты курсора, SI, DI - счетчики последнего перемещения по горизонтали и вертикали (единицы измерения для этих счетчиков - мики, 1/200 дюйма), DS - сегмент данных драйвера мыши. Перед завершением программы установленный обработчик событий должен быть обязательно удален (вызов функции ОСЬ с СХ - 0), так как иначе при первом же выполнении условия управление будет передано по адресу в памяти, с которого начинался обработчик.

 

 

ЛИТЕРАТУРА

 

 

1. Фролов А. В., Фролов Г. В.. MS-DOS для программиста (ч. 1). -М: Диалог - МИФИ, 1997.

2. Фролов А. В., Фролов Г. В.. MS-DOS для программиста (ч. 2). -М: Диалог - МИФИ, 1997.

3. Турбо Паскаль 7.0. (Под ред. А. Колесникова, В. Гинзбурга). -Киев: BHV, 1996.

4. Березин Б. И., Березин. С. Б. Начальный курс С и С++. -М: Диалог - МИФИ, 1996.

5. Пильщиков В. Н. Программирование на языке Ассемблера IBM PC. -М: Диалог - МИФИ, 1996.

6. Джордейн Р. Справочник программиста персональных компьютеров типа IBM PC, XT и AT. –М: Финансы и статистика, 1991.

7. Нортон П. Программно-аппаратная организация IBM PC. -М: Радио и связь, 1992.

8. Нортон П. Персональный компьютер фирмы IBM и операционная система MS-DOS. -М: Радио и связь, 1992.

9. Нортон П., Уилтон Р. IBM PC и PS/2. Руководство по программированию. -М: Радио и связь, 1994.

10. Гук М. Аппаратные средства IBM PC. Энциклопедия. –СПб: Питер, 2000.


 


Дата добавления: 2015-12-07; просмотров: 102 | Нарушение авторских прав



mybiblioteka.su - 2015-2024 год. (0.012 сек.)