Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Микропроцессоры и микропроцессорные системы.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
151.55 Кб
Скачать

Параллельные порты ввода-вывода

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

Для связи с внешними устройствами в МК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 записывается единица