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

6.2.6. Вывод управляющего слова на группу автономных устройств

Управляющие слова формируются по командам логических операций.

Команда ΛNI используется для сброса тех бит, которые в маске заданы нулем. Команда ORI используется для установки бит в XRI инвертирует отдельные биты (в соответствии с выражением I+X=X), а также для обнуления выходного порта (Х+Х=0).

Рассмотрим несколько примеров формирования управляющего слова для случая, когда выходной порт работает на 8 светодиодных индикаторах. Будем считать, что копия управляющего слова содержится в аккумуляторе.

Пример 1. Погасить светодиоды L0, L5, L7, не изменяя состояния остальных светодиодов, управляемых из порта I.

ANI 5EH ; установка в нуль D0, D5 и D7

OUT Ø1Н ; вывод слова в порт I

Пример 2. Включить светодиоды L2, L3, L4.

ORI 1CH ; установка в «I» D2, D3, D4

OUT Ø1H ; вывод слова в порт I

Пример 3. Выдать на светодиоды управляющее слово. Управляющий байт для светодиодов L0+L3, хранится в младшей тетраде регистра В, а для светодиодов L4+L7 – в тетраде регистра С.

MVI A,ØFH; загрузка в А маски OOOOIIII

ANA B ; маскирование В

MOV B,A ; сохранение в регистре В кода OOOOХХХХ

MOV A, C ;

ANI ØFØH ; наложение маски IIIIOOOO

ORA B ; упаковка тетради

OUT ØIH ; выдача управляющего слова в порт I

Пример 4. Реализовать пульсирующую световую индикацию на выходе D5, не изменяя состояния остальных светодиодов.

LOOP: XRI 2ØH ; наложение маски OOIOOOOO

OUT Ø1H ; вывод в порт I

CALL DELAY ; задержка

JMP LOOP ; цикл

Командой CALL DELAY осуществляется вызов программы временной задержки необходимой длительности.

6.2.7. Формирование временной задержки малой длительности

Программная реализация временной задержки использует метод программных циклов, при котором в некоторый POH загружается число, которое затем при каждом проходе уменьшается на 1. Так продолжается до тех пор, пока содержимое рабочего регистра не станет равным нулю, что интерпретируется программой как момент выхода из программного цикла. Время задержки при этом определяется величиной числа и временем выполнения команд, образующих программный цикл.

Схема алгоритма такой программы показана на рис.6.7.

B = X

B = B - 1

нет

да

Рис. 6.7. Схема алгоритма временной задержки

Программа имеет имя TIME, и в случае ее вызова основной программой по команде CALL TIME должна завершаться командой возврата RET.

Предположим, что в программе, управляющей работой контроллера, процессор которого работает с частотой 2 МГц (период составляет 0,5 мкс), необходимо реализовать временную задержку 100мкс. Фрагмент программы, т.к. предполагается, что основная программа будет производить к ней многократные обращения для формирования выходных импульсных сигналов, длительность которых кратна 100мкс.

Текст этой подпрограммы будет следующей:

TIME: MVI B, X : загрузка В числом Х

COUNT: DCR B : декремент В

JNZ COUNT : цикл, если В≠0

RET : возврат

Для получения требуемой временной задержки необходимо определить величину числа Х, загруженного в регистр В, а это выполняется в основании расчета времени выполнения команд, образующих подпрограмму. При этом необходимо учитывать, что команды MVI B, X и RET выполняются однократно, а число повторений команд DCR и JNZ равно числу Х. Кроме того, обращение к подпрограмме осуществляется по команде CALL TIME, время исполнения которой необходимо учитывать при подсчете временной задержки.

В описании команд МП К580ИК80 указывается, за сколько тактов основной частоты синхронизации выполняются команды микропроцессора. На основании этих данных может записать:

CALL TIME - 17 тактов – 8,5 мкс.

MVI B, X - 7 тактов – 3,5 мкс.

DCR B - 5 тактов – 2,5 мкс.

JNZ COUNT - 10 тактов – 5 мкс.

RET - 10 тактов – 5 мкс.

Таким образом, однократно выполняемые команды в этой подпрограмме требует 17 мкс. (8,5 + 3,5 + 5,0). Следовательно, для получения требуемой задержки в 100 мкс. Необходимо выполнить команды DCR и JNZ столько раз, чтобы время их выполнения составило 83 мкс. (100 – 17). Однако время выполнения этой пары команд составляет 7,5 мкс. (2,5 + 5). Поэтому, если принять Х = 10 то возможно получить временную задержку 75 мкс. недостающие 8 мкс. можно получить четырехкратным исполнением команды пустой операции NOP, время выполнения которой равно 2 мкс. Исходя из приведенного расчета, можно записать уточненный текст подпрограммы.

TIME : MVI B, 10 H : загрузка в регистр В числа 10

COUNT: DCR B : декремент счетчика

JNZ COUNT : цикл, если В≠0

NOP : группа пустых операций для

NOP : точной подстановки времени

NOP : задержки

NOP :

RET : возврат в основную программу.