Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
М П У КП (текст подряд).doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.51 Mб
Скачать

6.5.2. Блок задержки

Задержка длительностью 0,5 секунды вводится для того, чтобы после отключения электродвигателя его повторное включение на его реверс происходило лишь после погасания дуги на контактах отключенного контактора. Задержку целесообразно реализовать на базе программируемого интервального таймера КР580ВИ53. Здесь рассмотрен

вариант программной реализации выдержки времени длительностью 0,5 с.

В цикле программе задержки, выполняемой М раз (метка М4 основной программы), используются команды DCX H, MOV A,H, ADD L и JNZ. Число М, заносимое в две последовательные ячейки памяти, начиная с адреса BASE (в программе BASE=0C73), которое загружаемся в регистровую пару HL, можно определить по формуле

М = Тзад · fт / N

Длина команд (в тактах): DCX Н – 5; MOV A,H – 5, ADD L – 4; JNZ – 10. Всего N=5+5+4+10=24 тактов.

Для реализации заданной задержки Тзад=0,5 с при тактовой частоте микропроцессора fт = 2 МГц, получим

М=0,5·2·106/24=4166710=А2С3Н

Таким образом, в ячейку памяти BASЕ при программировании ПЗУ надо записать число С3Н, в ячейку BASE+1 - число А2Н.

6.5.3. Подпрограмма управления электродвигателем лифта

Можно увидеть, что в алгоритме программы рис.3 есть две группы аналогичных блоков: 4…9 для движения "Вверх" и 10…14 для движения "Вниз", отличающихся только разрядами битов, условий и битами управляющих сигналов. Эти группы блоков оформляем в виде одной подпрограммы. Для настройки ее на выполнение движений "Вверх" и "Вниз" используем внутренние регистры МП.

В регистре В хранится содержимое порта РА: информация о состоянии кнопок и конечных выключателей системы. В регистре С содержится код 04Н=0000.0100 или 08Н=0000.1000 маски для проверки конечных выключателей, соответственно, S4 или S5. В регистре Е содержится код 08Н=0000.1000 или 10Н=0001.0000 маски для зажигания ламп, соответственно, Н1 или Н2. В регистре Н содержится код 20Н=0010.0000 маски для зажигания лампы Н5 "Стоп". В регистре L содержится код 02Н=0000.0010 или 04Н=0000.0100 маски для включения электродвигателя для движения лифта , соответственно, "Вверх" или "Вниз".

Адрес

Код команды

Метка

Мнемокод

Комментарии

PUSH PSW

Запомнить в стеке содержимое регистров

PUSH D

PSW и DЕ

MVI D, 10

Занести в регистр D константу 10 маски для проверки состояния кнопки "Стоп"

ADR5

MOV A,B

Переслать в регистр А содержимое порта РА

ANA С

Конечный выключатель "Лифт вверху" ("Лифт внизу") сработал?

JNZ ADR6

Если нет, проверить состояние кнопки "Стоп"

MOV А,Е

Если да, зажечь, подключенную к порту РВ

OUT AD

лампу "Лифт вверху (внизу)", электродвигатель не включать и выйти на подпрограмму

JMP ADR7

задержки 0,5 с

ADR6

MOV A,B

Переслать в регистр А содержимое порта РА

ANA D

Кнопка "Стоп" нажата?

JNZ ADR7

Если нет, идти к ADR7

MOV А,Н

Если да, зажечь подключенную к порту РВ

OUT AD

лампу "Стоп", и электродвигатель не

JMP ADR8

включать

ADR7

MOV A,L

Включить электродвигатель "Вверх (Вниз)" и

OUT AD

зажечь лампу "Движение вверх (вниз)"

JMP ADR5

Идти в начало подпрограммы управления двигателем

ADR8

POP D

Извлечь из стека содержимое регистра DЕ

POP PSW

Извлечь из стека содержимое регистра PSW

RET

Возврат в основную программу

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]