Система прерываний


Логические команды

· ANL – и – логическое умножение

o A,

§ R0-R7

§ Ad

§ @R0-R1

§ #d

o Ad,

§ A

§ #d

o C, bit

Команда используется тогда, когда необходимо сбросить группу бит в ноль, оставляя остальные без изменения, для этого необходимо сбрасываемые биты обработать нулем.

Пример:

В аккумуляторе записано число B7, требуется сбросить в 0 биты 1, 2, 5, 7, оставляя остальные без изменения

MOV A,#B7

ANL A,#59

 

В аккумуляторе находится число F4 сбросить в ноль 2, 4, 6, оставляя остальные без изменения

MOV A,#F4

ANL A,#AB

 

· ORL – или – логическое сложение

o A,

§ R0-R7

§ Ad

§ @R0-R1

§ #d

o Ad,

§ A

§ #d

o C, bit

 

Команда используется если необходимо группу бит установить в единицу, оставляя остальные без изменения

 

· XRL – исключающее или

o A,

§ R0-R7

§ Ad

§ @R0-R1

§ #d

o Ad,

§ A

§ #d

o C, bit

Команда используется , если необходимо группу бит проинвертировать. Группу инвертируемых бит обработать единицей, остальные нулями

В случае использования внешней памяти порт P0 служит для вывода младшего байта адреса, порт P2 – для вывода старшего байта адреса, кроме того P0 будет использоваться для чтения и записи данных внешней памяти

Порт P3 используется для таймеров, прерываний и прочих аппаратных возможностей, если он не используется для этих целей, то может быть использован в программе для нужд программиста.

МК51 имеет пять аппаратных источников прерывания.

Прерывание – это сигнал, который поступает в МК от одного из источников и вызывает переход из основной программы в подпрограмму обработки прерывания. Появление сигнала прерывания – неожиданное событие для основной программы, поэтому мы не знаем в каком месте выполнения основной программы это произойдет. В МК51 используется векторная система прерываний, это значит, что для каждого источника прерываний в ПЗУ предусмотрен адрес начала подпрограммы обработки прерывания (он и называется вектором)

0003 – INT0 – внешнее прерывание 0

000B – T0 – таймер

0013 – INT1 – внешнее прерывание 1

001B – T1 – таймер

0023 – прерывание от последовательного порта

 

Получив запрос прерывания от одного из пяти источников, процессор автоматически выполняет следующие действия:

· Помещает в стек адрес возврата в основную программу

· Осуществляет переход по соответствующему адресу обработки прерывания

· После обслуживания прерывания возвращается в основную программу с помощью команды RETI

 

Для обслуживания прерывания используется 2 регистра специальных функций:

· IE – управление разрешением запрета прерываний

· IP – управление приоритетами прерываний

 

IE

Номер бита
  EA - - ES ET1 EX1 ET0 EX0
Разрешение/запрет Все прерывания     Последовательный порт T1 INT1 T0 INT0

SetB IE.7 – разрешение всех подряд

CLR IE.3 – запрет прерываний от таймера T1

 

IP

 

Номер бита
  - - - PS PT1 PX1 PT0 PX0
Установка приоритетов       Последовательный порт T1 INT1 T0 INT0

По умолчанию приоритеты установлены следующим образом ß

Если необходимо изменить очередность, то в соответствующий бит регистра IP записывается единица