Уроки 41 — 45процессор. память. устройства ввода и вывода§34. процессор. §35. память. §36. устройства ввода. §37. устройства вывода

Контроллер клавиатуры (вычисления) - keyboard controller (computing)

Как чистить клавиатуру

Что такое клавиатура для вас? Это панель, подключенная к системному блоку, содержащая более ста клавиш? Все так, но и не совсем. Современные клавиатуры — это настоящий венец искусства инженерной и конструкторской мысли.

И все же любая клавиатура должна быть удобной для использования, чтобы не нарушались правила работы за компьютером.

Клавиатуры, которыми пользуемся мы с вами, постепенно уходят в прошлое. Большое распространение получили беспроводные клавиатуры. Но и это не все. Данные устройства могут иметь самую различную форму, расположение кнопок. Они могут быть разделены на две части под правую и левую руки. Все эти новшества являются итогом многолетних изысканий специалистов.

Тенденции развития сенсорных экранов также не обошли стороной и клавиатуры. При желании любой может сейчас приобрести себе сенсорную клавиатуру. Она, конечно, стоит недешево, но имеет один огромный плюс: головная боль, как чистить клавиатуру, волновать уже не будет.

Не все могут позволить себе такие вершины инженерной мысли, а кто-то просто не захочет тратить деньги, поэтому давайте рассмотрим процедуру чистки данного периферийного устройства.

Существует масса способов, я подскажу вам самый простой и самый оригинальный. Первый откроет вам тайну, как чистить клавиатуру пылесосом. Бессмысленно пылесосить клавиатуру прямо там, где она лежит. Но будет очень эффективно, если вы сделаете это, держа клавиатуру кнопками вниз. В идеале кто-то должен помогать вам. Он должен держать клавиатуру и легонько хлопать сверху по крышке. Мощный пылесос наверняка удалит все крупные частицы мусора, но не сможет очистить грязь, налипшую на кнопки.

В этом поможет более изящный способ. Берем в руки тонкую линейку или отвертку (любой другой плоский и тонкий предмет подойдет тоже) и начинаем выковыривать кнопки. Делайте это аккуратно и не забудьте, что следует отметить положение клавиш (сфотографируйте их или зарисуйте). Достав все кнопки, очистите весь мусор с устройства. Сами кнопки можно почистить вручную, а можно положить в носок и завязать. Сверток можно кинуть в стиральную машину с остальным бельем, не бойтесь, ничего страшного не случится.

После стирки высушите кнопки и установите их на свои места.

Надеюсь, теперь вы знаете, что такое клавиатура и насколько важно это устройство, входящее в состав компьютера. Относитесь к клавиатуре бережно, и она не подведет вас в самый ответственный момент

Надеюсь у меня получилось ответить на вопрос клавиатура что это

Программное обеспечение контроллера клавиатуры на материнской плате

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

Программное обеспечение контроллера клавиатуры предоставляет ряд функциональных возможностей:

  • Обработка нажатия клавиш: контроллер клавиатуры отвечает за идентификацию клавиш, которые были нажаты пользователем. Это позволяет компьютеру распознавать вводимые символы и выполнять соответствующие команды или функции.
  • Управление режимами работы: контроллер клавиатуры позволяет переключать клавиатуру между различными режимами работы. Например, существуют режимы работы, в которых нажатия клавиш записываются в буфер, а не передаются непосредственно в операционную систему. Это позволяет пользователю вводить несколько символов и исправлять ошибки перед отправкой текста.
  • Обработка комбинаций клавиш: программное обеспечение контроллера клавиатуры обеспечивает обработку комбинаций клавиш, таких как сочетания клавиш Ctrl + Alt + Del. Такие комбинации могут использоваться для выполнения специальных команд, например, для вызова меню выбора опций или перезагрузки компьютера.
  • Настройка клавиатуры: с помощью программного обеспечения контроллера клавиатуры можно настраивать различные параметры работы клавиатуры, такие как скорость набора текста, реакция на удерживание клавиш и другие.

В большинстве случаев программное обеспечение контроллера клавиатуры встроено непосредственно в операционную систему компьютера. Оно работает в фоновом режиме и обрабатывает сигналы от клавиатуры, преобразуя их в соответствующие команды для операционной системы или приложений.

