http://npc-news.ru/

Организация ввода данных с клавиатуры. 

Микропроцессор 8048 выполняет :
слежение за нажатиями клавиш и передачи их состояния процессору.
самодиагностику (после включения питания компьютера),
проверку нажатия клавиш и противодребезговую защиту (что не позволяет воспринимать одну нажатую клавишу как две).
буферизацию до 20 нажатий клавиш, если центральный процессор не может их принять сразу.
Процедура ввода с клавиатуры системы BIOS в ПЗУ имеет собственный буфер. Буфер клавиатуры может содержать 20 символов, а буфер системы BIOS — только 15.

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

Таким образом, имеются различные коды для нажатия и освобождения клавиш.
Для работы с клавиатурой используются порты и прерывания. Когда выполняется какое-либо действие с клавишей(нажатие или освобождение), процессор клавиатуры обнаруживает его и запоминает в своем буфере. Затем, процессор клавиатуры формирует прерывание с номером 9. В ответ на прерывание служебная процедура системы BIOS в ПЗУ считывает код сканирования клавиши из порта клавиатуры (порт номер 96(60h)) и затем пересылает в порт клавиатуры команду очистить буфер процессора клавиатуры. Если системный блок не реагирует на прерывания клавиатуры, то коды сканирования накапливаются в буфере процессора клавиатуры,

Специальный код сканирования 255, шестнадцатеричное значение FF, используется блоком клавиатуры, для сообщения, что его буфер заполнен.

Клавиатура выполняет еще и функцию повторения клавиши. Блок клавиатуры следит за тем, сколько времени клавиша остается нажатой и формирует сигнал повторения. Функция повторения распространяется на все клавиши блока клавиатуры.
Процедуры системы BIOS в ПЗУ могут распознавать отличие повторных нажатий клавиши от повторения сигнала удерживаемой в нажатом состоянии клавиши, путем анализа кодов сканирования освобожденной клавиши. Если для одной и той же клавиши получены два кода нажатой клавиши и между ними не было кода освобожденной клавиши, значит клавиша удерживается процедурами системы BIOS для подавления функции повторения тех клавиш, которым она не нужна, таких как, например,
клавиша смещения (shift).

Таким образом, Блок клавиатуры занимается физической стороной, механизмом функционирования клавиатуры, а программы системы BIOS в системном блоке выполняют все логические операции по интерпретации действий клавиатуры.

Каждый переданный компьютеру скан-код (числовое значение) обрабатывается и преобразовывается в код ASCII, который и применяется для передачи смыслового содержания нажатой клавиши. Скан-код для стандартной клавиатуры (84 клавиши) имеет размер 1 байт, а для расширенной — от 2 до 4 байтов. Чтобы отличить расширенный скан-код от обычного, в качестве первого байта всегда выступает значение E0h (например, код левой клавиши <Аlt> равен 38h, а правой — E0h,38h). Кроме уникального кода нажатия, каждая клавиша имеет свой код отпускания. Как правило, этот код состоит из двух байт, первый из которых всегда равен F0h. На расширенных клавиатурах коды отпускания имеют размер три байта, где первые два байта всегда равны EOh,FOh, а третий байт является последним байтом скан-кода нажатия.


Добавить комментарий

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>