GND или цепь измеряемого сопротивления разорвана, соответствующий бит не обнулится. Поэтому в программе преобразования должен быть предусмотрен тайм-аут. Для измеряемых сопротивлений в диапазоне 0-100 кОм время определяется по формуле
T(мкс)=24,2+11×R(кОм).
Точность и линейность преобразования невысока, преобразование выполняется не быстро (до 1,12 мс) и сильно загружает процессор. Однако в отличие от «настоящих» аналого-цифровых преобразователей, этот достается даром — игровой адаптер входит в состав практически всех комбинированных плат последовательных и параллельных портов и звуковых карт.
Рис. 8.19. Канал аналогового ввода
Порт имеет разъем-GND (рис. 8.20). Замыканию кнопок соответствуют нули в битах 5–7. Аналоговые каналы можно использовать для дискретного ввода, если их входы подключить к кнопкам, замыкающим их на шину GND, и к резисторам, «подтягивающим» их к уровню + 5 В. Два джойстика (А и В) подключаются через Y-образный переходник-разветвитель. На звуковых картах через разъем «Game» вместе с джойстиками могут подключаться и внешние MIDI-устройства, используя специальный кабель-адаптер, обеспечивающий гальваническую развязку входного сигнала и ограничение выходного тока (см. рис. 8.18). Для интерфейса MIDI используются контакты 12 и 15, ранее предназначавшиеся для шин GND и +5V. Такое назначение делает безопасным подключение адаптера MIDI к «чистому» игровому порту и обычного джойстика к игровому порту с сигналами MIDI.
Таблица 8.20. Интерфейс игрового адаптера и MIDI
| Бит | Назначение | Контакт |
|---|---|---|
| 7 | Джойстик В кнопка #2 | 14 |
| 6 | Джойстик В кнопка #1 | 10 |
| 5 | Джойстик А кнопка #2 | 7 |
| 4 | Джойстик А кнопка #1 | 2 |
| 3 | Джойстик В Y-координата (Y2) | 13 |
| 2 | Джойстик В X-координата (X2) | 11 |
| 1 | Джойстик А Y-координата (Y1) | 6 |
| 0 | Джойстик А X-координата (X1) | 3 |
| - | GND | 4, 5, (12) |
| - | +5 В | 1, 8, 9, (15) |
| - | MIDI In (Rx) — вход (на звуковой карте) | 15 |
| - | MIDI Out (Tx) — выход (на звуковой карте) | 12 |
Рис. 8.20. Подключение датчиков к игровому адаптеру
Int 15h при AH=84h. При вызове в DX задается код подфункции:
♦ DX=0 — опрос кнопок, возвращает в AL[7:4] состояние кнопок (соответствует битам порта 201h);
♦ DX=1 — чтение координат X, Y джойстика А (в регистры АХ, BX) и В (в СХ, DX).
При ошибочном задании кода в DX устанавливается CF=1. Стандартный джойстик поддерживается и ОС Windows.
Глава 9
Интерфейсы устройств хранения