Кроме того, некоторые материнские платы имеют специальное программное обеспечение, которое позволяет расширить возможности контроллера клавиатуры. Это может быть, например, программа для настройки подсветки клавиш, настройки макросов или изменения раскладки клавиатуры.

Примеры программного обеспечения для контроллера клавиатуры на материнской плате
Программа
Описание

MSI Mystic Light
Программа, позволяющая настраивать подсветку клавиш на клавиатурах с поддержкой технологии Mystic Light
Logitech Gaming Software
Программа, предоставляющая возможности настройки клавиш и макросов на игровых клавиатурах Logitech
Razer Synapse
Программа, которая позволяет настраивать клавиши, подсветку и другие функции на клавиатурах Razer

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

Устранение простых неисправностей

 В дешевых клавиатурах иногда начинают заедать клавиши – те, которые нажимают чаще всего (например «Enter»). Это происходит вследствие выработки направляющих и выступов в клавише и верхней крышке клавиатуры.

Они трутся друг о друга и изнашиваются. К тому же, там могут появиться заусенцы. Если нажимать на клавишу не строго вертикально, а под некоторым углом  (что чаще всего и бывает), она будет «затирать» и заедать. Чтобы этого не было, нужно смазать изношенные трущиеся части капелькой силиконового масла.

Иногда по клавиатурам бьют слишком сильно. Это бывает в процессе игры, когда монстры обступили со всех сторон.

Со временем направляющая в верхней крышке (это опять же относится к дешевым клавиатурам) может растрескаться, и клавиша будет выпадать из гнезда.

И в этом случае можно помочь. На выступ с направляющими нужно надеть проволочный бандаж. Он должен сидеть достаточно плотно, чтобы не соскакивать при работе. Можно даже вплавить его в верхнюю крышку нагретым паяльником.

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

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

Немного о матрице

Вот, собственно, такие основные устройства, задействованные в клавиатуре. Стоимость любой микросхемы, включая процессор, сегодня копеечная, поэтому бюджетное устройство ввода можно приобрести за символическую стоимость.

Самые дешевые – мембранные клавиатуры. Все контакты и надписи помещены на одной трехслойной мембране, при нажатии на соответствующую область которой, замыкается контакт и подается сигнал контроллеру.

Как правило, у таких устройств даже нет кнопок в физическом понимании: просто плоская панелька, на которую нужно надавливать. Впрочем, в компьютерной технике такой тип используется редко.

Строение экземпляров подороже, более сложное: кнопки уже присутствуют физически. У купольных конструкций, каждая кнопка оборудована отдельной микромембраной с контактом. Достоинство в том, что при выходе из строя одной из кнопок, остальные продолжают работать.

Самые дорогие – механические. У них изнутри каждая кнопка оборудована собственными выключателем и пружиной. У большинства моделей можно настроить чувствительность и ход клавиш.

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

Такая панелька с кнопками прослужит дольше: пользователь и через несколько лет сможет различить пометки на клавишах, поэтому необходимости в замене устройства ввода не будет.

Как устроена клавиатура?

Клавиатура (keyboard) – пожалуй, основное устройство, с помощью которого информация вводится в компьютер.

Большинство современных клавиатур – мембранного типа.

Мембрана – это «бутерброд» из трех пластин тонкого и гибкого пластика.

На крайние из них нанесены токопроводящие дорожки и контактные площадки («пятачки»). Средний слой – без дорожек и «пятачков», но с отверстиями в районе контактных площадок.

В исходном состоянии, когда ни одна клавиша не нажата, «пятачки» не соприкасаются, так как между ними находится изоляционная пластина.

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

По существу, мембрана представляет собой больше сотни двухполюсных переключателей.

Можно было бы просто ввести все их выводы в управляющий контроллер. Но тогда он должен будет иметь очень много выводов. Поэтому поступают другим способом.

Все контактные пары организованы в виде матрицы со строками и столбцами. Каждый переключатель находится в узле матрицы, на пересечении строки и столбца. При его замыкании контроллер отслеживает изменение сигнала в конкретной строке и конкретном столбце. Таким образом, каждый символ на клавиатуре вызывает срабатывание только в «своем» узле матрицы.

