Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
labex.doc
Скачиваний:
3
Добавлен:
19.11.2019
Размер:
4.14 Mб
Скачать

4.1.Оборудование Персональный компьютер at386 и выше, содержащий клавиатуру; компилятор языка c или TurboAssembler.

4.2.Задание на работу

  1. Ознакомиться с теоретическими сведениями, приведенными во втором разделе и ответить на контрольные вопросы.

  2. В соответствии с вариантом задания, выданным преподавателем, разработать программное обеспечение, реализующее тестирование клавиатуры.

  3. Оформить отчет.

Варианты заданий:

1) Тестирование корректности нажатий клавиш основного поля клавиатуры.

2) Тестирование корректности нажатий функциональных клавиш и клавиш цифрового поля клавиатуры.

3) Тестирование исправности индикаторов NumLock, CapsLock и ScrollLock клавиатуры.

4.3.Оформление отчета

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

4.4.Контрольные вопросы

1) Каким образом строится взаимодействие клавиатуры с системной платой?

2) Какие порты служат для обращения к контроллеру клавиатуры i8042?

  1. Каков порядок программирования микроконтроллера i8042?

  2. Как произвести управление светодиодными индикаторами клавиатуры?

  3. Какие команды способен выполнять контроллер клавиатуры?

  4. Как производится программное и аппаратное блокирование клавиатуры?

ЛАБОРАТОРНАЯ РАБОТА №5

РАЗРАБОТКА программного обеспечения ТЕСТИРОВАНИЯ МАНИПУЛЯТОРА «МЫШЬ»

4.5.Цель и задачи работы

Целью работы является изучение принципов функционирования и освоение методов тестирования манипулятора типа «мышь», а также их реализация в программном обеспечении.

4.6.Основные теоретические положения

Большинство периферийных устройств (ПУ) представляют собой электромеханические устройства, надежность которых значительно ниже надежности центрального процессора [1]. В электромеханических ПУ большинство отказов приходится на долю их механических частей. Локализация неисправностей логической части ПУ и их устранения не представляет затруднений, она основана на использовании традиционных методов диагностирования дискретных объектов и может быть автоматизирована. Локализация неисправностей электромеханических узлов слабо поддается автоматизации и в значительной мере остается ручной процедурой.

Конструкции манипуляторов

Манипулятор типа «мышь» используется для управления курсором на экране компьютера. Ранее существовали два варианта подключения: через COM-порт и непосредственно к системной шине через адаптер (bus-mouse). В настоящее время используется преимущественно подключение мыши к специальному разъему стандарта PS/2 (mini-DIN), расположенному непосредственно на системной плате и связанному с контроллером 8042, который одновременно выполняет функции управления клавиатурой и мышью. Существуют варианты беспроводных манипуляторов, в которых передача осуществляется через ИК-канал.

Различают несколько основных типов манипуляторов. Самый дешевый и распространенный – оптико-механический. Для ввода перемещений мыши по столу в них используют шарик, приводящий во вращение через валики два диска с прорезями (растры), которые прерывают оптический сигнал в двух парах фотоприемников и излучателей.

Поскольку мышь должна управлять курсором на экране, необходимо контролировать перемещение мыши на плоскости. Это осуществляется посредством регистрации количества импульсов, поступающих с фотоприемников. Импульсы в фотоприемниках возникают вследствие модуляции светового потока от излучателей прорезями вращающихся дисков. Питание мыши, подключенной к COM-порту, осуществляется по одной из сигнальных линий порта.

Другой вариант манипулятора – трекбол - шарик, находящийся внутри мыши, располагается на поверхности клавиатуры и его вращение в любых направлениях позволяет перемещать курсор.

В оптико-механической мыши импульсы с выхода датчиков поступают на входы контроллера мыши (микросхемы внутри самого манипулятора). Результатом их обработки является величина перемещения мыши с момента последней передачи данных о состоянии мыши.

Любая мышь передает в компьютер информацию о состоянии кнопок и величину последнего перемещения [5]. Стандарт передачи СОМ-мыши фирмы Microsoft использует посылку из трех байтов: первый – информация о кнопках, второй и третий – перемещение по x и y. Скорость передачи – 1200 бод, контроль по четности не используется, внутри байта используются 7 информационных бит и один стоповый. Для мыши Microsoft используются сигналы RTS, DTR, TxD, RxD и SG. Из них RTS и DTR используются для подачи питания. Часто также применяется вариант с четырьмя линиями (не используется сигнал «Готовность выходных данных»).

Существуют варианты оптических манипуляторов типа «мышь». В них величина перемещения определяется подсчетом числа импульсов на выходе фотодатчиков. Однако световой поток излучателей направлен непосредственно на поверхность специального планшета, на котором нанесены штрихованные линии с заданным шагом.

