Устройство ввода типа клавиатура.


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

принцип действия клавиатуры.
Клавиатура включает в себя матрицу быстродействующих кнопочных контактов и 8 разрядный процессор Intel 8049 со встроенной ПЗУ на 4Kb. Электронная схема управления применяемая в клавиатуре реагирует на каждое нажатие клавиши и выдает соответствующий скан-код. Все клавиши на клавиатуре подключаются к матрице из 4 столбцов и 20 строк. При нажатии на клавишу замыкается контакт находящийся на пересечении строки и столбца этой матрицы. Каждые 3-5 мс микропроцессор сканирует матрицу клавиатуры и проверяет какая из линий имеет низкий уровень. Сначала сканируется 1 столбец, определяется состояние контактов в каждой строке. Если контакт замкнут, то информация об этом записывается в память микропроцессора. При замкнутом контакте точка пересечения строки и столбца имеет потенциал 0 В. Сканирование продолжается до конца 4 столбца. Каждый сканированный код записывается в буфер микропроцессора 8049, сохраняется там отражая текущее состояние клавиатуры. Скан-код — однобайтное число состоящее из 7 бит, которые несут идентификационный номер клавиши на клавиатуре. Старший бит несет информация о нажатии, если он=1 или отжатии, если он=0. появление 1-ы равнозначно прибавлению десятичного числа 128. Цепь обслуживания клавиатуры на системной плате подключена к системе прерываний. Всегда, когда эта цепь реагирует на нажатую клавишу, она вызывает возбуждение прерывания. Это прерывание передает управление обработчику прерываний клавиатуры, который получает данные от нее и сохраняет их для последующей обработки. Кроме этого обработчик прерываний обслуживает специальные комбинации клавиш такие как Ctrl+Alt+Del(сист. сброс), Ctrl+Break (прерывание выполнения команды) и т.д. когда клавиатура выдает скан-код, то вызывается аппаратное прерывание IRQ1 центральный процессор прекращает свою работу, сканирует полученный скан-код, данное прерывание обслуживается специальной программой записанной в BIOSе. Если поступает код от клавиш Alt, Ctrl, Shift, Caps Lock изменения статуса работы ПК записывается в память. Во всех остальных случаях скан-код трансформируется в код символа в соответствии с таблицей ASCII или с таблицей расширенных кодов. При этом обрабатывающая процедура включает установку клавиш или переключателей чтобы правильно определить вводимые символы. Затем введенный код помещается в буфер клавиатуры представляющий собой область памяти способный запомнить до 15 введенных символов, где они находятся до тех пор пока программа обработчик не обратиться к памяти и не заберет от туда соответствующий код. Такой буфер организован по принципу FIFO. Каждая клавиша генерирует 2 скан-кода 1 — из них код нажатия и код освобождения — клавиша опускается. В обоих случаях используется 1 и та же цепочка обработки битов, но коды освобождения состоят из 2 байтов 1-ый из которых 0F0H. Контроллер на материнской плате может не только принимать, но и передавать данные, чтобы сообщать клавиатуре определенные параметры. Например частоту повтора нажатия клавиши. Кроме того контроллер отвечает не только за генерирование скан-кодов, но и за выполнение функций самоконтроля и проверки нажатия клавиши во время загрузки ОС. Процесс самоконтроля отображается однократным миганием 3 индикаторов во время выполнения программы POST. Т.о. выполняется идентификация и тестирование клавиатуры в процессе загрузки ОС. Если держать клавиши > 0,5 с, то генератор начинает выдавать соответствующий код сканирования с частотой 10 раз в секунду. ASCII символ и код сканирования для 1-го нажатия клавиши считывается из буфера прерываний INT16. Это прерывание вызывается прикладной программой или ОС. Оно заставляет BIOS выполнить подпрограмму ввода/вывода с клавиатуры. Программа ввода с клавиатуры читает буфер клавиатуры и помещает коды ASCII и сканирования в буфер ЦП. Затем подпрограмма считывает статус данных для определения, не нажаты ли клавиши Alt, Ctrl, Shift. Затем отправляет полученный символ соответствующей прикладной программе. Эта программа использует символ, символьную строку или числовой код и посылает соответствующие сигналы на активное устройство вывода, которым может быть и принтер. Когда вводятся параметры, последний код вывода на экран опускается.

Загрузка...