Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Клавиатура. Клавиатурный буфер




Клавиатура – это отдельное символьное устройство с микропроцессорным управлением. При включении питания клавиатура устанавливается в исходное состояние. Затем выполняется автотест, который проверяет схемы и память клавиатуры.

После прохождения теста клавиатура начинает работу. Работой клавиатуры управляет специальная электрическая схема – контроллер клавиатуры. В его функции входит распознавание нажатой клавиши и помещение закрепленного за ней кода во входной регистр (порт).

В ходе работы клавиатура непрерывно проверяет, есть ли изменения в состоянии клавиши. При каждом нажатии клавиши по интерфейсу посылается однобайтовый код, который равен позиционному номеру клавиши. Этот код называется позиционным или скэн кодом.

При освобождении клавиши к ее номеру добавляется 80h и полученный позиционный код также посылается по интерфейсу, т.о. каждой клавише соответствуют 2 позиционных кода: код нажатия и код освобождения.

Если клавиша остается нажатой дольше некоторого времени, её скэн код начинает посылаться по интерфейсу через 0,1 секунду до освобождения клавиши.

Нажатие, а также отпускание одной клавиши вызывает сигнал аппаратного прерывания, заставляющий процессор прервать выполняемую программу и перейти на программу обработки прерывания от клавиатуры. Процессор совместно с сигналом прерывания получает ещё и номер вектора прерывания 09h.

Программа int 09h получив управление в результате прерывания от клавиатуры считывает из порта 60h скэн-код клавиши и анализирует его значение.

Если скэн-код принадлежит одной из управляющих клавиш и к тому же представляет собой код нажатия, в байте статуса клавиатуры устанавливается бит, соответствующий нажатой клавише. При нажатии других клавиш программа int 009h по таблице трансляции скэн-кодов в коды ASCII формирует 2х байтовый код, старший байт которого содержит скэн-код, а младший – код ASCII, т.к. за каждой клавишей закреплено не менее 2х символов, то каждому скэн-коду соответствует не менее 2х кодов ASCII.

Чтобы выбрать соответствующий ASCII код используется байт статуса клавиатуры, в котором хранится информация о нажатии клавиш Alt, Shift, Ctrl и т.п. После подачи одного позиционного кода клавиатура ожидает от компьютера подтверждения его готовности принять следующий код. Если до получения сигнала подтверждения нажаты другие клавиши, клавиатура записывает их коды в буфер. Буфер построен как циклическая очередь, работающая по принципу FIFO. Он занимает непрерывную область адресов памяти, имеет 2 указателя, которые хранят позиции головы и хвоста строки символов, находящихся в буфере в текущий момент.

Указатель на голову установлен на первый введенный символ. Указатель на хвост указывает на позицию за последним введенным символом. Когда оба указателя равны, буфер пуст.

В буфере 16 символов – размер буфера 32 байта.

Расширенные коды присвоены клавишам или комбинациям клавиш, которые не имеют представляющего их символа ASCII – это функциональные клавиши или комбинации с клавишей Alt.

Расширенные коды имеют длину 2 байта, причем первый байт всегда = 0 позволяет программе определить, принадлежит ли данный код расширенному набору. 2й байт – это номер расширенного кода.

 





Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 1331; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.