Лекция: Контроллер клавиатуры

Контроллер клавиатуры (рис. 8.9) представляет собой модель внешнего уст­ройства, принимающего ASCII-коды' от клавиатуры ПЭВМ.

Символы помещаются последовательно в буфер символов, размер которого установлен равным 50 символам, и отображаются в окне обозревателя (рис. 8.10).

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

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

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

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

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

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

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

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

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

1 Сокр. от American Standard Code for Information Interchange — американский стандартный код
обмена информацией.

 



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

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

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

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

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

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

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

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

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

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

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

Контроллер клавиатуры интерпретирует следующие командные слова:

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

□ ххх 102 — сбросить флаг Err в регистре SR; □ ххх 103 — установить флаг S в регистре CR;

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

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

 


(8.1)


еще рефераты
Еще работы по информатике