Системы ввода и обработки информации. Устройства ввода символьной информации.


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

Клавиатура IBM PC включает в себя матрицу быстродействующих кнопочных контактов и 8-разрядный микропроцессор Intel 8048 со встроенным ПЗУ на 2 Кбайт и электронную схему управления, которая воспринимает каждое нажатие на клавишу и выдает скан-код.

Клавиши на клавиатуре подключены к матрице из 4 колонок и 23 строк. При нажатии на клавишу замыкается контакт, находящийся на пересечении строки X и колонки Y матрицы. Каждые 3-5 мс микропроцессор 8048 сканирует матрицу клавиатуры, проверяя, какая из линий имеет низкий уровень. Сначала сканируется первая колонка и состояние контактов каждого ряда в этой колонке читается и сохраняется в памяти микропроцессора 8048. Если контакт замкнут, эта точка (пересечение и колонки и строки) будет иметь потенциал 0 вольт. Сканирование продолжается, пока не будут прочитаны все четыре колонки. Каждый код сканирования запоминается в буфере микропроцессора 8048 отражая состояние всей клавиатуры.

Скан-код – это однобайтовое число, каждые 7 бит которого представляют идентификационный номер присвоенный каждой клавише. Старший бит кода несет информацию о нажатии клавиши (бит=1) или ее отжатии (бит=0), что равнозначно прибавлению десятичного числа 128.

Цепь обслуживания клавиатуры на системной плате подключена к системе прерываний. Всегда, когда эта цепь регистрирует нажатие клавиши, она возбуждает прерывание в системе. Это прерывание передает управление обработчику прерываний от клавиатуры, которой получает данные от нее и сохраняет их для дальнейшего использования. Обработчик прерываний обслуживает так же специальные случаи, такие как системный сброс <CtrlAltDel>, прерывание выполнения программы <CtrlBreak> и т.д.

Когда клавиатура выдает скан-код, то вызывается прерывание клавиатуры INT 9, ЦП прекращает свою работу и сканирует полученный скан-код. Если поступает код, например, от клавиш INS или Caps Lock, то изменение статуса работы клавиатуры записывается в память IBM PC, иначе формируется код символа. После этого выданный код помещается в буфер клавиатуры, расположенной в ОЗУ и способный хранить 15 символов с процедурой обработки по принципу “первый пришел – первый обслужился”.

Имеется несколько комбинаций клавишей, которые не генерируют скан-коды, а выполняют специальные функции: < CtrlBreak >,<Print Screen>,< CtrlAltDel >,<Sys Rq>.

Если держать клавишу нажатой больше 0,5 сек, то микропроцессор 8048 вырабатывает соответствующий код сканирования 10 раз в секунду.

ASCII символ и код сканирования для одного нажатия клавиши считываются из буфера прерываний INT 16. Сигнал INT 16 вызывается программой или ОС. Он заставляет BIOS выполнить подпрограмму ввода-вывода с клавиатуры. Программа ввода с клавиатуры читает буфер клавиатуры и помещает коды ASCII и сканирования в регистр ЦП. Затем подпрограмма считывает статус данных для определения не нажаты ли спецклавиши (Ctrl,Alt,Shift) и посылает ASCII код символа вызывающей программе. Эта программа использует символ, символьную строку или числовой ввод и посылает символ на активное устройство вывода (экран или принтер). В случае ввода паролей, чтобы не было видно изображения, соответствующего нажатой клавише, последний ключ при программировании надо опустить.