Система прерываний
Логические команды
· 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 записывается единица