01F7 07A8 addwf _fsrh,f ; прибавляем к ср начало отсчета
01F8 1803 btfsc _status,c; перенос?
01F9 168D bsf flagh,5 ; ставим флаг переполнения
01FA 168C bsf flag,5 ; ставим флаг записи
01FB 0008 return ; возврат
01FC 1A8D mit2 btfsc flagh,5 ; переполнение
01FD 0008 return ; да - возврат
01FE 0828 movf _fsrh,w ; загружаем ср времения выдачи
01FF 020E subwf _tmr0h,w ; вычитаем из ср текущего времени
0200 1C03 btfss _status,c; проверяем перенос
0201 0008 return ; выход
0202 1D03 btfss _status,z; проверяем флаг нуля
0203 2A08 goto m_i_0 ; идем на коррекцию
0204 0804 movf _fsr,w ; сравниваем мр
0205 0201 subwf _tmr0,w ; с текущим временем
0206 1C03 btfss _status,c; если нет переноса
0207 0008 return ; то возврат
MPASM 01.50 Released DET.ASM 6-23-1999 21:01:07 PAGE 14
LOC OBJECT CODE SOURCE TEXT
VALUE
0208 140D m_i_0 bsf flagh,0 ; ставим флаг скорректировали в этом периоде
0209 128C bcf flag,5
020A 1F8D btfss flagh,7 ; если очередь импульса 1,4 форсунок
020B 2A16 goto m_i_t_1 ; идем туда
020C 1586 bsf _portb,inj2; выдаем импульс 2,3 форсунки
020D 2100 call cr_inj_com ; корректируем длительность
020E 1803 btfsc _status,c ; если есть перенос из ср
020F 160D bsf flagh,4 ; ставим флаг переполнения
0210 108D bcf flagh,1 ; сброс флага выдачи импульса
0211 0819 movf suml,w ; мр переписываем полученные значения
0212 00A9 movwf tj2 ; для выдачи импульса
0213 082E movf sumh,w ; ср
0214 00A8 movwf tj2h ;
0215 0008 return ; возврат
0216 1506 m_i_t_1 bsf _portb,inj1; выдаем импульс 1,4 форсунки
0217 2100 call cr_inj_com ; корректируем длительность
0218 1803 btfsc _status,c ; если есть перенос
0219 158D bsf flagh,3 ; ставим флаг переполнения
021A 110D m_i_t_3 bcf flagh,2 ; сбрасываем флаг выдачи
021B 0819 movf suml,w ; переписываем скорректированные
021C 00A7 movwf tj1 ; значения
021D 082E movf sumh,w
021E 00A6 movwf tj1h
021F 0008 return
0220 140D _mit3 bsf flagh,0 ; сброс флага приняли сигнал
0221 0824 movf tjdh,w ; записываем в adrk и tmp
0222 00AE movwf sumh ; значение для коррекции
0223 0825 movf tjd,w
0224 0099 movwf suml
0225 2905 goto cr_i_1 ; идем на преобразование
0226 0801 no_m_inj movf _tmr0,w ; прибавляем к полученному результату
0227 0799 addwf suml,f ; текущее время
0228 1803 btfsc _status,c ; получаем момент, когда нужно
0229 0AAE incf sumh,f ; сбросить выходной сигнал
022A 080E movf _tmr0h,w
022B 07AE addwf sumh,f
022C 1803 btfsc _status,c ; если есть перенос
022D 158D bsf flagh,3 ; ставим флаг переполнения
022E 2A1A goto m_i_t_3
;--------------------------------------------------------------022F check_inj1 ; проверка импульса 1,4 форсунок
022F 198D btfsc flagh,3 ;флаг переполнения активен?
0230 0008 return ; да - возврат
0231 1985 btfsc _porta,S_A
0232 2A35 goto c_i1_
0233 1E05 btfss _porta,idl ; проверяем значение IDL
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.