Файл: 1Описание Внешних устройств 2 2Контроллер клавиатуры. 3.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 11.12.2023
Просмотров: 26
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Внешние устройства
Оглавление
1Описание Внешних устройств 2
2Контроллер клавиатуры. 3
3Дисплей. 7
4Блок таймеров. 9
5Тоногенератор. 12
-
Описание Внешних устройств
Внешние устройства (ВУ), используемые в описываемой системе, реализованы по единому принципу.
С точки зрения процессора они представляют собой ряд программно-доступных регистров, лежащих в адресном пространстве ввода/вывода. Размер регистров ВУ совпадает с размером ячеек памяти и регистров данных процессора — шесть десятичных разрядов.
Доступ к регистрам ВУ осуществляется по командам IN аа, OUT аа, где аа — двухразрядный десятичный адрес регистра ВУ.
Таким образом, общий объем адресного пространства ввода/вывода составляет 100 адресов.
Важно: Адресные пространства памяти и ввода/вывода в этой модели разделены.
Разные ВУ содержат различное число программно-доступных регистров, каждому из которых соответствует свой адрес, причем нумерация адресов всех ВУ начинается с 0.
При создании ВУ ему ставится в соответствие базовый адрес в пространстве ввода/вывода, и все адреса его регистров становятся смещениями относительно этого базового адреса.
Если в системе создаются несколько ВУ, то их базовые адреса следует выбирать с учетом величины адресного пространства, занимаемого этими устройствами, исключая наложение адресов.
Если ВУ способно формировать запрос на прерывание, то при создании ему ставится в соответствие вектор прерывания— десятичное число. Разным ВУ должны назначаться различные векторы прерываний.
Программная модель содержит следующий набор внешних устройств:
-
контроллер клавиатуры; -
дисплей; -
блок таймеров; -
тоногенератор,
которым по умолчанию присвоены параметры, перечисленные в табл. 1.
Таблица 1. Параметры внешних устройств
Внешнее устройство | Базовый адрес | Адреса регистров | Вектор прерывания |
Контроллер клавиатуры | 0 | 0,1,2 | 0 |
Дисплей | 10 | 0, 1, 2, 3 | Нет |
Блок таймеров | 20 | 0, 1, 2, 3, 4, 5, 6 | 2 |
Тоногенератор | 30 | 0,1 | Нет |
При создании устройств можно изменять назначенные по умолчанию базовый адрес и вектор прерывания.
В описываемой системе не предусмотрена возможность подключения в систему нескольких одинаковых устройств.
Большинство внешних устройств содержит
-
регистры управления CR, содержит флаги и поля, определяющие режимы работы ВУ -
регистры состояния SR, , содержит флаги, отражающие текущее состояние ВУ -
обычно регистры CR доступны только на запись, а SR — на чтение. -
Флаги SR устанавливаются аппаратно, но сбрасываются программно (или по внешнему сигналу). -
Поля и флаги CR устанавливаются и сбрасываются программно при записи кода данных в регистр CR или специальными командами.
Контроллер ВУ
-
интерпретирует код, записываемый по адресу CR как команду, если третий разряд этого кода равен 1, или как записываемые в CR данные, если третий разряд равен 0. -
в случае получения командного слова запись в регистр CR не производится, а пятый разряд слова рассматривается как код операции.
-
Контроллер клавиатуры.
Контроллер клавиатуры (рис. 1) представляет собой модель внешнего устройства, принимающего ASCII1-коды от клавиатуры ПЭВМ (Сокр. от American Standard Code for Information Interchange — американский стандартный код обмена информацией.).
Символы помещаются последовательно в буфер символов, размер которого установлен равным 50 символам, и отображаются в окне обозревателя (рис. 10).
В состав контроллера клавиатуры входят три программно-доступных регистра:
-
DR (адрес 0) — регистр данных; -
CR (адрес 1) — регистр управления, определяет режимы работы контроллера и содержит следующие флаги:
-
Е — флаг разрешения приема кодов в буфер; -
I — флаг разрешения прерывания; -
S — флаг режима посимвольного ввода.
-
SR (адрес 2) — регистр состояния, содержит два флага:
-
Err — флаг ошибки; -
Rd — флаг готовности.
Рис. 2. Контроллер клавиатуры
Рис. 2. Окно обозревателя контроллера клавиатуры
Регистр данных DRдоступен только для чтения, через него считываются ASCII-коды из буфера, причем порядок чтения кодов из буфера соответствует порядку их записи в буфер — каждое чтение по адресу 0 автоматически перемещает указатель чтения буфера. В каждый момент времени DR содержит код символа по адресу указателя чтения буфера.
Флаги регистра управления CRустанавливаются и сбрасываются программно;
-
Флаг Е, будучи установленным, разрешает прием кодов в буфер. При Е = 0 контроллер игнорирует нажатие на клавиатуре, прием кодов в буфер не производится. На считывание кодов из буфера флаг Е влияния не оказывает. -
Флаг I, будучи установленным, разрешает при определенных условиях формирование контроллером запроса на прерывание. При 1 = 0 запрос на прерывание не формируется. -
Флаг S = 1 устанавливает т. н. режим посимвольного ввода, иначе контроллер работает в обычном режиме. Флаг S устанавливается и сбрасывается программно, кроме того, S сбрасывается при нажатии кнопки Очистить буфер в окне Контроллер клавиатуры.
Условия формирования запроса на прерывание определяются:
-
с одной стороны, значением флага разрешения прерывания I, -
с другой — режимом работы контроллера.
В режиме посимвольного ввода запрос на прерывание формируется после ввода каждого символа (разумеется, при I = 1), в обычном режиме запрос будет сформирован по окончании набора строки.
Завершить набор строки можно, щелкнув по кнопке Завершить ввод в окне Контроллер клавиатуры (см. рис. 2). При этом:
-
устанавливается флаг готовности Rd (ready) в регистре состояния SR.
Флаг ошибки Err (error
) в том же регистре устанавливается при попытке ввода в буфер 51-го символа. Ввод 51-го и всех последующих символов блокируется.
Сброс флага Rd осуществляется автоматически при чтении из регистра DR, флаг Err сбрасывается программно.
Кроме того, оба эти флага сбрасываются при нажатии кнопки Очистить буфер в окне Контроллер клавиатуры; одновременно со сбросом флагов производится очистка буфера — весь буфер, заполняется кодами 00h, а указатели записи и чтения устанавливаются на начало буфера.
Для программного управления контроллером предусмотрен ряд командных слов:
-
все команды выполняются при записи по адресу регистра управления CR кодов с 1 в третьем разряде.
Контроллер клавиатуры интерпретирует следующие командные слова:
-
xxx 102 — очистить буфер (действие команды эквивалентно нажатию кнопки Очистить буфер); -
ххх 102 — сбросить флаг Err в регистре SR; -
ххх 103 — установить флаг S в регистре CR; -
ххх 104 — сбросить флаг S в регистре CR.
Если по адресу 1 произвести запись числа ххх0nn, то произойдет изменение, 4-го и 5-го разрядов регистра CR по следующему правилу:
-
Дисплей.
Дисплей (рис. 3) представляет собой модель внешнего устройства, реализующую функции символьного дисплея. Дисплей может отображать символы, задаваемые ASCII-кодами, поступающими на его регистр данных. Дисплей включает:
-
видеопамять объемом 128 слов (ОЗУ дисплея); -
символьный экран размером 8 строк по 16 символов в строке; -
четыре программно-доступных регистра: -
DR (адрес 0) — регистр данных; -
CR (адрес 1) — регистр управления; -
SR (адрес 2) — регистр состояния; -
AR (адрес 3) — регистр адреса.
Рис. 3. Контроллер дисплея
Через регистры адреса AR и данных DR по записи и чтению осуществляется доступ к ячейкам видеопамяти.
При обращении к регистру DR по записи содержимое аккумулятора записывается в DR и в ячейку видеопамяти, адрес которой установлен в регистре AR.
Регистр управления CR доступен только для записи и содержит в 4-м и 5-м разрядах соответственно два флага:
-
Е — флаг разрешения работы дисплея; при Е=0 запись в регистры AR и DR блокируется; -
А — флаг автоинкремента адреса; при А=1 содержимое AR автоматически увеличивается на 1 после любого обращения к регистру DR — по записи или чтению.
Изменить значения этих флагов можно, если записать по адресу CR (по умолчанию — 11) код ххх0nn, при этом изменение 4-го и 5-го разрядов регистра CR произойдет согласно условию (1).
Для программного управления дисплеем предусмотрены две команды, коды которых должны записываться по адресу регистра CR, причем в третьем разряде командных слов обязательно должна быть 1:
-
xxx101 — очистить дисплей (действие команды эквивалентно нажатию кнопки Очистить в окне Дисплей), при этом очищается видеопамять (в каждую ячейку записывается код пробела — 032), устанавливается в 000 регистр адреса AR и сбрасываются флаги ошибки Err и автоинкремента А; -
ххх102 — сбросить флаг ошибки Err.
Рис. 4. Окно обозревателя контроллера дисплея
Регистр состояния SR доступен только по чтению и содержит единственный флаг (в пятом разряде) ошибки Err. Этот флаг устанавливается аппаратно при попытке записать в регистр адреса число, большее 127, причем как в режиме прямой записи в AR, так и в режиме автоинкремента после обращения по адресу 127.
Сбрасывается флаг Err программно или при нажатии кнопки Очистить в окне Дисплей (рис. 4).
-
Блок таймеров.
Блок таймеров (рис. 13) включает в себя три однотипных канала, каждый из которых содержит:
-
пятиразрядный десятичный реверсивный счетчик Т, на вход которого по ступают метки времени (таймер); -
программируемый предделитель D; -
регистр управления таймером CTR; -
флаг переполнения таймера FT.