Раньше, на старых клавиатурах, переключатели были механическими, в виде кнопок без фиксации.

При износе или неисправности можно было по отдельности заменять их. Это было удобно. Такие устройства имели очень большой ресурс.

Сигналы со строк и столбцов заводятся в контроллер, и в этом случае — при матричном способе — требуется гораздо меньше выводов.

Существует такая вещь, как дребезг контактов. При нажатии на контакт он замыкается и размыкается несколько раз с определенной частотой в течение некоторого времени. Для борьбы с этим явлением используются программные способы.

В частности, каждый узел матрицы опрашивается контроллером дважды с определенным временным интервалом. Если значения сигналов при обоих опросах совпали – делается вывод о срабатывании переключателя. Если не совпали – делается вывод о ложном срабатывании (т.е. что срабатывания не было).

Алгоритмы опроса «прошиты» в управляющем контроллере. Раньше он имел вид 40-выводной довольно большой микросхемы. Теперь чаще всего это бескорпусная микросхемка, залитая капелькой черного компаунда.

Контроллер управляет и светодиодными индикаторами клавиатуры.

Как работает контроллер клавиатуры в ноутбуке?

Контроллер клавиатуры в ноутбуке играет важную роль в обеспечении взаимодействия пользователя с устройством через клавиатуру. Он отвечает за передачу сигналов нажатых клавиш на плату материнской карточки ноутбука, где происходит декодирование и обработка этих сигналов.

Работа клавиатурного контроллера начинается с регистрации нажатой клавиши. Когда пользователь нажимает клавишу на клавиатуре, контроллер считывает сигнал, который передается через провода или через проводящие пластинки в мембране клавиатуры. Этот сигнал содержит информацию о нажатой клавише и ее расположении.

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

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

Контроллер клавиатуры также может отвечать за другие функции, такие как управление подсветкой клавиатуры, настройками мультимедийных клавиш и дополнительными функциональными клавишами.

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

История

Клавиатура к первым ПК (IBM PC и IBM PC/XT, 1981 год) подключалась по однонаправленному (передача данных только в одну сторону — от клавиатуры к компьютеру) интерфейсу, программное взаимодействие с которым осуществлялось с помощью двух портов микросхемы параллельного интерфейса 8255: порт A (он был доступен по адресу 60h) использовался как регистр принятых от клавиатуры данных, а порт B (61h) содержал биты, управляющие как клавиатурой, так и другими устройствами. Нажатие и отпускание клавиш кодировалось способом, ныне известным как таблица скан-кодов № 1.

В компьютерах IBM PC/AT (первые из них появились в 1984 году) от применения микросхемы 8255 отказались. Для обеспечения взаимодействия с клавиатурой был применён микроконтроллер 8042. Изменился и сам физический интерфейс: он стал двунаправленным. Хотя клавиатура по-прежнему подключалась через 5-контактный DIN-коннектор, она была несовместимой с клавиатурами IBM PC и IBM PC/XT (хотя в переходный период выпускалось большое число клавиатур, пригодных для использования с обоими типами интерфейсов; выбор нужного интерфейса осуществлялся специальным переключателем). В клавиатурах IBM PC/AT была использована новая таблица скан-кодов, получившая № 2.

В 1987 году IBM начала выпуск семейства ПК IBM PS/2. В этих компьютерах использовалась та же самая микросхема 8042, однако её функции были расширены: она обеспечивала подключение не только клавиатуры, но и мыши, для которой был добавлен второй коннектор. Электрически интерфейс остался тем же самым, что на IBM PC/AT, однако коннекторы поменялись: вместо 5-контактных DINов стали использовать 6-контактные MiniDINы. С помощью переходника клавиатура IBM PC/AT могла быть подключена к PS/2, и наоборот. IBM разработала и новую таблицу скан-кодов — № 3, но клавиатуры, пригодные для использования с разными типами ПК, обеспечивали программное переключение используемой таблицы.

