Й.Янсен Курс цифровой электроники. Том 4. Микрокомпьютеры (1987) (1092084), страница 28
Текст из файла (страница 28)
З.ЗЗ. С помощью трех младших битов можно считать содержимое регистра маски прерывания, однако только в том случае, когда четвертый бит (разрешение на установку маски) равен 1. Таким образом, входы сигналов прерывания можно сделать либо «слышащими», либо «глухими». Этот режим не распространяется на входную линию ТИАР, где запрос получает разрешение немедленно в любое время. Команда 5ТМ Содертимое аккумулптора, введенное Ранее 7 В 5 4 3 2 ! 0 Маона Яеу 5,5 Маска ЯЯТ 6;5 Маска Я5Т 7,5 Разрешение на установку маски ЯЕПЕТ ЯЯТ 75 Яе определен Разрешение лоследаеательнозо вывода данник Последовательный вывод даннык уыппнивка маски(бит маски =77' означает блокирование соответствуюшего прерываемого влада Рис. 3.33. Команда $1М.
Информацию, полезную для применения в системе прерывания, можно считать с помощью команды К1М (11еаг) 1п1еггпр1 Мази — считать маску прерывания) (рис. 3.34). Биты, начинающиеся с буквы 1, указывают, обрабатывается ли в данный момент прерывание или же происходит ожидание этой обработки. Команда ц1М часто применяется для сохранения состояния регистра маски прерывания после появления сигнала 133 Набор команд микроЭВМ ТКАР'). Эту команду следует подавать сразу после появления соответствующего прерывания. Одной этой команды вполне достаточно для того, чтобы «спасти» указанное выше состояние.
(7) Команда ЯГМ (0) Содержимое аккумулятора А после оыпол кения номонды ИМ Маски прерыеаной тламноеый йот прерывания удержание прерыеоннй аоследовательньт ввод доннык Рис. 3.34. Команда К1М. Входная линия КЗТ7,5 отличается от других КЗТ-линий тем, что срабатывает по фронту импульса, т. е. является динамическим входом.
Тот факт, что входная линия КЬТ7,5 активизирована, регистрируется и МП в надлежащий момент времени получает информацию об этом событии. Маскирование никак не влияет на состояние триггеров. Приоритетный порядок удовлетворения запросов на прерывание выглядит следующим образом: ТКАР, КБТ7,5, К5Т6,5, К5Т5,5 и затем 1ХТК. Проблема приоритетности возникает при наличии нескольких запросов на прерывание, которые образуют очередь. Как уже отмечалось выше, в случае сигнала ТКАР прерывание выполняется немедленно независимо от состояния 1Е-триггера. о Прерывание ТкАР представляет собой яемаскируемое кЕБТЛкТ-прерывание, т.е. не маскируется и выполняется неаависимо от сигнала разрешения прерывания Е1. Оно имеет наивысший приоритет.— Прим. ред.
Глава 8 Команда 31М может также изменять состояние БОР-триггера'> (рис. 3.33). Выход этого триггера связан с внешними схемами. Через этот выход можно переслать последовательный набор битов или же использовать его в качестве управляющего выхода для каких-либо внешних устройств. Содержимое триггера не изменяется, если 6-й бит (ЯОЕ)х1 равен О. После сброса БОР-триггер устанавливается в нулевое состояние. Как мы уже видели выше, в случае команды К1М состояние регистра прерывания считывается в аккумулятор А (рис. 3.34). Младшие три бита снова образуют маску прерывания, которая действует в текущий момент времени. Четвертый бит (!Е) является флажком разрешения прерывания, который указывает, подготовлена ли система прерывания в целом для обработки сигнала прерывания.
Текущее состояние прерывания считывается из битов 4 — 6. Бит 31Р обеспечивает последовательный вывод данных через внешний Я!Р-вывод корпуса Р1Р. С помощью этого вывода и соответствующей программы можно осуществить выборку последовательного набора битов, которые поступают через $1Р-вывод. Сразу же после поступления запроса на прерывание МП может на некоторое время задержать обработку этого запроса для того, чтобы обработать ранее поступившие прерывания с помощью команды Р1 в начале исполнения данной сервисной подпрограммы.
Это означает, что если ранее был послан запрос с высоким приоритетом, то новый запрос будет проигнорирован. Некоторое улучшение в эту несколько идеализированную ситуацию вносит возможность маскирования входов прерывания с помощью команды 8!М. Во время принятия решения можно разрешить сервисной подпрограмме сделать систему прерывания «слушающей» и блокировать нежелательные прерывания, маскируя соответствующие входы запросов на прерывание. Если на каком-либо входе во время обработки текущего запроса появляется запрос с более высоким приоритетом, то обработка текущего запроса прерывается и начинается обработка запроса с более высоким приоритетом.
Затем основная программа продолжает выполнение прерванной подпрограммы. Пример: во время обработки запроса на прерывание, поступившего от магнитофона, поступил запрос на прерывание дискового ЗУ. Этот запрос должен быть удовлетворен немедленно. С помощью маскирования соответствующий вход прерывания, который был занят во время обработки текущей сервисной подпрограммы (запроса от магнитофона), освобождается для приема нового запроса.
В данном примере с дисковым " 500 — 5ег!е! Ошрп1 Ра1а — выход последовательного набора данных, и 50Š— 5од Епаые — разрешение для 500-трнггера. Набор комакд микроЭВМ ЗУ периферийное устройство с более высоким приоритетом получает вполне реальное преимущество перед устройством с более низким приоритетом.
Во время обработки сервисная подпрограмма может сама запросить разрешение на контакт с дисковым ЗУ. ЗУ запрашивается относительно передачи данных, и затем в программе осуществляется переход к выполнению запрашиваемой операции. Вполне возможно, что придется ждать до тех пор, пока1 не будет получен доступ к данным, хранящимся на диске.
Обработка сервисной подпрограммой продолжается после того,. как система прерывания начинает «слышать» соответствующее- дисковое ЗУ. В подобной ситуации часто бывает необходимо. опрашивать текущее состояние регистра прерывания с помощью команды ИМ, чтобы затем запомнить это состояние в ЗУ. В дальнейшем можно снова загрузить регистр прерывания с помощью команды 51М и замаскировать все входы сигнала прерывания, за исключением того, который должен обеспечить данные с дискового ЗУ для обработки текущей сервисной подпрограммой. Наложение прерываний возникает довольно часто, особенно в случае систем, с которыми связаны многочисленные периферийные устройства или схемы. В гл. 6 мы еще вернемся к теме прерывания при рассмотрении процессов записи и чтения данных на ленту кассетного магнитофона.
При записи данных на ленту тот байт, который пересылается МП на шину данных, преобразуется в последовательный набор битов с помощью выходной схемы УСАПП, Этот набор битов затем модулируется в ЧМн-блоке и записывается на ленту. Во время преобразования параллельного набора битов в- последовательный МП находится в режиме ожидания. После того как преобразование закончено и МП готов передать новый байт данных, нужно сообщить об этом с помощью запроса на прерывание.
МП выходит из ждущего режима и подготавливает следующий байт для записи на ленту. Режим прерывания применяется также и при чтении данных с ленты. После демодуляции считываемых данных полу-- ченный последовательный набор битов преобразуется в параллельный. По завершении преобразования нужно сообщить об этом в МП с помо1цью запроса на прерывание, после чего МП считывает соответствующий байт данных. 3.12. Команды ввода и вывода Эти команды осуществляют обмен данными между внеш" ними схемами МП.
Как команды ввода, так и команды вывода сопровождаются операндом длиной в один байт, с помощью Глава д $58 которого можно указать 2'=256 различных портов ввода-вывода информации (рис. 3.35). Команда ввода обычно пересылает байт, поступающий из порта ввода, в аккумулятор А и затем из аккумулятора А в определенный приемник. До поступления команды вывода передаваемые данные необходимо загрузить в регистр А.
Ввод н вывод донных яо шоне данных (в( а=в-2вв ((байт) ООТ норп1 вывода(вывод данньа) (4) (данные) онг Восьмеаичное: 323 Шестнадаатерочное: Рд Фламховыв биты не изменяются я=о-гьв и байт) Рнс. 3.33. Команды ввода н вывода 11)О-команды). По команде ввода МП обеспечивает сигнал 10Яеай, с помощью которого получают разрешение тристабильные выходы буферного регистра ввода, в результате чего вводимый байт попадает на шину данных. При выводе данных с помощью сигнала 10/%г!1е нужно начать тактированне 8-разрядного регистра на Р-триггер, в результате чего этот регистр произведет считывание байта, переданного МП на шину данных. Ввод и вывод осуществляются также за счет выборки нз ЗУ, после которой обращение к другим ЗУ уже не производится.
При этом не имеет никакого значения, производится ли обращение к ячейке ЗУ с однобайтовым словом или же выбирается однобайтовый регистр на триггерах. ЗУ обычно имеет внутреннюю схему выборки адресов, которая доступна также и при использовании регистров. Как правило, такая схема вы- 169 Надир команд микроЭВМ борки адресов применяется как дополнительная. Так как объем ЗУ в МП невелик, можно выбирать регистр ввода или вывода с помощью какого-либо специального бита, например старшего бита адреса ЗУ.
Команды ввода и вывода не влияют на значения флажковых битов. 3.13. Команда останова Эта команда (НЬТ) может остановить МП, не изменяя содержимого регистров или ЗУ (рис. 3.36). Если МП находит- Специальные команды Восенернч- ный Шестнвааа- терненмй Двоичный 060 30 001!0000 00100111 047 Рис. 3.36. Специальные команды. ся в НЬТ-режиме, то выйти из него он может только по команде сброса в нуль или прерывания (КЗТ). Команду НЬТ можно использовать для того, чтобы перевести МП в режим ожидания прерывания, на которое послан запрос.
При последовательной пересылке данных, например из некоторой линии связи, в заданном интервале времени обычно генерируется один байт. В подобной ситуации можно держать МП в режиме ожидания по команде НЬТ до тех пор, пока не будет подготовлен очередной байт данных. Затем происходит инициирование пересылки этого байта с помощью запроса не прерывание. 3.14. Изменение значения флажкового бита переноса При арифметической обработке данных может возникнуть необходимость в изменении значения флажкового бита переноса. Это изменение осуществляют две команды: СМС (Сотр- Е1 — разрешение прерывания 1з! — запрещение прерывания НЕТ вЂ” конец ХОР— пустая команда м1М вЂ” считать маску прерывания 3!М вЂ” установить маску прерывания 1УАА — выполнить десятичную коррекцию содержимого акку- мулятора 11!!!011 1!!!00!1 011!О!1О 00000000 00100000 373 363 166 000 040 РВ ГЗ 76 00 20 1бо Глава д )ешеп1 Саггу — инвертировать перенос) и ЯТС (Яе1 Саггу— установить признак переноса) (рис.