Научная литература
booksshare.net -> Добавить материал -> Физика -> Джонс М.Х. -> "Электроника - практический курс" -> 169

Электроника - практический курс - Джонс М.Х.

Джонс М.Х. Электроника - практический курс — М.: Постмаркет, 1999. — 528 c.
ISBN 5-901095-01-4
Скачать (прямая ссылка): elektronika1999.djvu
Предыдущая << 1 .. 163 164 165 166 167 168 < 169 > 170 171 172 173 174 175 .. 195 >> Следующая

программы "EXPLORE" на языке ассемблера процессоров Intel 80X86. Следует
проявить аккуратность при использовании подходящих адресов портов ввода и
вывода (&Н0301 и &Н0300 в схеме на рис. 14.17 соответственно). Как и в
микроЭВМ ВВС Micro, параллельный порт в персональном компьютере является
полезным средством сопряжения для вывода данных; он располагается по
адресу, лежащему в интервале &Н0378- 037F.
14.11 Как отвлечь процессор от выполняемой программы?
14.11.1 Прерывания
До сих пор наши эксперименты с вводом/выводом были иллюстрацией того, как
процессор опрашивает порт ввода и затем обрабатывает введенные данные в
соответствии с программой. Однако в практических приложениях часто бывает
необходимо предпринимать особые действия в ответ на редкие, но важные
события, когда тратить время процессора на постоянно повторяющийся опрос
порта ввода расточительно. Например, процессор нормально мог бы быть
занят сортировкой и оценкой данных на какой-нибудь удаленной станции с
телеметрической связью, куда время от времени извне поступает сигнал,
говорящий о том, что следует отправить результаты его работы в центр, на
базу. Для этого требуется, чтобы процессор оставил свою рутинную работу и
перешел к особой процедуре вывода в ответ на команду извне. Это
совершается путем использования имеющегося прямо на кристалле процессора
входа прерывания, сигнал на котором уводит процессор к особому месту в
памяти. А там процессор видит указатель, или вектор, отправляющий его в
специально предназначенную для этого часть программы.
Обычно процессор имеет не один вход прерывания, а больше, и у них
различные уровни приоритета . Если несколько прерываний приходят
одновременно, то они обрабатываются строго в порядке приоритетов. У
процессора 6502 два таких входа: вход немаскируемых прерываний (NMI),
имеющий наивысший приоритет и используемый в аварийной ситуации, например
для сохранения данных, когда пропадает напряжение питания, и вход
требования прерывания (IRQ), используемый для прерываний общего
назначения. По выбору программиста процессор можно сделать чувствительным
или нечувствительным к сигналам на входе IRQ, установив соответствующее
значение признака прерываний в регистре состояния процессора. Однако
сделать процессор нечувствительным к сигналам на входе NMI нельзя. У
более
Как отвлечь процессор от выполняемой программы? 469
сложных процессоров имеется большое число аппаратно реализованных входов
прерываний с различными приоритетами. Организация их работы
осуществляется с помощью программируемого контроллера прерываний
(Programmable Interrupt Controller, PIC), такого как используемая в
персональных компьютерах ИС 8259А (аналог 580ВН59 - Прим. перев.),
допускающая восемь уровней запроса, причем это число можно увеличить за
счет дополнительных ИС 8259А. Однако даже на двух входах, имеющихся у
процессора 6502, можно при подходящей операционной системе организовать
приоритетное обслуживание большого числа различных запросов на
прерывание. При обнаружении требования прерывания программа может
определить, какого оно происхождения, опрашивая различные возможные
источники запросов, такие как клавиатура, таймер и др. В зависимости от
приоритета, назначенного этому источнику, программа обработки данного
прерывания может начать исполняться немедленно или может быть на время
отложена до того, как будет закончена обработка прерывания с более
высоким приоритетом. Как раз для того, чтобы избежать такого
нежелательного прерывания во время обработки другого прерывания, и
применяется маскирование прерывания, то есть установка нечувствительности
процессора к запросам на этом входе.
Способ, посредством которого процессор обрабатывает прерывание, довольно
похож на процедуру перезапуска, за исключением того, что после выполнения
требуемой прерыванием подпрограммы, происходит возобновление исполнения
основной программы. Это означает, что перед тем, как приступить к
выполнению специальной подпрограммы обработки прерывания, программа
должна сохранить содержимое тех регистров, которые будут использованы в
подпрограмме обработки прерывания. Это содержимое может потребоваться
основной программе снова позднее, и поэтому промах в сохранении и
восстановлении содержимого регистров может привести к тому, что
соответствующие данные будут изменены во время исполнения программы
обработки прерывания, что приведет впоследствии к ошибке, когда будет
продолжена основная программа. Обычно данные из регистров сохраняют,
помещая их в специальную область памяти, отведенную под "стек", откуда их
можно извлечь в обратном порядке (последним пришел - первым вышел; Last-
IN First-Out, LIFO) после того, как завершится подпрограмма обработки
прерывания. Сам процессор в ответ на требования, поступающие на входы NMI
и IRQ, сохраняет содержимое счетчика команд и регистра состояния с тем,
чтобы позднее восстановить его при выполнении команды RTI ("возврат из
Предыдущая << 1 .. 163 164 165 166 167 168 < 169 > 170 171 172 173 174 175 .. 195 >> Следующая

Реклама

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed

Есть, чем поделиться? Отправьте
материал
нам
Авторские права © 2009 BooksShare.
Все права защищены.
Rambler's Top100

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed