Устройство управления двухтактным двигателем внутреннего сгорания, страница 2

Если оператор нажал клавишу пуск, начинается работа двигателя. Программа начинает свой рабочий цикл. Он начинается с загрузки в аккумулятор значения скорости вращения, затем происходит вызов подпрограммы, которая отвечает за вращение двигателя с нужной скоростью, а также проверяет, нажаты ли другие значащие клавиши(«3» или «5»). Как только подпрограмма выполнила все действия, она выходит в основную программу. Затем происходит зацикливание, т.е. из памяти в аккумулятор опять заносится значение скорости вращения двигателя и происходит вызов подпрограммы вращения двигателя. Цикл будет продолжаться, пока скорость не понизится до нуля. В этом случае программа возвращается к метке Start и ожидает нажатия клавиш(«1» или «3»).


Рисунок 2.1 Блок-схема основной программы.

Рисунок 2.2 Блок-схема подпрограммы ввода с клавиатуры.

Рисунок 2.3 Блок-схема подпрограммы задержки

 

Рис.2.4 Блок-схема подпрограммы вывода на экран состояния двигателя

Рисунок 2.5 Блок-схема подпрограммы вращения коленвала с заданной скоростью

Листинг программы

;  Устройство управления двухтактным двигателем внутреннего сгорания

;  0 - Пуск

;  3 - частота оборотов коленвала 6 об/с

;  5 - плавное уменьшение оборотов с 6 до 0 об/с

porta                         equ         80h                        ; адрес первого индикатора         

portb                         equ         81h                        ; адрес второго индикатора           

portc                         equ         82h                        ; адрес клавиатуры         

porcrl                        equ         83h                        ; адрес порта управления внешними устройствами

povdr                        equ         250                        ; пост. времени защиты от дребезга (кол. повторов).

kodkl                        equ         00101001b          ; код, соответствующий нажатию клавиши 0,3 или 5.

                                   org          800h                      ; стартовый адрес программы в ОЗУ стенда                         

;-----------------------------------------------------------------------------------------------------------------------------

                                  lxi           sp,9a0h                 ; инициализация указателя стека

                                   mvi         a,89h                     ; загрузка управляющего байта внешних устройств

                                   out          porcrl                     ; вывод управляющего байта в порт управления

start:         call         enter

varianty:  cpi          00000001b          ; нажата клавиша 0 (старт)?

jnz             cnst_inc                                ; иначе нажато 3 или 5

                   cpi          00000001b          ; нажата клавиша 0

                   jz            cycle                      ; да, переходим по метке cycle    

;---------------------------------пуск двигателя-----------------------------------------

                   jmp        start                       ; переход в начало программы.