Смекни!
smekni.com

Система управления механизмом зажигания (стр. 8 из 8)

movwfMulL

movfMXH,W

movwfMulM

callMUL00

movfMulL,W

movwfMulM

clrfMulL

callSUM00

movfTimerM,W

movwfMulL

movfMXH,W

movwfMulM

callMUL00

movfMulL,W

movwfMulH

clrfMulL

clrfMulM

callSUM00 ;Делим TimerL(H,M) на 10

movf TimerH,W;Старший байт делимого

movwf ResHi

movf TimerM,W;Средний байт делимого

movwf Mul1Hi

movf TimerL,W;Младший байт делимого

movwf Mul1Lo

movlw 0x00;Старший байт делителя

movwf DivHi

movlw 0x0A;Младший байт делителя

movwf DivLo

callDiv24_16

movfTmpH,W

movwfTimerH

movfTmpM,W

movwfTimerM

movfTmpL,W

movwfTimerL

clrfTmpH

clrfTmpM

clrfTmpL; Множим TimerL(H,M) на EX

movfMul1Lo,W

movwfMulL

movfEX,W

movwfMulM

callMUL00

movfMulH,W

movwfMulM

clrfMulH

callSUM00

movfMul1Hi,W

movwfMulL

movfEX,W

movwfMulM

callMUL00

movfMulL,W

movwfMulM

clrfMulL

callSUM00

movfResHi,W

movwfMulL

movfEX,W

movwfMulM

callMUL00

movfMulL,W

movwfMulH

clrfMulL

clrfMulM

callSUM00

movfTmpH,W

movwfMulH

movfTmpM,W

movwfMulM

movfTmpL,W

movwfMulL

movfTimerH,W

movwfTmpH

movfTimerM,W

movwfTmpM

movfTimerL,W

movwfTmpL

callSUM00; Вычитаем из TimerL(H,M) B(L,H) clrfMulH

movfBH,W

movwfMulM

movfBL,W

movwfMulL

callMIN00

movfTmpH,W

movwfTimerH

movfTmpM,W

movwfTimerM

movfTmpL,W

movwfTimerL; Подпрограмма отсчёта времени удержания комутатора

DecTime

bsfpCOIL; Подаём сигнал на комутатор (1 в RB2)

movlw0xFF; Отсчитываем квант времени таймера

movwfSec

movlwTMR_VALUE

subwfSec,F

PAUSE

decfszSec,F

gotoPAUSE

PLUS08

decf TimerL,F; Начинаем отсчёт времени (TimerL(H,M) 1)

movlw0xFF

subwfTimerL,W

btfss Status,Z

goto YES08

decf TimerM,F

movlw0xFF

subwfTimerM,W

btfss Status,Z

goto YES08

decf TimerH,F

movlw0xFF

subwfTimerH,W

btfss Status,Z

goto YES08

clrf TimerH ; Отсчёт времени (TimerL(H,M) 1) завершён

clrf TimerM

clrf TimerL

bcfpCOIL; ; Выставляем 0 в RB2 (отключаем сигнал коммутатору)

return

YES08

gotoDecTime

end