014D 0199 clrf 0x19
014E 019A clrf 0x1A
014F 019B clrf 0x1B
0150 019C clrf 0x1C
0151 019D clrf 0x1D
0152 019E clrf 0x1E
0153 019F clrf 0x1F
0154 01A0 clrf 0x20
0155 01A1 clrf 0x21
0156 01A2 clrf 0x22
0157 01A3 clrf 0x23
0158 01A4 clrf 0x24
0159 01A5 clrf 0x25
015A 01A6 clrf 0x26
015B 01A7 clrf 0x27
015C 01A8 clrf 0x28
015D 01A9 clrf 0x29
015E 01AA clrf 0x2A
015F 01AB clrf 0x2B
0160 01AC clrf 0x2C
0161 01AF clrf 0x2F
0162 0184 clrf count
0163 30FF movlw 0xFF ; записываем максимальное число
0164 00AC movwf dblh ; в регистровую пару
0165 00AD movwf dbl ; которая будет содержать период
; перехода на двойной счет
0166 1683 bsf _status,rp0 ;переключаем страницу
0167 0064 clrwdt ; сброс WDT
0168 3043 movlw b'01000011' ; 1:16 период 6,4mks по заднему фронту
0169 0081 movwf _option ; загрузка OPTION
016A 3011 movlw b'00010001' ; настройка порта RB
016B 0086 movwf _trisb ; через теневой регистр
016C 301F movlw b'00011111' ; настройка порта RA
016D 0085 movwf _trisa ; через теневой регистр
016E 1283 bcf _status,rp0 ; переключаем страницу обратно
016F 0186 clrf _portb ; сбрасываем внутренние регистры портов
0170 0185 clrf _porta ; RA и RB
0171 30B8 movlw b'10111000'; настройка регистра прерываний
0172 018B clrf _intcon ; очистка перед записью
0173 048B iorwf _intcon,f ; установка требуемых прерываний
0174 1B8C lp_001 btfsc flag,7 ; приняли сигнал "зажигание"?
MPASM 01.50 Released DET.ASM 6-23-1999 21:01:07 PAGE 11
LOC OBJECT CODE SOURCE TEXT
VALUE
0175 218A call make_ignition; да - идем корректировать
0176 1B0C btfsc flag,6 ; скорректировали сигнал "зажигание"?
0177 21CB call check_outC ; да - выдаем
0178 1C0D btfss flagh,0 ; приняли сигнал "топливо"?
0179 21E4 call make_inj_t ; да - корректируем
017A 1D85 btfss _porta, S_A ; проверяем предустановку порта
017B 297E goto lp_100 ; идем далее - асинхронный впрыск
017C 1C8D btfss flagh,1 ; выдаем сигнал для 2,3 форсунок?
017D 2242 call check_inj2 ; да - выдаем
017E 1D0D lp_100 btfss flagh,2 ; выдаем сигнал для 1,4 форсунок?
017F 222F call check_inj1 ; да - проверяем
0180 1C05 btfss _porta, Dat ; проверяем сигнал с одновибратора
0181 2986 goto lp_010 ; нет сигнала - идем на начало цикла
0182 303F movlw b'00111111' ; есть сигнал - сбрасываем флаги отсчета
0183 058D andwf flagh,f ; номера группы форсунок
0184 170D bsf flagh,6 ; устанавливаем активной 1,4 форсунку
0185 2974 goto lp_001 ; идем на начало цикла
0186 1885 lp_010 btfsc _porta, det ; проверяем сигнал с датчика детонации
0187 2974 goto lp_001 ; идем на начало цикла
0188 168C bsf flag,5 ; ставим флаг детонации
0189 2974 goto lp_001
;--------------------------------------------------------------018A make_ignition
018A 1B0C btfsc flag,6 ; проверяем - уже скорректировали?
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.