Сделай Сам Свою Работу на 5

Принцип действия клавиатуры





Клавиатура персональных ЭВМ

 

 

Выполнил студент группы № 04-221

Бодягин Александр Михайлович

 

Москва

Содержание

 

1. Организация системы прерываний…………………………………………………………3

 

· Классификация……………………………………………………………………………….3

 

· Аппаратное прерывание………………………………………………………………..4

 

· Процедура прерывания………………………………………………………………….4

 

2. Принцип действия клавиатуры………………………………………………………………..6

 

3. Аппаратная поддержка работы с клавиатурой……………………………………….8

 

· Контролер клавиатуры…………………………………………………………………..8

 

· Порты………………………………………………………………………………………………8

 

· Контролер приоритетных прерываний……………………………………..….9

 

4. Программная поддержка……………………………………………………………….……..11

 

· BIOS………………………………………………………………………………………….……11

 

· Обработчик прерываний……………………………………………………….…….11

 

5. Взаимодействие аппаратных и программных средств…………………………13

 



6. Современное состояние и перспективы……………………………………………….15

 

7. Приложения……………………………………………………………………………………….…..16

 

8. Список литературы………………………………………………………………………………...19

 

 

Организация системы прерываний

Классификация

 

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

 

В зависимости от источника возникновения сигнала прерывания делятся на:

· аппаратные (асинхронные, или внешние) — события, которые исходят от внешних источников (например, периферийных устройств) и могут произойти в любой произвольный момент: сигнал от таймера, сетевой карты или дискового накопителя, нажатие клавиш клавиатуры, движение мыши.

· синхронные или внутренние — события в самом процессоре как результат нарушения каких-то условий при исполнении машинного кода: деление на ноль или переполнение, обращение к недопустимым адресам или недопустимый код операции;



· программные (частный случай внутреннего прерывания) — инициируются исполнением специальной инструкции в коде программы. Программные прерывания как правило используются для обращения к функциям встроенного программного обеспечения (firmware), драйверов и операционной системы. Возникают при выполнении в программе команды int номер_прерывания (к примеру int 13h), они обычно используются для вызова из программы системных функций MS-DOS (Microsoft Disk Operating System — дисковая операционная система от Microsoft) или BIOS (Basic Input-Output System — базовая система ввода-вывода).

Аппаратное прерывание[1]

 

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

Сигналы аппаратных прерываний, возникающие в устройствах, входящих в состав компьютера или подключенных к нему, поступают в процессор через два контроллера прерываний (микросхема Intel 8259), один из которых называется ведущим, а второй – ведомым.



 

Процедура прерываний

 

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

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

Получив сигнал прерывания с определенным номером, процессор сохраняет в стеке выполняемой программы текущее содержимое трех регистров процессора: регистра флагов, CS и IP. Два последних числа образуют полный адрес возврата в прерванную программу. Далее процессор загружает CS и IP из соответствующего вектора прерываний[2], осуществляя, тем самым, переход на обработчик прерывания, связанный с этим вектором.

Обработчик прерываний всегда заканчивается командой iret (interrupt return, возврат из прерывания), выполняющей обратные действия - извлечение из стека сохраненных там слов и помещение их назад в регистры IP и CS, а также в регистр флагов. Это приводит к возврату в основную программу в ту самую точку, где она была прервана.

Процедура прерывания отличается от обычной процедуры способом выхода из процедуры. Для выхода из процедуры прерывания служит команда IRET. Команда IRET аналогична команды RET, за исключением того, что она инкрементирует содержимое регистра ESP на четыре лишние байта и восстанавливает сохраненные флаги.

 

Принцип действия клавиатуры

 

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

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

Стандартная клавиатура имеет более 100 клавиш, функционально распределенных по нескольким группам:

· Алфавитно-цифровые клавиши;

· Функциональные клавиши;

· Служебные клавиши;

· Клавиши управления курсором.

Физически клавиатура и процессор связаны только двумя проводами, контролер процессора сканирует переключатели клавиш и при нажатии на любую клавишу по этим двум проводам передается уникальный скан-код размером один байт. Когда скан-код попадает в процессор инициализируется аппаратное прерывание IRQ 9(Interrupt 9, Int9). Скан-код анализируется процессором и преобразуется в код символа. Далее полученный код символа помещается в небольшую область памяти, известную как буфер клавиатуры. Введенный символ хранится в буфере клавиатуры до тех пор, пока его не заберет оттуда та программа, для которой он и предназначался, например текстовый редактор или текстовый процессор. Если символы поступают в буфер чаще, чем забираются оттуда, наступает эффект переполнения буфера. В этом случае ввод новых символов на некоторое время прекращается. На практике в этот момент при нажатии на клавишу мы слышим предупреждающий звуковой сигнал и не наблюдаем ввода данных.

Если скан-код принадлежит одной из управляющих клавиш, и, к тому же, представляет собой код нажатия, в байте флагов клавиатуры устанавливается бит (флаг), соответствующий нажатой клавише. Например, при нажатии правой клавиши <Shift> в байте флагов устанавливается бит 0, при нажатии левой клавиши <Shift> - бит 1, при нажатии любой клавиши <Ctrl> - бит 2 и т.д. Биты флагов сохраняют свое состояние, пока клавиши (по одиночке или в любых комбинациях) остаются нажатыми. Если управляющая клавиша отпускается, программа int09h получает скан-код отпускания и сбрасывает соответствующий бит в байте флагов. Кроме состояния указанных клавиш, в байте флагов фиксируются еще режимы <Scroll Lock>, <Num Lock>, <Caps Lock> и <Insert>.

При нажатии обычной, не управляющей клавиши, программа int09h[3] считывает из порта 60h ее скан-код нажатия и по таблице трансляции скан-кодов в коды ASCII формирует двухбайтовый код, старший байт которого содержит скан-код, а младший код ASCII. При этом если скан-код характеризует клавишу, то код ASCII определяет закрепленный за ней символ. Поскольку за каждой клавишей закреплено, как правило, не менее двух символов ("а" и "А", "1" и "!", "2" и "@" и т.д.), то каждому скан-коду соответствуют, как минимум, два кода ASCII. В процессе трансляции программа int09h анализирует состояние флагов, так что если нажата, например, клавиша Q (скан-код 10h, код ASCII буквы Q - 51h, а буквы q -71h), то формируется двухбайтовый код 1071h, но если клавиша Q нажата при нажатой клавише <Shift> (смена регистра), то результат трансляции составит 1051h. Тот же код 1051h получится, если при нажатии клавиши Q был включен режим <Caps Lock> (заглавные буквы), однако при включенном режиме <Caps Lock> и нажатой клавише <Shift> образуется код 1071h, поскольку в такой ситуации клавиша <Shift> на время нажатия переводит клавиатуру в режим нижнего регистра (строчные буквы).

 

 

 








Не нашли, что искали? Воспользуйтесь поиском по сайту:



©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.