Хотя сами компьютеры PS/2 не смогли завоевать рынок, простой и достаточно эффективный интерфейс PS/2 стал стандартом де-факто, быстро вытеснив близкий к нему, но менее функциональный (из-за отсутствия поддержки мыши) контроллер IBM PC/AT. Он используется по сей день, хотя на новых системных платах он уже может отсутствовать: всё чаще клавиатура и мышь подключаются по интерфейсу USB (впрочем, BIOS обычно способен эмулировать функции контроллера интерфейса PS/2, связанные со взаимодействием с клавиатурой и мышью, даже если используются устройства, подключенные по шине USB). Что же касается набора скан-кодов, то все современные клавиатуры работают с таблицей № 2 (использовавшейся в IBM PC/AT), поддержка двух других таблиц не гарантирована, да и не имеет особого смысла.

Помимо подключения клавиатуры и мыши, контроллер интерфейса PS/2 обеспечивает выполнение ещё ряда функций; например, он управляет вентилем линии A20 или позволяет выполнить сброс процессора ПК. Достоверно неизвестно, когда именно эти функции были на него возложены, однако современные контроллеры их поддерживают.

Следует заметить, что контроллер интерфейса PS/2, описываемый в этой статье, часто ошибочно именуют контроллером клавиатуры. Это абсолютно неверно. Последний находится внутри самой клавиатуры, отслеживает нажатия и отпускания клавиш и посылает по интерфейсу PS/2 соответствующие скан-коды, а также принимает по этому интерфейсу команды и выполняет их (например, переключает светодиоды или меняет скорость автоповтора нажатия клавиш). Контроллер интерфейса PS/2 никакого отношения к клавиатуре или мыши как таковой не имеет и располагается на системной плате компьютера; к нему можно подключить абсолютно любое устройство, использующее интерфейс PS/2

Задача этого контроллера — принимать данные от устройства (клавиатуры, мыши, ещё чего-нибудь — неважно) и позволять процессору их считывать, а также принимать данные от процессора и передавать их устройству.

Некорректно называть контроллер PS/2 и контроллером 8042. Во-первых, 8042 — это микроконтроллер, который мог быть запрограммирован на решение самых разных задач, и его применение для управления интерфейсом PS/2 в составе персонального компьютера — лишь одно из многих возможных. Во-вторых, уже давным-давно функции контроллера PS/2 выполняет другая микросхема. Наконец, современные контроллеры зачастую выполняют массу других функций, например, связанных с поддержкой ACPI. По всем этим причинам корректно говорить лишь о контроллере PS/2, совместимом с точки зрения пользователя с контроллером, реализованным в IBM PC/AT на микросхеме 8042.

Действующие лица

При работе с клавиатурой мы имеем следующих участников:

  • Процессор. Обрабатывает прерывание IRQ1 от контроллера клавиатуры. Общается с контроллером клавиатуры используя порты ввода-вывода 0x64 и 0x60.
  • Контроллер клавиатуры. Расположен на материнской плате компьютера. Представляет собой микросхему i8042. Общается с процессором по системной шине (порты ввода-вывода 0x64 и 0x60). Генерирует прерывание IRQ1. Общается с клавиатурой по протоколу, разработанному фирмой IBM: принимает от нее скан-коды при нажатии и отпускании клавиш. Может принимать команды от процессора (через порт 0x64) и выполнять их. Может пересылать команды, принимаемые от процессора (через порт 0x60) клавиатуре.
  • Клавиатура. Подключена к компьютеру через разъем PS/2. Внутри содержит микросхему i8048, которая аналогична микросхеме i8042, но выполняет другие функции, а именно — сканирует клавиши клавиатуры на предмет нажатости (клавиши являются ключами, которые при нажатии замыкают линии матрицы; подробнее читайте ). При нажатии или отпускании клавиши i8048 посылает соответствующий скан-код контролеру клавиатуры (расположенному на материнской плате компьютера). Скан-коды хранятся во внутреннем ПЗУ микросхемы i8048.

В дальнейшем важно не путать понятия контроллер клавиатуры (микросхема, расположенная на материнской плате компьютера) и клавиатура (устройство с клавишами, которое подключается к системному блоку)

Часто встречающиеся неисправности клавиатур

Контактные площадки (и дорожки) покрыты тонким слоем серебра, которое со временем может окислиться. Контактное сопротивление при этом возрастет. Это может вызвать неустойчивое срабатывание некоторых клавиш.

Помочь этому горю просто – надо разобрать клавиатуру (выкрутив шурупы снизу) и достать мембрану

