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

;------------------------------варианты...----------------------------------------------

cnst_inc:  cpi          00001000b          ; нажата клавиша 3 (частота оборотов коленвала 6 об/сек)?

jnz          incremnt               ; иначе нажато 5 (плавное увеличение

; оборотов с 0 до 6 об/сек)

call         rezhim6                 ;  вызываем подпрограмму установки режима скорости

;вращения коленвала

;-------------------основная программа выполнения цикла вращения коленвала--------------------------------------

cycle:        lxi           h,conddv              ; загружаем в пару Н адрес ячейки, где скорость вращения

                   mov       a,m                        ; перемещаем в аккумулятор значение состояния двигателя           

                   call         vrashen                 ; вызываем подпрограмму вращения коленвала с заданной скоростью

                   jmp        cycle                      ; зацикливаем основную программу

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

rezhim6:   lxi           h,conddv              ; занесение в пару h адреса ячейки памяти в которой находится код

; состояния двигателя

                   mvi         m,16h                    ;

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

incremnt: lxi           h,conddv              ;загружаем адрес ячейки с кодом состояния двигателя

                   mov       a,m                        ; пересылка в аккумулятор

cycle_vr:  call         vrashen ; вызов подпрограммы вращения двигателя на заданной частоте

                   lxi           h,conddv             

                   dcr          m                            ; последовательно уменьшаем частоту вращения

                   mov       a,m                        ; загружаем в аккумулятор

                   cpi          10h                        ; ограничение частоты(сравнение с минимальной скоростью)

                   jz            start                       ; переход в начало программы, если скорость минимальна

                   jmp        cycle_vr                                ; зацикливание

;----------------------------------алгоритм ввода------------------------------------------

enter:        mvi         c,povdr  ; загрузка кол. повторов при защите от дребезга на нажатие

rept:          in            portc                      ; опрос клавиатуры                        

                   ani          kodkl                     ; нажата клавиша 0,3 или 5?

                   jz            enter                      ; ничего не нажато

;защита от дребезга при нажатии

                   dcr          c                             ; да, нажато, уменьшение счетчика повторов при защите от дребезга

                   jnz          rept                        ; если дребезг не окончен, то переход по метке rept

                   in            portc                      ; чтение кода нажатой клавиши                                

                   lxi           h,klav                    ; занесение в пару Н адреса ячейки памяти, в которой

;необходимо сохранить код нажатой клавиши

                   mov       m,a                        ; пересылка кода нажатой клавиши в ячейку памяти, адрес