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

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 ; проверяем - уже скорректировали?