После этого надо осторожно очистить контактные площадки ученической стирательной резинкой

При этом окислы серебра удаляются, и контактная площадка делается более светлой.

Если устойчиво не срабатывают несколько клавиш, то причина может быть в другом. Могут появиться микротрещины в конкретной токопроводящей дорожке, соединяющей несколько «пятачков». В этом случае мембрану нужно заменить.

Но мембрана отдельно не продается, можно лишь использовать мембрану от другого устройства. Впрочем, современные клавиатуры в большинстве своем стоят недорого, и заменить ее (клавиатуру) не составит труда. Естественно, речь не идет о клавиатурах premium класса, которые стоят существенно дороже, но которые очень качественны и надежны.

Контакт может нарушиться и в другом месте – в печатном разъеме платы, на которой расположены бескорпусная микросхема и светодиоды.

Для очистки контактов, как на плате, так и на мембране, можно использовать ту же ученическую резинку. Иногда выходит из строя сама микросхема. В этом случае клавиатура подлежит замене.

Встречается еще один вид неисправности – обрыв жил кабеля. Чаще всего это происходит в месте входа кабеля в корпус клавиатуры. Это легко выявить с помощью «прозвонки» кабеля тестером.

Если выявлен обрыв жил, следует отрезать кусок кабеля дальше места обрыва (ближе к разъему). Затем надо припаять оставшийся кусок с разъемом к контактным площадкам платы, соблюдая цветовую маркировку проводов. Чаще всего такое происходит с дешевыми клавиатурами, у которых тонкие кабеля (производители экономят и на этом).

Микросхема может выйти из строя в клавиатуре с интерфейсом PS/2, которую переключили «на ходу».

И хорошо еще, если выйдет из строя только она. В худших случаях может выйти из строя контроллер интерфейса на материнской плате.

Косвенным признаком выхода из строя микросхемы клавиатуры служит тусклое свечение или мигание отдельных или всех индикаторов (светодиодов).

Напоминаем, что клавиатуру PS/2 можно переключать только в выключенном состоянии! При этом вилка кабеля питающей сети 220 В должна быть вынута из розетки. Или выключатель на блоке питания (если он есть) должен быть выключен.

Напоминаем также, что если вилка кабеля вставлена в сеть (и выключатель на блоке питания включен), то в блоке питания работает источник дежурного напряжения + 5В. Он питает часть компонентов материнской платы и клавиатуру. Это объясняет факт свечения индикаторов клавиатуры, когда компьютер не включен.

Однако не все так плохо – ведь можно использовать устройство с интерфейсом USB. USB разъем специально сконструирован так, что его можно переключать независимо от того, включено устройство и компьютер или нет. Это очень хорошая новость для забывчивых пользователей.

Скан-коды

Когда пользователь нажимает клавишу на клавиатуре, клавиатура посылает контроллеру клавиатуры т. н. скан-код — один или несколько байт, которые содержат информацию о том, какая клавиша была задействована и что именно произошло (нажали ее или отпустили). То есть при нажатии клавиши клавиатура посылает один скан-код (make), а при отпускании — другой (break). Существует три набора скан-кодов, которые так и называются: набор 1, набор 2 и набор 3 (scan codes set 1, set 2, set 3). Клавиатура XT поддерживает только набор 1. Для клавиатур, совместимых с AT-PS/2, гарантированным является только набор 2 [], однако контроллер клавиатуры умеет преобразовывать набор 2 в набор 1 (эту опцию контролера клавиатуры можно включать и выключать, об этом ниже).

Scan codes set 1

Большинство скан-кодов набора 1 (как нажатия, так и отпускания) состоит из одного байта. Код отпускания формируется так: break = make AND 0x80, где break — код отпускания, make — код нажатия, AND — побитовое И. Встречаются и двухбайтовые коды. Если код двухбайтовый, то первым байтом всегда является байт 0xE0. В таблице ниже приведено несколько примеров. Особняком стоят клавиши Insert и Pause. У Insert скан-код состоит из четырех байт, у Pause — из шести, причем кода отпускания у Pause нет.

