Ноутбуки   
   Софт   
   Компьютеры   
   Компьютерные фирмы   
  Меню сайта

BIOS

SSD-накопители

Акустика для ПК

Видеокарты

Видеокарты - История

Джойстики, клавиатуры и мыши

Дигитайзеры

Жесткие диски

Жесткие диски - история

Звуковые карты

Именитые люди компьютерной индустрии

История компьютеров

Карманные компьютеры

Компьютер десктоп - готовая сборка

Компьютерные фирмы

Компьютеры в теории и практике

Копировальные аппараты

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

Маршрутизаторы, коммутаторы, хабы

Материнские платы

Модемы

Модули памяти

Мониторы

Мониторы и видеокарты - история

Новости

Ноутбуки и субноутбуки

Оборудование беспроводной связи, bluetooth, wi-fi

Оптические накопители CD, DVD, Blueray

Оргтехника

Память - история

Плоттеры

Принтеры

Процессоры

Процессоры - история

Сетевые карты

Сетевые фильтры, ИБП

Сети

Сканеры

Сменные жесткие диски

Советские ПК

ТВ-тюнеры

Типы компьютеров

Устройства архивации данных и стримеры

Факс

Флоппи-дисководы

Флэшки и всяко-разно

Шины и чипсеты - история




Главная страница Прайс-лист Интернет-магазин

Основные принципы функционирования клавиатуры

