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

010A 307F                movlw   b'01111111'; проверяем


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

LOC  OBJECT CODE SOURCE TEXT

VALUE

010B 0513                andwf   tmp,w      ; значащие биты коррекции

010C 1903                btfsc   _status,z  ; если нулевая коррекция

010D 2922                goto    c_i_n      ; просто переписываем старое значение

010E 0824                movf    tjdh,w    ; загружаем ср длительности впрыска

010F 0094                movwf   adrk      ; запись в рабочий регистр

0110 0D25                rlf     tjd,w     ; сдвигаем влево мр и ср периода

0111 0D94                rlf     adrk,f    ; в adrk шаг коррекции = 0.78125%

; произвели деление периода на 0x80

0112 1B93                btfsc   tmp,7     ; проверка старшего разряда коррекции

0113 291B                goto    dcr_inj   ; если 1 - то отрицательная

; цикл коррекции

0114 0814        i_i1    movf    adrk,w    ; загружаем шаг коррекции

0115 0799                addwf   suml,f    ; добавляем к мр длительности

0116 1803                btfsc   _status,c ; перенос?

0117 0AAE                incf    sumh,f    ; да - увеличиваем ср

0118 0B93                decfsz  tmp,f     ; уменьшаем счетчик

0119 2914                goto    i_i1      ; если не ноль - заново

011A 2922                goto    c_i_n     ; идем на запись скорр. значения

011B 1393        dcr_inj bcf     tmp,7     ; сброс бита знака коррекции

011C 0814        i_i2    movf    adrk,w    ; шаг коррекции

011D 0299                subwf   suml,f    ; отнимаем от мр длительности

011E 1C03                btfss   _status,c ; перенос

011F 03AE                decf    sumh,f    ; уменьшаем ср

0120 0B93                decfsz  tmp,f     ; уменьшаем счетчик

0121 291C                goto    i_i2      ; если не ноль - заново

0122 1D85        c_i_n   btfss   _porta, S_A ; значение, задаваемое пользователем

0123 2A26                goto    no_m_inj  ; идем на корр. асинхр. впрыска

0124 0819                movf    suml,w    ; переписываем скорректированное

0125 0093                movwf   tmp       ; значение в регистры

0126 082E                movf    sumh,w    ; для уменьшения полученного

0127 0094                movwf   adrk      ; значения на 25%

0128 20F9                call    _make25   ; вычисляем 25% длительности

0129 0814                movf    adrk,w    ; результат в паре (adrk,tmp)

012A 02AE                subwf   sumh,f    ; вычитаем из длительности

012B 0813                movf    tmp,w     ; (sumh,suml) - (adrk,tmp)

012C 0299                subwf   suml,f    ; получаем 75%

012D 1C03                btfss   _status,c ; длительности топлива

012E 03AE                decf    sumh,f    ;

012F 0801                movf   _tmr0,w    ; прибавляем к полученному результату

0130 0799                addwf  suml,f     ; текущее время

0131 1803                btfsc  _status,c  ; получаем момент, когда нужно

0132 0AAE                incf   sumh,f     ; сбросить выходной сигнал

0133 080E                movf   _tmr0h,w

0134 07AE                addwf  sumh,f     ;

0135 0008                return            ; при возврате анализируется флаг переноса

0136 2940                goto   start

;--------------------------------------------------------------0140             org     0x140

0140 018C        start   clrf    0x0C ; сброс всех программно

0141 018D                clrf    0x0D ; доступных регистров


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

LOC  OBJECT CODE SOURCE TEXT

VALUE

0142 018E                clrf    0x0E

0143 018F                clrf    0x0F

0144 0190                clrf    0x10

0145 0191                clrf    0x11

0146 0192                clrf    0x12

0147 0193                clrf    0x13

0148 0194                clrf    0x14

0149 0195                clrf    0x15

014A 0196                clrf    0x16

014B 0197                clrf    0x17

014C 0198                clrf    0x18