Клавиша Код нажатия (make) Код отпускания (break)
A 0x1E 0x9E
Insert 0xE0, 0x52 0xE0, 0xD2
Print Screen 0xE0, 0x2A, 0xE0, 0x37 0xE0, 0xB7, 0xE0, 0xAA
Pause 0xE1, 0x1D, 0x45, 0xE1, 0x9D, 0xC5

Scan codes set 2

В наборе 2 большинство скан-кодов нажатия (make) однобайтовые. Коды же отпускания состоят из двух байтов, первый из которых 0xF0, а второй совпадает со скан-кодом нажатия. Как и в наборе 1, в наборе 2 встречаются двухбайтовые коды нажатия. И так же как в наборе 1, в наборе 2 первым байтом в двухбайтовом коде нажатия является 0xE0. Если код нажатия двухбайтовый, то код отпускания — трехбайтовый, причем байты идут в следующем порядке: 0xE0, 0xF0, второй байт скан-кода нажатия. И снова особняком стоят клавиши Insert и Pause. У Insert код нажатия состоит их четырех байт, код отпускания — из шести. У Pause код нажатия состоит из восьми байт, а кода отпускания нет вовсе. В таблице ниже приведены примеры скан-кодов набора 2.

Клавиша Код нажатия (make) Код отпускания (break)
A 0x1C 0xF0, 0x1C
Insert 0xE0, 0x70 0xE0, 0xF0, 0x70
Print Screen 0xE0, 0x12, 0xE0, 0x7C 0xE0, 0xF0, 0x7C, 0xE0, 0xF0, 0x12
Pause 0xE1, 0x14, 0x77, 0xE1, 0xF0, 0x14, 0xF0, 0x77

Scan codes set 3

Набор 3 выглядит лучше, чем два его предшественника, поскольку он более регулярный: в нем все коды нажатия однобайтовые, а все коды отпускания двухбайтовые (первый байт — 0xF0, второй — код нажатия). Примеры приведены в таблице ниже.

Клавиша Код нажатия (make) Код отпускания (break)
A 0x1C 0xF0, 0x1C
Insert 0x67 0xF0, 0x67
Print Screen 0x57 0xF0, 0x57
Pause 0x62 0xF0, 0x62

Преобразование скан-кодов в ASCII коды

Самый простой вариант преобразования скан-кодов в коды ASCII — это использование массива, элементами которого являются ASCII коды, а индексами — скан-коды. Чтобы описать такой массив для набора скан-кодов 2 на языке ассемблера, мне пришлось скопировать таблицу скан-кодов из Интернета в Microsoft Excel, отсортировать ее по возрастанию скан-кода и, поскольку скан-коды идут не подряд, заполнить пустые места нулевыми символами. Столбец таблицы, в котором содержались ASCII коды, я скопировал в файл с исходным кодом на языке ассемблера и получился вот такой массив:

SCAN_CODE_SET2 db ,,,,,,,,,,,,,126,,,,,,,’Q’,’1′,,,,’Z’,’S’,’A’,’W’,’2′,,,’C’,’X’,’D’,’E’,’4′,’3′,,,’ ‘,’V’
               db ‘F’,’T’,’R’,’5′,,,’N’,’B’,’H’,’G’,’Y’,’6′,,’J’,,’M’,,’U’,’7′,’8′,,,44,’K’,’I’,’O’,’0′,’9′,,,’.’,’/’,’L’,59,’P’,’-‘,,,
               db 39,,»,,92,,,,,,,,,,,,’1′,,’4′,’7′,,,,’0′,’.’,’2′,’5′,’6′,’8′,,,’0′,’+’,’3′,’-‘,’*’,’9′,,,,,,

Вывод