Современные оптические манипуляторы «мышь» содержат излучатель модулированного светового потока и примитивную видеокамеру, состоящую из матрицы фотоприемников. По разности числа принятых отраженных от поверхности импульсов в разных направлениях можно определить скорость перемещения мыши по соответствующей координате. При этом манипулятор может работать практически на любой поверхности, кроме зеркальной.

Драйвер мыши – программа, которая состоит из двух частей: самостоятельная часть, осуществляющая ввод информации со стороны мыши, вторая – управляет перемещением курсора по экрану, дополнительный компонент, обеспечивающий связь этих частей между собой.

Программирование манипулятора «мышь»

Операционная система MS-DOS предоставляет прикладным программам средства взаимодействия с мышью через систему функций прерывания INT 33h.

Функция 00h – сброс драйвера и чтение состояния

AX = 0000h ;

Выход: AX = состояние

0000h манипулятор/драйвер не установлены

FFFFh аппаратура/драйвер установлены

BX = число клавиш

0000h отличается от двух

0002h две клавиши (большая часть драйверов)

0003h трехкнопочная мышь Mouse Systems/Logitech

FFFFh две кнопки

Функция 01h – отображение курсора мыши.

AX = 0001h

Функция 02h – удаление курсора мыши с экрана.

AX = 0002h

Функция 03h – считывание координат курсора мыши и состояния кнопок

AX = 0003h

Выход:

BX = состояние кнопок, CX = столбец, DX = строка

Примечание: в текстовых режимах все координаты указываются как произведения размера знакоместа, обычно 8х8 пикселей, на номер знакоместа.

Функция 04h – позиционирование курсора

AX = 0004h, CX = столбец, DX = строка

Примечание: строка и столбец округляются отбрасыванием до ближайшего меньшего целого, кратного размеру знакоместа (в текстовых режимах 8х8).

Функции 07h, 08h – задание области перемещения курсора по горизонтали и вертикали

AX = 0007h, CX = минимальный столбец/строка, DX = максимальный столбец/строка

Функции 09h, 0Ah – задание формы курсора в графическом и текстовом режимах

Функция 0Ch – задание условия вызова программы обработки прерывания

AX = 000Ch, CX = маска вызова (см. ниже), ES:DX – FAR-указатель на подпрограмму обработки.

Отдельные разряды маски вызова имеют следующий формат (Табл.5.1)

Таблица 5.1 Формат маски вызова

Бит

Описание

0

вызов, если мышь перемещается

1

вызов, если нажата левая кнопка

2

вызов, если отпущена левая кнопка

3

вызов, если нажата правая кнопка

4

вызов, если отпущена правая кнопка

5

вызов, если нажата средняя кнопка

6

вызов, если отпущена средняя кнопка

7-15

не используются

Значения, с которыми вызывается подпрограмма-обработчик:

AX = маска условия (тот же формат, что и в маске вызова)

BX = состояние кнопок

CX = столбец курсора

DX = строка курсора

SI = число импульсов при движении по горизонтали

DI = число импульсов при движении по вертикали

Функция 0Fh – задание скорости перемещения курсора

AX = 000Fh

CX = число импульсов на 8 пикселей по горизонтали (по умолчанию 8)

DX = число импульсов на 8 пикселей по вертикали (по умолчанию 16)

Функция 13h – задание порога установки двойной скорости

AX = 0013h, DX = порог изменения скорости в импульсах в секунду. По умолчанию 0000h = 64/сек.

Примечание: если скорость движения мыши превышает установленный порог, то скорость перемещения курсора на экране удваивается.

Функция 14h – замена программы прерывания

Функция 1Ah – задание чувствительности мыши

AX = 001Ah

BX = горизонтальная скорость (см. функцию 0Fh)

CX = вертикальная скорость (см. функцию 0Fh)

DX = порог удвоения скорости перемещения (см. функцию 13h)

Функция 1Ch – установка частоты поступления запросов на прерывание

AX = 001Ch

BX = частота (см. ниже)

Частота поступления запросов на прерывание:

00h прерывания запрещены

01h 30 прерываний в секунду

02h 50 прерываний в секунду

03h 100 прерываний в секунду

04h 200 прерываний в секунду

Функция 1Dh – установка активной видеостраницы.

AX = 001Dh, BX = номер видеостраницы

Примечание: курсор будет отображаться на указанной странице

Пример программной реализации взаимодействия с манипулятором

Считывание координат курсора мыши:

regs.h.ah = 0x00; regs.h.al = 0x03;

int86(0x33, &regs, &regs);

printf("%d %d %d", regs.w.cx, regs.w.dx, regs.w.bx);

Проверка нажатия клавиш:

regs.h.ah = 0x00; regs.h.al = 0x03;

int86(0x33, &regs, &regs);

status = regs.w.bx;

if(status == 1){ //Нажата левая кнопка

//...действия при нажатии клавиш...

}

Позиционирование курсора мыши:

regs.h.ah = 0x00; regs.h.al = 0x04;

regs.w.cx = 10; regs.w.dx = 10;

int86(0x33, &regs, &regs);

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]