125837 (Система управления механизмом зажигания), страница 6

2016-07-30СтудИзба

Описание файла

Документ из архива "Система управления механизмом зажигания", который расположен в категории "". Всё это находится в предмете "промышленность, производство" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "остальное", в предмете "промышленность, производство" в общих файлах.

Онлайн просмотр документа "125837"

Текст 6 страницы из документа "125837"

movlw0xFF

subwfBH,W

btfss Status,Z

goto YES03

clrfBH

clrfBL

YES03

gotoYES07

IncX; Подпрограмма увеличения переменной Х

PLUS04

incf EX,F

movlw0x0A

subwfEX,W

btfss Status,Z

gotoYES05

clrfEX

PLUS05

incf MXL,F

btfss Status,Z

goto YES05

incf MXH,F

btfss Status,Z

goto YES05

movlw0xFF

movwfMXH

movwfMXL

movlw0x09

movwfEX

YES05

gotoYES07

DecX; Подпрограмма уменьшения переменной Х

PLUS06

decf EX,F

movlw0xFF

subwfEX,W

btfss Status,Z

goto YES07

decf MXL,F

movlw0xFF

subwfMXL,W

btfss Status,Z

goto YES06

decf MXH,F

movlw0xFF

subwfMXH,W

btfss Status,Z

goto YES06

clrfMXH

clrfMXL

clrfEX

gotoYES07

YES06

movlw0x09

movwfEX

YES07; Выход из подпрограм изменения переменных, инициализация отсчёта времени для записи в память (2 сек, 0x4E20)

movlw0x4E

movwfWrtH

movlw0x20

movwfWrtL

nop; Ожидание отпускания кнопок изменения переменных и переход на главный цикл программы

nop

nop

nop

gotoCycle

; Сохранение констант в энергонезависимую память

;WriteC

Bcf IntCon,GIE ; Глобальный запрет прерываний.

bcf Status,RP0 ; Переход в нулевой банк.

movlw 0 ; Записать в регистр W константу 0 (адрес ячейки в памяти).

movwf EEAdr ; Скопировать константу 0 из регистра W в регистр EEAdr.

movf MXH,W ; Скопировать число из регистра МХН в регистр W.

movwf EEData ; Скопировать число из регистра W в ячейку EEPROM с адресом 0.

bsf Status,RP0 ; Переход в первый банк.

bsf EECon1,2 ; Разрешить запись.

movlw 0x55 ; Обязательная

movwf EECon2 ; процедура

movlw 0xAA ; при записи.

movwf EECon2 ; "

bsf EECon1,1 ; "

WR0

Btfsc EECon1,1;Ожидание записи

gotoWR0

bcf EECon1,4 ; Сбросить флаг прерывания по окончании записи в EEPROM.

bcf Status,RP0

movlw 1

movwf EEAdr

movf MXL,W

movwf EEData

bsf Status,RP0

bsf EECon1,2

movlw 055h

movwf EECon2

movlw 0AAh

movwf EECon2

bsf EECon1,1

WR1

btfscEECon1,1

gotoWR1

bcf EECon1,4

bcf Status,RP0

movlw 2

movwf EEAdr

movf EX,W

movwf EEData

bsf Status,RP0

bsf EECon1,2

movlw 055h

movwf EECon2

movlw 0AAh

movwf EECon2

bsf EECon1,1

WR2

btfscEECon1,1

gotoWR2

bcf EECon1,4

bcf Status,RP0

movlw 3

movwf EEAdr

movf BH,W

movwf EEData

bsf Status,RP0

bsf EECon1,2

movlw 055h

movwf EECon2

movlw 0AAh

movwf EECon2

bsf EECon1,1

WR3

btfscEECon1,1

gotoWR3

bcf EECon1,4

bcf Status,RP0

movlw 4

movwf EEAdr

movf BL,W

movwf EEData

bsf Status,RP0

bsf EECon1,2

movlw 055h

movwf EECon2

movlw 0AAh

movwf EECon2

bsf EECon1,1

WR4

btfscEECon1,1

gotoWR4

bcf EECon1,4

return; Выход из подпрограммы записи в память

;Арифметические подпрограммы

SUM00 ; Операция сложения регистров MulL, MulM, MulH и TmpL, TmpM, TmpH, с учётом разряда

movf MulL,W

addwf TmpL,F

btfss Status,C

goto SUM01

incf TmpM,F

btfss Status,Z

goto SUM01

incf TmpH,F

SUM01

movf MulM,W

addwf TmpM,F

btfsc Status,C

incf TmpH,F

movf MulH,W

addwf TmpH,F

return

MIN00; Операция вычитания регистров MulL, MulM, MulH и TmpL, TmpM, TmpH, с учётом разряда

movf MulL,W

subwf TmpL,F

btfsc Status,C

goto MIN01

btfsc Status,Z

goto MIN01

decf TmpM,F

movlw0xFF

subwfTmpM,W

btfss Status,Z

goto MIN01

decf TmpH,F

movlw0xFF

subwfWrtH,W

btfss Status,Z

goto MIN01

clrfTmpH

clrfTmpM

clrfTmpL

MIN01

movf MulM,W

subwf TmpM,F

btfsc Status,C

goto MIN02

btfsc Status,Z

goto MIN02

decf TmpH,F

movlw0xFF

subwfTmpH,W

btfss Status,Z

goto MIN02

clrfTmpH

clrfTmpM

MIN02

movf MulH,W

subwf TmpH,F

