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
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.