Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
IPU_GOS_OK.doc
Скачиваний:
61
Добавлен:
12.03.2015
Размер:
2.27 Mб
Скачать

26. Назначение контроллера клавиатуры пк. (Основные функции и основные узлы).

Основными элементами схемы контроллера клавиатуры являются: регистр сдвига, схема формирования строба и D-триггер. При передаче информации от клавиатуры в контроллер данные в последовательном коде поступают на вход DI регистра сдвига. Сдвиг в этом регистре происходит при подаче импульса из схемы формирования строба. Этот импульс формируется при наличии синхроимпульсов от клавиатуры и тактовых импульсов СLК.

При поступлении в контроллер клавиатуры очередного скэн-кода первый маркерный бит всегда равен "1". Его появление на выходе Р регистра сдвига свидетельствует об окончании преобразования этого скэн-кода, т.е. о наличии на выходе регистра данных для передачи в CPU. Этот сигнал подается на вход D-триггера, который изменяет свое состояние, формируя сигнал запроса на прерывание в БИС 8259А.

При необходимости CPU может заблокировать передачу данных с клавиатуры в контроллер путем подачи управляющих сигналов через биты В6 и В7 порта В БИС 8255А. Данные с клавиатуры могут быть преобразованы в регистре сдвига, когда сигнал В7, подключенный ко входу разрешения #ОЕ, равен "0". Сигнал разрешения сдвига можно сформировать следующим образом (адрес порта В в ПК – 61Н):

in al, 61H ; чтение содержимого порта В

and al, 01111111B

out 61H, al ; запись "0" в В7

Значение В6 = 1 разрешает поступление синхронизирующих импульсов с клавиатуры. Когда бит В6 равен "0", передача данных из клавиатуры будет заблокирована.

27. Основные этапы выполнения программы прерывания int 9 (ввод данных из клавиатуры).

  1. Чтение SCANCODE из порта А (in AL, 60H).

  2. Выдача сигнала подтверждения приёма кода.

Эта процедура устанавливает D-триггер в 0-е состояние и обнуляет регистр сдвига.

  1. Определение функционального назначения нажатой клавиши (символ, функция управления).

Если нажата клавиша изменяющая биты статуса (Alt, Ctrl, Shift), то информация об этих нажатиях фиксируется в ячейках по адресу 417h или 418h.

  1. Проверка наличия свободного места в буфере клавиатуры (буфер представлен в виде кольца). Если место есть, то при нажатии символьной клавиши, SCANCODE пр. в код символа. В случае переполнения буфера (указатель головы «догнал» указатель хвоста) очередное слово не записывается, и подается звуковой сигнал.

  2. Выход из программы int 9h.

Нажатие «системной» комбинации Ctrl+Alt+Del, кла­виши PrintScreen (SysRq) и некоторых других к записи в клавиатурный буфер не приводит, а вызывает специальные процедуры.

28. Блок-схема клавиатуры. Формирование данных для передачи в пк. Интерфейс связи клавиатуры с пк. Временная диаграмма передачи данных от клавиатуры в системный блок пк.

рис.1

В схеме клавиатуры 2 основных узла – наборное поле и микропроцессорная схема управления. Каждой клавише присваивается № клавиши – скэнкод (9 бит, 1 бит маркерная единица). Микропроцессорная схема управления основана на базе микроконтроллера.

Функции МПУ:

1. Сканирование наборного поля.

2. Определение скэнкода нажатой клавиши.

3. Организация последовательной передачи данных скэнкода нажатой клавиши в контроллер клавиатуры.

Обнаружение нажатой клавиши определяется путем непрерывного сканирования наборного поля, которая заключается в циклической посылке сигнала “0” послед-но на каждый из столбцов и считывание кода строк. МПр считывает коды строк и при отсутствии нажатой клавиши все сигналы на линии будут =1. При нажатии соотв-ей клавиши (строки, столбца) замыкается и сигнал нуля по этой строке будет поступать в МПр-ую схему, она определяет столбец, затем N нажатой клавиши. Определив скэнкод нажатой клавиши МПр-ая схема по линии данных в последовательном коде, выдает информацию о нажатой клавише. Каждый передаваемый бит сопровождается синхроимпульсом.

рис.2

Код передаваемых данных начинается с одной доп-но передаваемой “1”- маркерная единица, затем в последовательном коде байт данных. ”1” сообщает контроллеру клавиатуры о начале передачи очередного байта.

Работу двунаправленного интерфейса иллюстрирует рис.2, а. В исход­ном состоянии обе линии «отпущены» выходными формирователями в состо­яние с высоким уровнем. Клавиатура может начать передачу данных в произвольный момент, когда интерфейс находится в покое. Клавиатура формирует старто­вый бит (низкий уровень) на линии KB-Data и первый импульс KB-Clock, что яв­ляется сигналом контроллеру о необходимости начала приема. После подъема KB-Clock она выводит 0-й бит данных на линию KB-Data, а затем и следующий им­пульс KB-Clock. Контроллер должен «защелкивать» принятый бит данных по спа­ду KB-Clock. Так передаются все 8 бит данных и бит паритета, дополняющий чис­ло единичных бит до нечетного. После синхроимпульса бита паритета контроллер клавиатуры должен сформировать импульс KB-Clock, подтверждающий прием байта (Ack). Если весь байт с битом паритета не будет получен контроллером за 2 мс, контроллер прекращает прием данного байта и фиксирует ошибку тайм-аута.

Рис. 2. Временные диаграммы интерфейса клавиатуры: а — прием посылки от клавиатуры, б — передача команды в клавиатуру.

Обратная передача — вывод команды контроллера в клавиатуру — происходит несколько сложнее (рис. 2, б). Из состояния покоя контроллер устанавливает низкий уровень KB-Clock на 250 мкс и формирует старт-бит (низкий уровень) — это сигнал клавиатуре на прием команды. На него клавиатура должна ответить серией из 11 импульсов KB-Clock. По спаду очередного синхроимпульса контрол­лер выставляет очередной бит данных, а клавиатура его «защелкивает» по фронту формируемого ею же синхроимпульса. После бита паритета (9-й импульс) и единич­ного стоп-бита (10-й) на 11-м импульсе клавиатура формирует нулевой бит под­тверждения (Ack). После этого контроллер формирует импульс KB-Clock (60 мкс), который является запросом на прием ответа клавиатуры. Контроллер ожидает окончания ответа на этот запрос не более 20 мс и, если ответ не придет за это время, сформирует ошибку тайм-аута. Ошибка будет также в случае, если клавиатура не введет первый синхроимпульс за 15 мс от начала запроса или контроллер не примет данные, включая стоп-бит, за 2 мс с момента появления синхроимпульса бита 0.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]