
- •Микропроцессорная техника
- •2. Архитектура микропроцесора
- •2.1 Структура микропроцессора к580.
- •2.1.2. Арифметическо-логическое устройство
- •2.1.3. Шины микропроцессора
- •2.1.4. Стек
- •2.1.5. Буферные схемы
- •2.2. Слово состояния микропроцессора
- •2.2.1. Состояние захвата
- •2.2.2. Состояние прерывания
- •2.2.3. Состояние останова
- •2.3. Система команд микропроцессора к580
- •Приложение
2.2.1. Состояние захвата
Состояние захвата характеризуется тем, что микропроцессор, заканчивая выполнение текущего цикла команды, переводит буферы шины данных и буферы шины адреса в третье состояние. При этом микропроцессор отключается от внешних шин, предоставляя их в распоряжение некоторого внешнего устройства, и останавливает работу.
Переход в состояние захвата происходит следующим образом. От внешнего устройства поступает сигнал уровня логической единицы на вход Запрос захвата. Этот сигнал на отрицательном фронте импульса2тактаTgпринимается в триггер захвата управляющего устройства. Управляющее устройство заканчивает выполнение текущего цикла, переходит в состояние захвата и подтверждает это выдачей сигнала на выходеПодтверждение захвата. Сигнал на выходеПодтверждение захвата выдается на положительном фронте импульса1в тактеТд, если текущий цикл не является циклом записи; в противном случае этот сигнал выдается на положительном фронте импульса1 такта, следующего за тактомТд.
После окончания действия сигнала Захват (при переходе от уровня логической единице к уровню логического нуля) микропроцессор начинает выполнение следующего цикла с места, где было приостановлено исполнение программы.
2.2.2. Состояние прерывания
В микропроцессоре предусмотрена возможность по запросам внешних устройств прерывать выполнение текущей программы и переходить на выполнение новой программы, так называемой прерывающей программы (илипрограммы обслуживания прерывания). После окончания выполнения прерывающей программы микропроцессор возвращается к выполнению основной программы с команды, на которой произошло прерывание.
Если на некотором участке программы допускается ее прерывание, то при составлении программы в начале этого участка предусматривается команда inte, по которой триггер разрешения прерывания в управляющем устройстве микропроцессора устанавливается в состояние логической единицы, а в конце участка - командаintr, при выполнении которой триггер сбрасывается в состояние логического нуля. Состояние триггера выдается на выходРазрешение прерывания.
Процесс прерывания связан со следующими действиями. От внешнего устройства поступает сигнал уровня логической единицы на вход Запрос прерывания. Если прерывание разрешено (т. е. на выходеРазрешение прерывания имеется уровень логической единицы), то после окончания выполнения текущей команды триггер разрешения прерывания сбрасывается в состояние логического нуля, а в информации о состоянии микропроцессора, выдаваемой на шину данных, появляются сигналыПодтверждение прерывания (в разрядеD0),Ввод (в разрядеD1) и сигнал о том, что в данном цикле производится прием первого байта команды (в разрядеD5).CигналПодтверждение прерывания используется в качестве строба для выдачи внешним устройством на шину данных команды RST (командыРестарт).
При выполнении команды RST содержимое счетчика команд PC запоминается в стеке, а в счетчик команд PC записывается адрес первой команды прерывающей программы. Этот адрес задается следующим образом. Команда RST имеет структуру 11 АAА 111 и в счетчик команд заносится значение 00 000 000 00 ААА 000, которое и служит адресом первой команды прерывающей программы. Задавая определенную трехразрядную кодовую комбинацию ААА, внешнее устройство может задать адрес первой команды одной из восьми прерывающих программ.
После окончания выполнения прерывающей программы возврат в основную программу происходит следующим образом. Прерывающая программа заканчивается командой RET (Возврат из подпрограммы). В процессе выполнения этой команды адрес команды основной программы, перед которой произошло прерывание, выбирается из стека и передается в регистр адреса, а увеличенное на единицу значение заносится в счетчик команд.