На мой взгляд, один из наиболее впечатляющих моментов конструкции IBM/PC - это способ работы с клавиатурой. Выбранный подход в равной мере прост и элегантен и программистам необходимо знать две вещи, связанные с вводом информации от клавиатуры, следующие из этого конструктивного подхода.
На электронном уровне клавиатура IBM/PC представляет собой небольшой самостоятельный компьютер. Внутри блока клавиатуры размещается микропроцессор 8048 фирмы "Интел", который выполняет задачу слежения за нажатиями клавиш и передачи их состояния. Микропроцессор 8048 выполняет различные функции, включая самодиагностику (после включения питания компьютера), проверку нажатия клавиш и противодребезговую защиту (что не позволяет воспринимать одну нажатую клавишу как две).
Микропроцессор 8048 позволяет также буферизовать до 20 нажатий клавиш, если центральный процессор не может их принять сразу. Обычно этот буфер совершенно пуст, поскольку ситуации, когда центральный процессор не успевает отреагировать на запрос клавиатуры.
Вы, вероятно, слышали предупреждающий звуковой сигнал, когда нажатие Вами клавиш опережало возможности программы по их вводу. Это не связано с заполнением буфера клавиатуры. Процедура ввода с клавиатуры системы BIOS в ПЗУ имеет собственный буфер и звуковой сигнал раздается в случае заполнения этого буфера. Буфер клавиатуры может содержать 20 символов, а буфер системы BIOS - только 15. По мере изучения клавиатуры мы рассмотрим как код нажатой клавиши попадает сначала в буфер клавиатуры, затем в буфер BIOS и, наконец, в программу.
Блок клавиатуры не связывает с клавишами никаких конкретных значений. Вместо этого, блок клавиатуры идентифицирует по ее номеру или коду сканирования. Все клавиши имеют коды сканирования от 1 до 83. На рис. 10.1. показаны коды, соответствующие всем клавишам.
При нажатии клавиши блок клавиатуры передает ее код сканирования центральному процессору. Когда клавиша отпускается, клавиатура снова передает ее код, но увеличенный на 128 (или шестнадцатиричное значение 80). Таким образом, имеются различные коды для нажатия и освобождения клавиш.
Для работы с клавиатурой используются порты и прерывания. Когда выполняется какое-либо действие с клавишей (нажатие или освобождение), процессор клавиатуры обнаруживает его и запоминает в своем буфере. Затем, процессор клавиатуры формирует прерывание с номером 9. В ответ на прерывание служебная процедура системы BIOS в ПЗУ считывает код сканирования клавиши из порта клавиатуры (порт номер 96) и затем пересылает в порт клавиатуры команду очистить буфер процессора клавиатуры. Если системный блок не реагирует на прерывания клавиатуры, то коды сканирования накапливаются в буфере процессора клавиатуры, хотя при нормальной работе этого не должно происходить. Специальный код сканирования 255, шестнадцатиричное значение FF, используется блоком клавиатуры, для сообщения, что его буфер заполнен.
Поскольку информация о нажатии клавиши поступает в системный блок от клавиатуры через порт, любая программа, имеющая доступ к порту, может непосредственно общаться с клавиатурой. На практике, однако, это неприменимо, так как блок клавиатуры вырабатывает еще и прерывания, которые обрабатываются системой BIOS в ПЗУ. Однако, просто из любопытства, можно написать небольшую программу на Бейсике, читающую порт клавиатуры и сообщающую, что она там находит. Ниже приведен фрагмент этой программы.
Поскольку эта программа состязается с системой BIOS за получение информации от клавиатуры, ее работа несколько хаотична. Но если запустить эту программу и нажимать на клавиши, она все же зарегистрирует несколько кодов сканирования.
100 REM Программа на Бейсике, пытающаяся считывать коды сканирования
клавиатуры
110 X=INP(96) 'чтение порта клавиатуры
120 THROW.AWA4$ = INKEY$ 'отбросить любые коды,считан системой BIOS
130 IF X=0 THEN GOTO110 'если данных нет - продолжать ожидание
140 PRINT
150 PRINT "Код сканирования клавиатуры"; XMOD128;'сообщить код
160 IF X > 128 THEN PRINT "клавиша освобождена";
170 IF X > 129 THEN PRINT "клавиша нажата";
180 GO TO 110
Клавиатура IBM/PC выполняет еще и функцию повторения клавиши. Блок клавиатуры следит за тем, сколько времени клавиша остается нажатой и формирует сигнал повторения. Функция повторения распространяется на все клавиши блока клавиатуры.
Процедуры системы BIOS в ПЗУ могут распознавать отличие повторных нажатий клавиши от повторения сигнала удерживаемой в нажатом состоянии клавиши, путем анализа кодов сканирования освобожденной клавиши. Если для одной и той же клавиши получены два кода нажатой клавиши и между ними не было кода освобожденной клавиши, значит клавиша удерживается процедурами системы BIOS для подавления функции повторения тех клавиш, которым она не нужна, таких как, например, клавиша смещения (shift).
Теперь Вам должны быть понятны основы того, как IBM/PC работает с клавиатурой. Блок клавиатуры сообщает, что происходит с клавиатурой: какие клавиши нажимаются, какие освобождаются и, через определенный промежуток времени, какие удерживаются в нажатом состоянии. Система BIOS в ПЗУ интерпретирует получаемую от блока клавиатуры информацию, придавая ей определенный смысл. Таким образом, имеет место очень ясное и четкое разделение труда. Блок клавиатуры занимается физической стороной, механизмом функционирования клавиатуры, а программы системы BIOS в системном блоке выполняют все логические операции по интерпретации действий клавиатуры.
Большинство пользователей даже не знает, что клавиатура IBM/PC передает сигналы не только о нажатии, но и об освобождении клавиши, поскольку такая информация обычно скрыта от пользователя. Ее можно увидеть, запустив тест клавиатуры из набора диагностических программ IBM/PC. Если присмотреться, можно заметить, что изображение на экране меняется при каждом нажатии, освобождении клавиши или когда клавиша удерживается в нажатом состоянии достаточно долго для того, чтобы начала действовать функция повторения.

Беспроводная мышь - то, что мне нужно было

Деревянная мышка и клава

Джойстик (Joystick), или рычажный манипулятор

Как подключить джойстик, акустическую систему или мышь

Клавиатура

Клавиатуры современных домашних ПК

Манипуляторы, или координатные устройства ввода информации

Мыши на свободе, ML-1600 и ML-1000 – новые модели манипуляторов от SVEN

Мышка - история, способы подключения к компьютеру

Мышь Delux DLM-358B

Определение смысла нажатых клавиш

Основные принципы функционирования клавиатуры

Трекбол (Trackball)

Трекпойнт (TrackPoint)




Немного рекламы:


















































































Rambler's Top100