Портативное вычислительное устройство, содержащее: контроллер клавиатуры, имеющий первый вход для приема нажатий клавиш и имеющий выход для передачи упомянутых нажатий клавиш на главный процессор; и вторичный процессор, имеющий интерфейс к упомянутому контроллеру клавиатуры через вторичную шину, упомянутая вторичная шина также используется для связи с модулем батареи, при этом упомянутый контроллер клавиатуры также передает упомянутые входные данные нажатия клавиш упомянутому вторичному процессору через упомянутую вторичную шину. Контроллер клавиатуры запрограммирован для поддержки последовательного интерфейса клавиатуры IBM-совместимого персонального компьютера. Контроллер клавиатуры получает последовательные данные с клавиатуры, проверяет четность данных, транслирует скан-код и представляет данные системе в виде байта данных в своем выходном буфере. Контроллер прервет работу системы, когда данные будут помещены в его выходной буфер. Байт данных будет последовательно отправлен на клавиатуру с автоматически вставленным битом нечетной четности. Клавиатура требуется для подтверждения всех передач данных. Передача на клавиатуру не должна осуществляться до тех пор, пока не будет получено подтверждение для предыдущего отправленного байта. Контроллер клавиатуры и BIOS для повышения производительности компьютеров IBM PC и их совместимых устройств. В этом контроллере клавиатуры используется аппаратная методология, а не программная реализация, как в традиционном BIOS клавиатуры 8042. Это позволяет контроллеру клавиатуры мгновенно реагировать на все команды, отправляемые с клавиатуры в BIOS ЦП. Благодаря этому популярные программы, такие как Microsoft Windows , NOVELL и другие, работают намного быстрее.

Порты ввода-вывода 0x64 и 0x60

Как я уже говорил, для общения с контроллером клавиатуры процессор использует порты ввода-вывода 0x64 и 0x60 (эти порты связаны с несколькими регистрами контроллера клавиатуры; размер каждого из регистров — 1 байт). В таблице ниже показано, что означают операции чтения и записи в эти порты.

Порт Доступ Описание Ассемблерная команда
0x60 Чтение Читать выходной буфер контроллера клавиатуры in al, 0x60
0x60 Запись Писать во входной буфер контроллера клавиатуры out 0x60, al
0x64 Чтение Читать регистр статуса контроллера клавиатуры in al, 0x64
0x64 Запись Послать команду контроллеру клавиатуры out 0x64, al

Как отмечает в своей статье Adam Chapweske, существует путаница в понятиях «выходной буфер» и «входной буфер». Причем путаница присутствует и в его статье (использование им флагов IBF и OBF не соответствует его же понятиям о входном и выходном буферах). Мы примем следующие определения: если процессор считывает данные из порта 0x60 (это могут быть данные, присылаемые клавиатурой контроллеру клавиатуры, либо данные, которые контроллер клавиатуры формирует самостоятельно в ответ на команду от процессора), то он считывает их из выходного буфера контроллера клавиатуры; если процессор записывает данные в порт 0x60 (он может делать это, что послать данные клавиатуре либо чтобы передать аргумент для команды, которую он послал контроллеру клавиатуры — о командах читайте ), то он записывает их во входной буфер контроллера клавиатуры.

Нам понадобится как минимум читать выходной буфер контроллера клавиатуры, потому что именно так мы можем получить скан-коды нажимаемых пользователем клавиш. Когда в выходной буфер контроллера клавиатуры поступает очередной байт, присланный клавиатурой, устанавливается в 1 флаг под названием Output Buffer Full (OBF) — самый младший бит регистра статуса контроллера клавиатуры, и генерируется прерывание IRQ1. Когда вы считываете байт из выходного буфера контроллера клавиатуры, флаг OBF сбрасывается в 0. Перед тем, как считывать данные из выходного буфера контроллера клавиатуры, следует убедиться, что флаг OBF установлен в 1 — для этого надо считать значение регистра статуса. Операцию чтения байта из выходного буфера контроллера клавиатуры я поместил в функцию Keyboard_ReadOutputBuffer (см. раздел ). Однако если вы читаете байты из выходного буфера внутри обработчика прерывания IRQ1, то и так понятно, что флаг OBF установлен и убеждаться в этом лишний раз нет необходимости.

У нас также может возникнуть необходимость записать что-нибудь во входной буфер контроллера клавиатуры. Такая необходимость может возникнуть в двух случаях:

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

В любом случае, при записи данных во входной буфер контроллера клавиатуры надо проверять флаг Input Buffer Full (IBF) — следующий после OBF бит регистра статуса контроллера клавиатуры. Записать очередной байт во входной буфер можно только если флаг IBF сброшен в 0. Операцию записи байта в входной буфер контроллера клавиатуры я поместил в функцию Keyboard_WriteInputBuffer (см. раздел ).

Понравилась статья? Поделиться с друзьями:
ГЕО-АС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: