Порт PS/2 (мышь и клавиатура)
Схема цоколевки
Вилка (устанавливается на кабеле)
|
Розетка (устанавливается на корпусе компьютера)
|
|
|
Названия и функциональные назначения выводов
№ вывода
|
Обозначение
|
Описание
|
1
|
Data
|
Data (передача данных)
|
2
|
n/c
|
Not Connected (не используется)
|
3
|
GND
|
Ground (корпус)
|
4
|
+5VDC
|
Питание, +5 В
|
5
|
Clock
|
Тактовая частота передачи данных
|
6
|
n/c
|
Not Connected (не используется)
|
Где посмотреть протокол мыши и клавиатуры?
Обработчик аппаратного прерывания обязан, помимо обработки приходящих от мыши данных, также восстанавливать в порту биты питания. Эти биты устанавливаются в порту базовый_адрес+4, который называется Modem Control Register. Известны мыши, для питания которых нужно выдавать в этот порт число 8, число 0Bh, а также мышь, которая в зависимости от этого числа меняет свой режим работы (0B-MS, 08-PC). Драйвер TRUEDOX обеспечивает это переключение по функциям A0 (PC mouse) и A1 (MS mouse).
Есть три распространенных протокола обмена.
Microsoft Mouse
Протокол обмена следующий: 1200,N71. Обеспечивает информацию о 2 клавишах. По каждому событию выдается пачка из 3 байт:
1
|
--
|
1
|
LB
|
RB
|
Y7
|
Y6
|
X7
|
X6
|
2
|
--
|
0
|
X5
|
X4
|
X3
|
X2
|
X1
|
X0
|
3
|
--
|
0
|
Y5
|
Y4
|
Y3
|
Y2
|
Y1
|
Y0
|
LB, RB - состояние клавиш, нажатая клавиша = 1. Остальные значащие биты- относительное пеpемещение в дополнительном коде со времени последней посылки.
Определить наличие мыши можно следующим образом: в порт xFC записать число 8, подождать, а потом опять 0Bh. Hа запись числа 0Bh мышь реагирует посылкой одного или нескольких байтов, среди которых обязательно должен быть байт 4Dh (буква 'M' в таблице ASCII)
PC Mouse System
Протокол обмена следующий: 1200,N81 Обеспечивает информацию о 3 клавишах. По каждому событию выдается пачка из 5 байт:
1
|
1
|
0
|
0
|
0
|
0
|
LB
|
MB
|
RB
|
2
|
X7
|
X6
|
X5
|
X4
|
X3
|
X2
|
X1
|
X0
|
3
|
Y7
|
Y6
|
Y5
|
Y4
|
Y3
|
Y2
|
Y1
|
Y0
|
4
|
X7
|
X6
|
X5
|
X4
|
X3
|
X2
|
X1
|
X0
|
5
|
Y7
|
Y6
|
Y5
|
Y4
|
Y3
|
Y2
|
Y1
|
Y0
|
LB, MB, RB - состояние клавиш, нажатая клавиша = 0. Остальные значащие биты- относительное пеpемещение со времени последней посылки в дополнительном коде в двух частях, которые надо суммировать. Видимо, это связано с тем, чтобы не использовать X7 и Y7, чтобы не пересекаться с первым ключевым байтом. Способ определения наличия мыши в этом режиме мне неизвестен.
PS/2 Mouse
Подобен клавиатурному.
***
|