Библиотека системного программиста




Скачать 3.55 Mb.
Название Библиотека системного программиста
страница 7/48
Тип Документы
rykovodstvo.ru > Руководство эксплуатация > Документы
1   2   3   4   5   6   7   8   9   10   ...   48

Порты для работы с клавиатурой


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

Компьютер IBM PC/XT


Для работы с клавиатурой типа IBM PC/XT используются порты с адресами 60h и 61h.

Порт 60h доступен только для чтения. После выполнения этой операции он содержит скан-код последней нажатой клавиши.

Порт 61h доступен как для чтения, так и для записи. Он управляет не только клавиатурой, но и другими устройствами компьютера, например, работой встроенного динамика. Если в старший бит порта 61h записать значение 1, клавиатура будет заблокирована, если 0 - разблокирована.

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

. . .

in al, 61h

or al, 80h

out 61h, al

. . .

Современные компьютеры


Современные компьютеры позволяют управлять скоростными характеристиками клавиатуры, а также зажигать или гасить светодиоды Scroll Lock, Num Lock и Caps Lock, расположенные на лицевой панели клавиатуры.

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

При использовании порта 60h на запись программа дополнительно получает следующие возможности:

  • установка времени ожидания перед переходом клавиатуры в режим автоповтора;

  • установка периода генерации скан-кода в режиме автоповтора;

  • управление светодиодами, расположенными на лицевой панели клавиатуры.

Процессор 8042 обслуживает не только клавиатуру, но и другие системы компьютера. Через порт 64h, например, выполняется сброс (отключение) процессора 80286 для возврата из защищенного режима работы в реальный. Подробности об этом вы можете узнать из 6 тома «Библиотеки системного программиста», который называется «Защищенный режим процессоров Intel 80286/80386/80486».

Перед тем как посылать команду процессору 8042, необходимо убедиться в том, что его внутренняя очередь команд пуста. Это можно сделать, прочитав слово состояния 8042 из порта с адресом 64h. Бит с номером 1 должен быть равен нулю.

Приведем фрагмент программы, составленной на языке ассемблера, проверяющий состояние очереди команд процессора 8042:

. . .

; Счетчик для ограничения времени ожидания готовности 8042

mov cx,0
wait_loop:
; Читаем порт состояния процессора 8042

in al, 64h

and al, 00000010b ; флаг готовности
; Ожидаем готовность процессора 8042 к приему команды

loopnz wait_loop

. . .

После того, как программа дождется готовности процессора 8042, она может послать ему команду, записав ее в порт с адресом 60h:

mov al, cmd ; команда для 8042

out 60h, al ; вывод команды в 8042

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

mov al, cmd_byte1

out 60h, al

mov cx, 2000h
wait_loop: loop wait_loop
mov al, cmd_byte2

out 60h, al

Мы приведем формат двух команд процессора 8042, имеющих отношение к работе с клавиатурой - команду установки задержки и периода автоповтора и команду управления светодиодами, расположенными на клавиатуре.

Для установки характеристик режима автоповтора в порт 60h необходимо записать код команды 0F3h, затем байт, определяющий характеристики режима. Ниже вы найдете описание полей байта режима автоповтора:


Биты

Описание

0-4

Период автоповтора, который определяет количество посылок скан-кода, генерируемых процессором клавиатуры в одну секунду. Можно использовать не только те значения, которые приведены ниже, но и промежуточные, например, 9 или 15h.

0 30.0

1 26.7

2 24.0

4 20.0

8 15.0

0Ah 10.0

0Dh 9.2

10h 7.5

14h 5.0

1Fh 2.0

5-6

Задержка включения режима автоповтора, mc:

00 250

01 500

10 750

11 1000

7

Зарезервировано и должно быть равно нулю


Первоначально при инициализации системы BIOS устанавливает период задержки для включения режима автоповтора равным 500 мс при периоде автоповтора, равным 10 повторам в секунду. Если это слишком медленно для вас, вы можете установить другие значения.

Для управления светодиодами, расположенными на лицевой панели клавиатуры, используйте команду 0EDh. Вслед за этой командой в порт 60h необходимо записать байт, имеющий следующий формат:


Биты

Описание

0

1 – включить светодиод Scroll Lock;

0 – выключить светдиод Scroll Lock

1

1 – включить светодиод Num Lock;

0 – выключить светодиод Num Lock

2

1 – включить светодиод Caps Lock;

0 – включить светодиод Caps Lock






Программа KBDLED


Приведем пример простейшей программы KBDLED, управляющей светодиодами, расположенными на лицевой панели клавиатуры (листинг 2.1). Такое управление может выполняться только при использовании порта 60h, так как BIOS не содержит никаких подходящих для этого функций. Наша программа после запуска включит все светодиоды и будет ожидать, пока вы не нажмете любую клавишу. Затем программа выключит светодиоды.