btfsc Status,C

goto MIN03

btfsc Status,Z

goto MIN03

clrfTmpH

MIN03 ; Операция умножения регистров MulL, MulH на множитель MulM, с учётом разряда

return

MUL00

movlw0x09

movwfSec

movfMulM,W

clrfMulH

bcfStatus,C

MUL01

rrfMulH,F

rrfMulL,F

btfssStatus,C

gotoMUL02

addwfMulH,F

MUL02

decfszSec,F

gotoMUL01

return

Div24_16 ; Операция деления регистров Mul1L, Mul1H, ResHi на делитель DivLo, DivHi, с учётом разряда

clrf Temp

clrf Temp2

clrf Temp3

clrf Cnt

clrf Res1

clrf Res2

clrf Res3

movlw 0xf0

andwf DivHi,0

btfsc Status,Z

goto chknxt

movf ResHi,0

movwf Temp2

movf Mul1Hi,0

movwf Temp

movlw .2

movwf Sec

goto StartDiv

chknxt

movf DivHi,1

btfsc Status,Z

goto chknxt1

movlw 0xf0

andwf ResHi,0

movwf Temp2

swapf Temp2,1

movlw 0x0f

andwf ResHi,0

movwf Temp

swapf Temp,1

movlw 0xf0

andwf Mul1Hi,0

movwf Temp3

swapf Temp3,0

iorwf Temp,1

clrf Temp3

movlw .3

movwf Sec

goto StartDiv

chknxt1

movlw 0xf0

andwf DivLo,0

btfsc Status,Z

goto chknxt2

movf ResHi,0

movwf Temp

movlw .4

movwf Sec

goto StartDiv

chknxt2

movlw 0xf0

andwf ResHi,0

movwf Temp

swapf Temp,1

movlw .5

movwf Sec

StartDiv

sbagn

call Sub

btfsc Tmp

goto FinSub

incf Cnt,1

goto sbagn

Sub

bcf Tmp

movf DivLo,0

subwf Temp,1

btfsc Status,C

goto sub2nd

decf Temp2,1

movlw 0xff

subwf Temp2,0

btfss Status,Z

goto sub2nd

decf Temp3,1

movlw 0xff

subwf Temp3,0

btfsc Status,Z

bsf Tmp

sub2nd

movf DivHi,0

subwf Temp2,1

btfsc Status,C

return

decf Temp3,1

movlw 0xff

subwf Temp3,0

btfsc Status,Z

bsf Tmp

return

FinSub

movf DivLo,0

addwf Temp,1

btfss Status,C

goto add2nd

incfsz Temp2,1

goto add2nd

incf Temp3,1

add2nd

movf DivHi,0

addwf Temp2,1

btfss Status,C

goto jpqm

incf Temp3,1

jpqm

bcf Status,C

rrf Sec,0

movwf Fsr

movlw Res1

addwf Fsr,1

btfss Sec,0

goto nhjuq

swapf Cnt,0

iorwf Indf,1

goto ffr

nnhjuq

movf Cnt,0

iorwf Indf,1

ffr

decf Sec,1

movlw 0xff

subwf Sec,0

btfss Status,Z

goto notFin

goto FinDiv

notFin

bcf Status,C

rlf Temp,1

rlf Temp2,1

rlf Temp3,1

bcf Status,C

rlf Temp,1

rlf Temp2,1

rlf Temp3,1

bcf Status,C

rlf Temp,1

rlf Temp2,1

rlf Temp3,1

bcf Status,C

rlf Temp,1

rlf Temp2,1

rlf Temp3,1

bcf Status,C

rrf Sec,0

movwf Fsr

movlw Mul1Lo

addwf Fsr,1

btfsc Sec,0

goto nnhq

movlw 0x0f

andwf Indf,0

iorwf Temp,1

goto jjddsak

nnhq

swapf Indf,0

andlw 0x0f

iorwf Temp,1

jjddsak

clrf Cnt

goto sbagn

FinDiv ; Операция округления при делении

bcf Status,C

rrf DivHi,1

rrf DivLo,1

movf DivHi,0

subwf Temp2,0

btfss Status,C

goto dsgfadsg

btfss Status,Z

goto cxv

movf DivLo,0

subwf Temp,0

btfss Status,C

goto dsgfadsg

cxv

incfsz Res1,1

goto dsgfadsg

incfsz Res2,1

goto dsgfadsg

incf Res3,1

dsgfadsg

movf Res1,0

movwf Mul1Lo

movf Res2,0

movwf Mul1Hi

movf Res3,0

movwf ResHi

return

;Подпрограмма расчёта времени удержания сигнала коммутатору Y=f(T) (Y=T*XB)

CalculateSparkTime;

clrfTmpH

clrfTmpM

clrfTmpL

movfTimerL,W ; Множим TimerL(H,M) на MX(L,H)

movwfMulL

movfMXL,W

movwfMulM

callMUL00

movfMulH,W

movwfMulM

clrfMulH

callSUM00

movfTimerM,W

movwfMulL

movfMXL,W

movwfMulM

callMUL00

movfMulL,W

movwfMulM

clrfMulL

callSUM00

movfTimerH,W

movwfMulL

movfMXL,W

movwfMulM

callMUL00

movfMulL,W

movwfMulH

clrfMulL

clrfMulM

callSUM00

movfTimerL,W

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



Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5224
Авторов
на СтудИзбе
427
Средний доход
с одного платного файла
Обучение Подробнее