Микропроцессорная система коррекции режимов работы двигателя внутреннего сгорания (Текст программы), страница 4

0070 0090                movwf   ow          ; (owh,ow) содержит текущее время

0071 081E                movf    temph,w     ; т.е. начало отсчета нового периода

0072 008F                movwf   owh

0073 306D                movlw   b'01101101' ; сбрасываем флаги в регистре flag

0074 058C                andwf   flag,f      ; т.к. начинается новый период

0075 1985                btfsc   _porta,S_A  ; синхронный впрыск?

0076 100D                bcf     flagh,0     ; сбрасываем флаг выбора импульса "топливо"

; в текущем периоде

; изменение разряда

0077 3080                movlw   b'10000000' ; отвечающего за текущее значение

0078 078D                addwf   flagh,f     ; выдаваемого сигнала "топливо"

0079 0895                movf    t2h,f     ; проверка длительности скорректированного

007A 1D03                btfss   _status,z ; сигнала "зажигание" на равенство нулю

007B 287F                goto    rb_00     ;

007C 0896                movf    t2,f      ; если ср и мр равны нулю

007D 1903                btfsc   _status,z ; то идем на выход,

007E 2849                goto    exit      ; т.е. коррекции не было

007F 081F        rb_00   movf    templ,w   ; если коррекция производилась, то

0080 0796                addwf   t2,f      ; прибавляем текущее значение времени

0081 1803                btfsc   _status,c ; к скорректированному значению длительности

0082 0A95                incf    t2h,f     ; сигнала -> получаем время в текущем периоде

0083 081E                movf    temph,w   ; когда должны выдать скорректированный сигнал

0084 0795                addwf   t2h,f     ; если происходит переполнение ср

0085 1803                btfsc   _status,c ; то ставим флаг, который сбросится при

0086 170D                bsf     flagh,6   ; переходе таймера через 0

0087 2849                goto    exit      ; идем на выход


MPASM 01.50 Released              DET.ASM   6-23-1999  21:01:07         PAGE  6

LOC  OBJECT CODE SOURCE TEXT

VALUE

0088 1806        RB_z    btfsc   _portb,inpb ; определение фронта сигнала

0089 2861                goto    RB          ; "зажигание"

; |_

008A 3043                movlw   b'01000011' ; 1:16 период 6,4mks по _|

008B 0062                option           ; загружаем OPTION

008C 080F                movf    owh,w    ; загружаем ср начала отсчета периода

008D 021E                subwf   temph,w  ; вычитаем из ср текущего времени

008E 0097                movwf   tay2h    ; записываем ср длительности "зажигания"

008F 0810                movf    ow,w     ; мр начала отсчета

0090 021F                subwf   templ,w  ; мр текущего времени

0091 0098                movwf   tay2     ; мр длительности "зажигание"

0092 1C03                btfss   _status,c; при переполнении

0093 0397                decf    tay2h,f  ; уменьшаем ср

0094 178C                bsf     flag,7   ; ставим флаг принятия импульса "зажигание"

0095 1E05                btfss   _porta,idl ; проверяем IDL

0096 289D                goto    _out_i2    ; если равен 0 идем на выдачу импульса

0097 0895                movf    t2h,f      ; проверяем на 0 скорректированное значение

0098 1D03                btfss   _status,z  ; ср = 0?

0099 2849                goto    exit       ; нет -> идем на выход

009A 0896                movf    t2,f       ;

009B 1D03                btfss   _status,z  ; мр = 0?

009C 2849                goto    exit       ; нет -> идем на выход

009D 1486        _out_i2 bsf     _portb,outc ; выдаем импульс "зажигание"

009E 30B5                movlw   b'10110101' ; настраиваем регистр для

009F 058C                andwf   flag,f      ; сброса флагов

00A0 0195                clrf    t2h         ; очищаем регистры для хранения

00A1 0196                clrf    t2          ; скорректированной длительности импульса

00A2 160C                bsf     flag,4      ; ставим флаг выдачи импульса "зажигание"