АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция
|
Принцип работы контроллера клавиатуры и его интерфейс с BIOS
Контроллер клавиатуры работает следующим образом: при нажатии или отпускании любой клавиши генерируется байт (так называемый скан-код), первые 7 битов которого содержат порядковый номер клавиши, а последний, седьмой бит, сброшен, если клавиша была нажата, и установлен, если отпущена. Этот скан-код можно прочитать через порт 60h (на самом деле врутри контроллера клавиатуры есть некая очередь скан-кодов, а порт 60h лишь отображает верхний код, но об этом можно и не знать). И еще. Как только клавиша нажимается или отпускается, вызывается 9-е прерывание (IRQ 1). Но не всегда нажатие или отпускание клавиши генерирует один скан-код. Например, нажатие клавиши Pause вызывает генерацию сразу 5-и кодов. Нажатие белой стрелки вверх вызывает скан-код 72, а черной стрелки вверх - сразу 2 кода: 224 и 72. И для каждого из этих скан-кодов вызывается 9-е прерывание. Таким образом, процедура обработки клавиатуры BIOS, "сидящая" на 9-м прерывании, просто анализирует значение 60h-го порта и соответствующим образом модифицирует буфер ввода. Все процедуры BIOS далее работают не с текущем значением порта, а с буфером ввода, что позволяет осуществлять ввод с опережением, то есть даже тогда, когда система занята.
1 | 2 | 3 | Поиск по сайту:
|