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

Контроллер клавиатуры (рис. 3.4.1.) представляет собой модель внешнего устройства, принимающего ASCII-коды от клавиатуры ЭВМ. Символы помещаются последовательно в буфер символов, размер которого установлен равным 50 символам, и отображаются в окне обозревателя (рис. 3.4.2).

В состав контроллера клавиатуры входят три программно-доступных регист­ра:

DR (адрес 0) — регистр данных;

CR (адрес 1)— регистр управления, определяет режимы работы контрол­лера и содержит следующие флаги:

• Е — флаг разрешения приема кодов в буфер;

• I — флаг разрешения прерывания;

• S — флаг режима посимвольного ввода.

SR (адрес 2) — регистр состояния, содержит два флага:

• Err — флаг ошибки;

• Rd — флаг готовности.


Рис. 3.4.1. Контроллер клавиатуры

 

Рис.3.4.2. Окно обозревателя контроллера клавиатуры

 

Регистр данных DR доступен только для чтения, через него считываются
ASCII-коды из буфера, причем порядок чтения кодов из буфера соответству­ет порядку их записи в буфер – каждое чтение по адресу 0 автоматически
перемещает указатель чтения буфера. В каждый момент времени DR содержит код символа по адресу указателя чтения буфера.

Флаги регистра управления CR устанавливаются и сбрасываются про­граммно. В нем реализованы следующие флаги.

Флаг Е, будучи установленным, разрешает прием кодов в буфер. При Е = 0 контроллер игнорирует нажатие на клавиатуре, прием кодов в буфер не про­изводится. На считывание кодов из буфера флаг Е влияния не оказывает.

Флаг I, будучи установленным, разрешает при определенных условиях фор­мирование контроллером запроса на прерывание. При I = 0 запрос на преры­вание не формируется.

Флаг S = 1 устанавливает т. н. режим посимвольного ввода, иначе контроллер работает в обычном режиме. Флаг S устанавливается и сбрасывается про­граммно, кроме того, S сбрасывается при нажатии кнопки Очистить буфер в окне Контроллер клавиатуры.

Условия формирования запроса на прерывание определяются, с одной сторо­ны, значением флага разрешения прерывания I, с другой — режимом работы контроллера. В режиме посимвольного ввода запрос на прерывание форми­руется после ввода каждого символа (разумеется, при I = 1), в обычном ре­жиме запрос будет сформирован по окончании набора строки.

Завершить набор строки можно, щелкнув по кнопке Завершить ввод в окне Контроллер клавиатуры(см. рис. 8.10). При этом устанавливается флаг го­товности Rd (от англ. ready) в регистре состояния SR. Флаг ошибки Err (от англ. error) в том же регистре устанавливается при попытке ввода в буфер 51-го символа. Ввод 51-го и всех последующих символов блокируется.

Сброс флага Rd осуществляется автоматически при чтении из регистра DR, флаг Err сбрасывается программно. Кроме того, оба эти флага сбрасываются при нажатии кнопки Очистить буферв окне Контроллер клавиатуры; од­новременно со сбросом флагов производится очистка буфера — весь буфер заполняется кодами 00h, и указатели записи и чтения устанавливаются на нача­ло буфера.

Для программного управления контроллером предусмотрен ряд командных слов. Все команды выполняются при записи по адресу регистра управления CR кодов с 1 в третьем разряде. Контроллер клавиатуры интерпретирует следующие командные слова:

• xxx101 — очистить буфер (действие команды эквивалентно нажатию кноп­ки Очистить буфер);

• xxx102 — сбросить флаг Err в регистре SR;

• ххх103 — установить флаг S в регистре CR;

• ххх 104 — сбросить флаг S в регистре CR.

Если по адресу 1 произвести запись числа ххх0nm, то произойдет изменение 4-го и 5-го разрядов регистра CR по следующему правилу:

n = 0 – записать 0;

n = 1 – записать 1; ( 3.4.1)

n = 2, …, 9 – сохранить разряд без изменения.








Дата добавления: 2015-04-07; просмотров: 1637;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.005 сек.