- •Микропроцессоры и мп системы
- •Диаграмма использования микропроцессоров
- •История развития микропроцессоров Поколения микропроцессоров:
- •Молекулярные микропроцессоры
- •Классификация микропроцессоров
- •Архитектура микроконтроллера i8051 (кр1816ве51)
- •Базовая архитектура
- •Структурная схема мк51
- •Организация памяти
- •Организация внутреннего озу (Карта распределения резидентной памяти данных)
- •Система команд
- •Способы адресации
- •Сложение
- •Сложение с переносом
- •Команды безусловного перехода
- •Команда проверки условия
- •Параллельные порты ввода-вывода
- •Логические команды
- •Система прерываний
Параллельные порты ввода-вывода
Порты – это набор адресуемых схем и регистров, через которые осуществляется связь с внешними аппаратными средствами.
Для связи с внешними устройствами в МК51 используются тридцать две двунаправленные линии. Они сгруппированы в четыре порта по восемь линий в каждой. Каждая линия может быть индивидуально и независимо от других запрограммирована на вход или выход.
Обращение к портам осуществляется через регистры специальных функций P0-P3.
Обращение к портам ввода-вывода производится с использованием команд оперирующих битом, группой бит или байтом
Логические команды
ANL – и – логическое умножение
A,
R0-R7
Ad
@R0-R1
#d
Ad,
A
#d
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 – или – логическое сложение
A,
R0-R7
Ad
@R0-R1
#d
Ad,
A
#d
C, bit
Команда используется если необходимо группу бит установить в единицу, оставляя остальные без изменения
XRL – исключающее или
A,
R0-R7
Ad
@R0-R1
#d
Ad,
A
#d
C, bit
Команда используется , если необходимо группу бит проинвертировать. Группу инвертируемых бит обработать единицей, остальные нулями
В случае использования внешней памяти порт P0 служит для вывода младшего байта адреса, порт P2 – для вывода старшего байта адреса, кроме того P0 будет использоваться для чтения и записи данных внешней памяти
Порт P3 используется для таймеров, прерываний и прочих аппаратных возможностей, если он не используется для этих целей, то может быть использован в программе для нужд программиста.
Система прерываний
МК51 имеет пять аппаратных источников прерывания.
Прерывание – это сигнал, который поступает в МК от одного из источников и вызывает переход из основной программы в подпрограмму обработки прерывания. Появление сигнала прерывания – неожиданное событие для основной программы, поэтому мы не знаем в каком месте выполнения основной программы это произойдет. В МК51 используется векторная система прерываний, это значит, что для каждого источника прерываний в ПЗУ предусмотрен адрес начала подпрограммы обработки прерывания (он и называется вектором)
0003 – INT0 – внешнее прерывание 0
000B – T0 – таймер
0013 – INT1 – внешнее прерывание 1
001B – T1 – таймер
0023 – прерывание от последовательного порта
Получив запрос прерывания от одного из пяти источников, процессор автоматически выполняет следующие действия:
Помещает в стек адрес возврата в основную программу
Осуществляет переход по соответствующему адресу обработки прерывания
После обслуживания прерывания возвращается в основную программу с помощью команды RETI
Для обслуживания прерывания используется 2 регистра специальных функций:
IE – управление разрешением запрета прерываний
IP – управление приоритетами прерываний
IE
Номер бита |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
EA |
- |
- |
ES |
ET1 |
EX1 |
ET0 |
EX0 |
Разрешение/запрет |
Все прерывания |
|
|
Последовательный порт |
T1 |
INT1 |
T0 |
INT0 |
SetB IE.7 – разрешение всех подряд
CLR IE.3 – запрет прерываний от таймера T1
IP
Номер бита |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
- |
- |
- |
PS |
PT1 |
PX1 |
PT0 |
PX0 |
Установка приоритетов |
|
|
|
Последовательный порт |
T1 |
INT1 |
T0 |
INT0 |
По умолчанию приоритеты установлены следующим образом
Если необходимо изменить очередность, то в соответствующий бит регистра IP записывается единица