Заметим, что программа KBDLED может не работать на виртуальной машине DOS, создаваемой, например, в операционной системе Microsoft Windows NT.

Листинг 2.1. Файл kbdled\kbdled.c

// =====================================================

// Переключение светодиодов на клавиатуре

//

// (C) Фролов А.В, 1997

//

// E-mail: frolov@glas.apc.org

// WWW: http://www.glasnet.ru/~frolov

// или

// http://www.dials.ccas.ru/frolov

// =====================================================

#include

#include
int main(void)

{

int i;
printf("KBDLED, (c) A. Frolov, 1997\n");

// Посылаем процессору клавиатуры

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

outp(0x60,0xed);
// Перед посылкой второго байта команды

// выполняем небольшую задержку

for(i=0; i<4000; i++);
// Выводим второй байт команды, младшие три бита

// которого определяют состояние светодиодов

// на лицевой панели клавиатуры

outp(0x60,7);
printf("Нажмите любую клавишу для выключения "

"светодиодов\n");

// Задерживаем выполнение программы, пока

// пользователь не нажмет на любую клавишу

getch();
// Выключаем все светодиоды

outp(0x60,0xed);

for(i=0; i<4000; i++);

outp(0x60,0);

return 0;

}
1   2   3   4   5   6   7   8   9   10   ...   48

Похожие:

Библиотека системного программиста icon М. Ю. Храмцов С. В. Шарф Руководство системного программиста (администратора)...
Руководство системного программиста (администратора) системы управления прохождением задач мвс-1000/7 (версия 1, RedHat)
Библиотека системного программиста icon Руководство системного программиста
«Электронный бюджет» подсистема обеспечения интеграции, ведения реестров и формуляров
Библиотека системного программиста icon Руководство системного программиста (администратора)
Муниципальный модуль распределённой автоматизированной системы государственного банка данных о детях
Библиотека системного программиста icon Руководство системного программиста лист утверждения бкмд. 425530....
Программное обеспечение системы централизованного управления персональными мобильными устройствами и платформами в корпоративных...
Библиотека системного программиста icon Руководство системного программиста
З по выполнению государственных функций и оказанию государственных услуг, заинтересованным лицам территориальными управлениями Росоэз...
Библиотека системного программиста icon Система цифровой регистрации изображений комплект программного обеспечения
Программный документ “Руководство системного программиста” содержит сведения о “Комплексе программ для получения и визуализации данных,...
Библиотека системного программиста icon Инструкция по проведению регламентных и восстановительных работ rus. Гаро. 00001-25 32 02
Пк типа ibm pc в операционной системе Windows’98 и имеющих квалификацию инженера-программиста или системного инженера. Инструкция...
Библиотека системного программиста icon Инструкция читателя в онлайн-проекте «Библиотека ЛитРес» Аннотация...
«Библиотека ЛитРес» (biblio litres ru) позволяет читателям библиотек получить бесплатный доступ к электронным книгам, представленным...
Библиотека системного программиста icon Муниципальный модуль прикладного программного обеспечения «аист»...
Настоящий документ является эксплуатационным документом на муниципальный модуль прикладного программного обеспечения «Аист» (далее...
Библиотека системного программиста icon В. П. Казанцев инструкция по охране труда для инженера-программиста
Инструкция, регламентирует безопасный, с точки зрения охраны труда, по­рядок действий инженера-программиста в процессе исполнения...
Библиотека системного программиста icon Сектор Абонемента
ЛитРес Библиотека (поиск "ЛитРес" или "Библиотека"), ссылка на приложение: https://play google com/store/apps/details?id=ru litres...
Библиотека системного программиста icon Учебно-методический комплекс по дисциплине наименование дисциплины...
Системного подхода, системной инженерии и с обширным арсеналом методов и моделей системного анализа. Это даст необходимую методологическую...
Библиотека системного программиста icon Должностная инструкция системного администратора информационной системы персональных данных
Настоящая инструкция определяет основные обязанности, права и ответственность системного администратора информационной системы доу...
Библиотека системного программиста icon Пример описания технических требований системного блока №1 2 2 Пример...
Устройство бесперебойного питания для рабочих станций. Типовая конфигурация №1 21
Библиотека системного программиста icon Пример описания технических требований системного блока №1 2 2 Пример...
Устройство бесперебойного питания для рабочих станций. Типовая конфигурация №1 22
Библиотека системного программиста icon Пример описания технических требований системного блока №1 2 2 Пример...
Устройство бесперебойного питания для рабочих станций. Типовая конфигурация №1 17

Руководство, инструкция по применению






При копировании материала укажите ссылку © 2024
контакты
rykovodstvo.ru
Поиск