Лекция Внешние устройства. 1Описание Внешних устройств 2 2Контроллер клавиатуры. 3
Скачать 205.95 Kb.
|
Внешние устройства Оглавление1Описание Внешних устройств 2 2Контроллер клавиатуры. 3 3Дисплей. 7 4Блок таймеров. 9 5Тоногенератор. 12 Внешние устройства (ВУ), используемые в описываемой системе, реализованы по единому принципу. С точки зрения процессора они представляют собой ряд программно-доступных регистров, лежащих в адресном пространстве ввода/вывода. Размер регистров ВУ совпадает с размером ячеек памяти и регистров данных процессора — шесть десятичных разрядов. Доступ к регистрам ВУ осуществляется по командам IN аа, OUT аа, где аа — двухразрядный десятичный адрес регистра ВУ. Таким образом, общий объем адресного пространства ввода/вывода составляет 100 адресов. Важно: Адресные пространства памяти и ввода/вывода в этой модели разделены. Разные ВУ содержат различное число программно-доступных регистров, каждому из которых соответствует свой адрес, причем нумерация адресов всех ВУ начинается с 0. При создании ВУ ему ставится в соответствие базовый адрес в пространстве ввода/вывода, и все адреса его регистров становятся смещениями относительно этого базового адреса. Если в системе создаются несколько ВУ, то их базовые адреса следует выбирать с учетом величины адресного пространства, занимаемого этими устройствами, исключая наложение адресов. Если ВУ способно формировать запрос на прерывание, то при создании ему ставится в соответствие вектор прерывания— десятичное число. Разным ВУ должны назначаться различные векторы прерываний. Программная модель содержит следующий набор внешних устройств: контроллер клавиатуры; дисплей; блок таймеров; тоногенератор, которым по умолчанию присвоены параметры, перечисленные в табл. 1. Таблица 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. Регистры таймеров Т доступны по записи и чтению (адреса 1, 3, 5 соответственно для T1, T2, ТЗ). Программа в любой момент может считать текущее содержимое таймера или записать в него новое значение. На входы предделителей поступают общие для всех каналов метки времени CLK с периодом 1 мс. Предделители в каждом канале программируются независимо, поэтому таймеры могут работать с различной частотой. Рис. 5. Блок таймеров. Регистры управления CTR доступны для записи и чтения (адреса 2, 4, 6) и содержат следующие поля: Т (разряд 5) — флаг включения таймера; EI (разряд 4)— флаг разрешения формирования запроса на прерывание при переполнении таймера; I/D (разряд 3) — направление счета (инкремент/декремент), при I/D = 0 таймер работает на сложение, при I/D = 1 — на вычитание; k(разряды [1:2]) — коэффициент деления предделителя (от 1 до 99). Флаги переполнения таймеров собраны в один регистр — доступный только на чтение регистр состояния SR, имеющий адрес 0. Разряды регистра (5, 4 и 3 для Tl, T2, ТЗ соответственно) устанавливаются в 1 при переполнении соответствующего таймера. Для таймера, работающего на сложение, переполнение наступает при переходе его состояния из 99 999 в 0, для вычитающего таймера — переход из 0 в 99 999. В окне обозревателя (рис. 6) предусмотрена кнопка Сброс, нажатие которой сбрасывает в 0 все регистры блока таймеров, кроме CTR, которые устанавливаются в состояние 001000. Таким образом,: все три таймера обнуляются, переключаются в режим инкремента, прекращается счет, запрещаются прерывания, сбрасываются флаги переполнения и устанавливаются коэффициенты деления предделителей равными 01. Рис. 6. Окно обозревателя блока таймеров Программное управление режимами блока таймеров осуществляется путем записи в регистры CTR соответствующих кодов. Запись по адресу SR числа с 1 в третьем разряде интерпретируется блоком таймеров как команда, причем младшие разряды этого числа определяют код команды: ххх100 — общий сброс (эквивалентна нажатию кнопки Сброс в окне обозревателя); xxx101 — сброс флага переполнения таймера FT1; ххх102 — сброс флага переполнения таймера FT2; ххх103 — сброс флага переполнения таймера FT3. Тоногенератор.Модель этого простого внешнего устройства не имеет собственного обозревателя, содержит всего два регистра, доступных только для записи: FR (адрес 0) — регистр частоты звучания (Гц); LR (адрес 1) — регистр длительности звучания (мс). По умолчанию базовый адрес тоногенератора — 30. Сначала следует записать в FR требуемую частоту тона в герцах, затем в LR — длительность звучания в миллисекундах. Запись числа по адресу регистра LR одновременно является командой на начало звучания. |