Четверг, 02.05.2024, 11:11
Приветствую Вас Гость | RSS

ЧЕСТНЫЕ ДИПЛОМЫ готовые и на заказ

Форма входа

Каталог дипломов

Главная » Статьи » Радиоэлектроника и схемотехника » Диплом

20758 Разработка системы управления механизмом зажигания

Аннотация

В данном дипломном проекте проводится разработка системы управления механизмом зажигания. В общей части рассматриваются принципы построения систем управления на микроконтроллерах.
В специальной части приведены разработка структурной и принципиальной схемы устройства, анализ семейств микрокон-троллеров, разработка программного обеспечения для микрокон-троллера и выполнен расчет надежности устройства.
В разделе организация производства представлены виды технической документации, необходимые при производстве радиоэлектронной аппаратуры и маршрутная карта технологического процесса на производство печатных плат.
В экономической части выполнен расчет себестоимости про-изводства проектируемого устройства и проведен анализ потре-бительского спроса на рынке.
В разделе техники безопасности перечислены правила техники безопасности, соблюдение которых необходимо при проведении электромонтажных работ.

Содержание
Введение………………………………………………………………….с
1 Системы управления на микроконтроллерах.
1.1 Применение микроконтроллеров в современной промышленно-сти…………………………………………………………………………. с
1.2 Принципы построения систем управления на микроконтрол-лерах………………………………………………………………………..с
2 Разработка системы управления механизмом зажигания.
2.1 Постановка задачи………………………………………………….с
2.2 Разработка структурной схемы………………………………...с
2.3 Разработка принципиальной схемы……………………………..с
2.4 Выбор элементов принципиальной схемы……………………..с
2.5 Разработка программного обеспечения………………………..с
2.6 Расчет надежности…………………………………………………с
3 Организация производства.
3.1 Виды конструкторско - технологической документации при производстве электронных устройств…………………………….с
3.2 Маршрутная карта технологического процесса при изготовлении печатной платы…………………………………………………с
4 Экономическая часть.
4.1 Расчет себестоимости изготовления устройства………...с
5 Мероприятия по технике безопасности и противопожарной технике.
5.1 Меры безопасности при производстве электромонтажных ра-бот…………………………………………………………………………..с
Заключение……………………………………………………………..с
Список литературы………………………………………………….с
Приложение А Текст программы микроконтроллера…………с
Приложение В Маршрутная карта………………………………..с
Перечень элементов.

Микропроцессорные технологии уже давно вышли за рамки персональных компьютеров и супер-ЭВМ. Во всем мире широкое распространение получили микроконтроллеры, как в автоматизированных системах управления, так и в бытовых электроприборах, так как они отличаются надежностью, высокой степенью интеграции и небольшой стоимостью.
В данном дипломном проекте я планирую рассмотреть возмож-ность применения микроконтроллеров в системах зажигания двига-телей внутреннего сгорания. А так же описать этапы разработки этой системы зажигания и привести необходимую документацию для организации производства устройства, либо его изготовления в условиях малого предприятия.

1 СИСТЕМЫ УПРАВЛЕНИЯ НА МИКРОКОНТРОЛЛЕРАХ.
1.1 Применение микроконтроллеров в современной промышленности.
Микроконтроллеры являются наиболее массовыми представителями микропроцессорной электроники. Интегрируя в одном корпусе микросхемы высокопроизводительный процессор, оперативную и постоянную память, а также набор периферийных устройств, микроконтроллеры позволяют с минимальными затратами реализовать широкую номенклатуру систем управления различными объектами и процессами.
Структурная организация, набор команд и аппаратурно-программные средства ввода/вывода информации микроконтроллеров лучше всего приспособлены для решения задач управления и регулирования в приборах, устройствах и системах автоматики, а не для решения задач обработки данных. Микроконтроллеры не являются классическими электронно-вычислительными машинами, так как физическая и логическая разделённость памяти программ и памяти данных исключает возможность модификации или замены (перезагрузки) прикладных программ микроконтроллеров во время работы, что сильно затрудняет их использование в качестве универсальных средств обработки данных.
Поэтому микроконтроллеры находят широкое применение в промышленной автоматике, контрольно - измерительной технике, аппаратуре связи, бытовой технике и многих других областях человеческой деятельности.

1.2 Принципы построения систем управления на микроконтрол-лерах.
В устройствах управления объектами (контроллерах) на основе микроконтроллеров аппаратурные средства и программное обеспечение существуют в форме неделимого аппаратурно - программного комплекса. При проектировании контроллеров приходится решать одну из самых сложных задач разработки, а именно задачу оптимального распределения функций контроллера между аппаратурными средствами и программным обеспечением. Решение этой задачи осложняется тем, что взаимосвязь и взаимовлияние аппаратурных средств и программного обеспечения в микропроцессорной технике претерпевают динамичные изменения. Если в начале развития микропроцессорной техники определяющим было правило, в соответствии с которым аппаратурные средства обеспечивают производительность, а программное обеспечение - дешевизну изделия, то в настоящее время это правило нуждается в серьезной корректировке. Так как микроконтроллер представляет собой стандартный массовый (относительно недорогой) логический блок, конкретное назначение которого определяет пользователь с помощью программного обеспечения, то с ростом степени интеграции и, следовательно, функционально-логических возможностей микроконтроллера резко понижается стоимость изделия в пересчете на выполняемую функ-цию, что в конечном итоге и обеспечивает достижение высоких технико-экономических показателей изделий на микроконтроллере. При этом затраты на разработку программного обеспечения изделия в 2-10 раз превышают (за время жизни изделия) затраты на приобретение и изготовление аппаратурных средств.
В настоящее время наибольшее распространение получил ме-тодологический прием, при котором весь цикл разработки контроллеров рассматривается как последовательность трех фаз проектирования:
1. анализа задачи и выбора аппаратурных средств контроллера;
2. разработки прикладного программного обеспечения;
3. комплексирования аппаратурных средств и программного обеспе¬чения в прототипе контроллера и его отладки.
Фаза разработки программного обеспечения, т.е. фаза получе-ния прикладных программ, в свою очередь, разбивается на два существенно различных этапа:
1. “от постановки задачи к исходной программе“;
2. “от исходной программы к объектному модулю“.
Этап разработки “от исходной программы к объектному модулю“ имеет целью получение машинных кодов прикладных программ, работающих в микроконтроллере. Этот этап разработки прикладного программного обеспечения легко поддается формализации и поддержан всей мощью системного программного обеспечения микроконтроллера, направленного на автоматизацию процесса получения прикладных программ. В состав средств системного программного обеспечения входят трансляторы с различных алгоритмических языков высокого уровня, ассемблеры, редакторы текстов, программы-отладчики, программы - документаторы и т.д. Наличие всех этих системных средств придает инженерной работе на этом этапе про-ектирования контроллеров характер ремесла, а не инженерного творчества. Так как в конечном изделии (контроллере) имеются только “голый“ микроконтроллер и средства его сопряжения с объ-ектом, то выполнять отладку разрабатываемого прикладного про-граммного обеспечения на нем невозможно (из-за отсутствия средств ввода, вывода, ОЗУ большой емкости и операционной системы), и, следовательно, разработчик вынужден обращаться к средствам вычислительной техники для выполнения всех формализуемых стадий разработки: трансляции, редактирования, отладки, загрузки объектных кодов в программируемую постоянную память микроконтроллера.
Совсем по - другому выглядит инженерный труд на этапе раз-работки программного обеспечения “от постановки задачи к исходной программе“, так как он практически не поддается формализации и, следовательно, не может быть автоматизирован.
Проектная работа здесь носит творческий характер, изобилует решениями, имеющими “волевую“ или “вкусовую“ окраску, и решениями, продиктованными конъюнктурными соображениями. В силу перечисленных обстоятельств именно на этапе проектирования “от постановки задачи к исходной программе“ разработчик сталкивается с наибольшим количеством трудностей.
Качество получаемого прикладного программного обеспечения контроллера всецело зависит от уровня проектных решений, принятых на этапе разработки “от постановки задачи к исходной программе“. Уровень проектных решений в свою очередь из-за отсутствия теории проектирования программируемых контроллеров определяется только опытом, квалификацией и интуицией разработчика. Однако накопленный опыт убеждает в том, что систематический подход к процессу разработки прикладных программ для контроллеров обеспечивает достижение хороших результатов даже начинающими разработчиками.
Типовая структура микропроцессорной системы управления показана на рис. 1.1 и состоит из объекта управления, микроконтроллера и аппаратуры их взаимной связи.

Рисунок 1.1 - Структура цифровой системы управления на основе МК

Микроконтроллер путем периодического опроса осведомительных слов (ОС) генерирует в соответствии с алгоритмом управления последовательности управляющих слов (УС). Осведомительные слова это сигналы состояния объекта (СС), сформированные датчиками объекта управления, и флаги. Выходные сигналы датчиков вследствие их различной физической природы могут потребовать промежуточного преобразования на аналого-цифровых преобразователях (АЦП) или на схемах формирователей сигналов (ФС), которые чаще всего выполняют функции гальванической развязки и формирования уровней двоичных сигналов стандарта ТТЛ.
Микроконтроллер с требуемой периодичностью обновляет управляющие слова на своих выходных портах. Некоторая часть управляющего слова интерпретируется как совокупность прямых двоичных сигналов управления (СУ), которые через схемы формирователей сигналов (усилители мощности, реле, оптроны и т.п.) поступают на исполнительные механизмы (ИМ) и устройства индикации. Другая часть управляющего слова представляет собой упакованные двоичные коды, которые через цифро - аналоговые преобразователи (ЦАП) воздействуют на исполнительные механизмы аналогового типа. Если объект управлении использует цифровые датчики и цифровые исполнительные механизмы, то наличие ЦАП и АЦП в системе необязательно.
В состав аппаратуры связи, которая как правило, строится на интегральных схемах серии ТТЛ, входит регистр флагов, на котором фиксируется некоторое множество специфицируемых признаков как объекта управления, так и процесса работы контроллера. Этот регистр флагов используется в качестве аппаратурного средства реализации механизма взаимной синхронизации относительно медленных и вероятностных процессов в объекте управления и быстрых процессов в контроллере. Регистр флагов доступен как контроллеру, так и датчикам. Вследствие этого он является удобным местом фиксации сигналов «готов»/«ожидание» при передачах с квитированием или сигналов «запрос прерывания»/«подтверждение» при взаимодействии контроллера и объекта в режиме прерывания. Если МК-система имеет многоуровневую систему прерываний, то регистр флагов содер-жит схему упорядочивания приоритетов.
Для аппаратурной реализации временных задержек, формирования сигналов требуемой частоты и скважности в состав аппаратуры связи включают программируемые интервальные таймеры в том случае, если их нет в составе микроконтроллера или их число недостаточно.
Законы функционирования микропроцессорной системы управления со структурой, показанной на рис. 1 всецело определяются прикладной программой, размещаемой в резидентной памяти программ микроконтроллера. Иными словами, специализация контроллера типовой структуры на решение задачи управления конкретным объектом осуществляется путем разработки прикладных программ микроконтроллера и аппаратуры связи микроконтроллера с датчиками и исполнительными механизмами объекта.

2 РАЗРАБОТКА СИСТЕМЫ УПРАВЛЕНИЯ МЕХАНИЗМОМ
ЗАЖИГАНИЯ.
2.1 Постановка задачи.
Одной из проблем двигателя внутреннего сгорания является запаздывание момента зажигания при увеличении частоты вращения коленвала, т.к. скорость преодоления поршнем верхней мертвой точки возрастает вместе с оборотами двигателя, а время сгорания топлива остается неизменным. Это приводит к значительной потере мощности двигателя, повышенному расходу топлива и существенному ограничению максимальных оборотов двигателя.
Для нормализации работы двигателя необходимо применение механизма, изменяющего момент зажигания в зависимости от обо-ротов двигателя, т.е. опережение момента при увеличении оборо-тов. В основном это достигается применением механических уст-ройств рис. 2.1, принцип действия которых основан на изменении положения грузиков под воздействием центробежной силы. Недостатками таких механизмов являются нестабильная работа (особенно на низких оборотах) и невозможность достижения нужного угла опережения зажигания на высоких оборотах.

1

2 1. Грузики.
2. Подвижный прерыватель.
3 3. Основа механизма.
Рисунок 2.1 - Механическая система опережения зажигания.
Избавиться от этих недостатков позволяет применение электронного механизма опережения зажигания. За основу этого механизма берется датчик, считывающий обороты распредвала и подающий сигнальные импульсы на устройство управления моментом зажигания.
К устройству управления предъявляются следующие требования:
1. прием сигнала от датчика;
2. преобразование сигнала в зависимости от оборотов двига-теля (распредвала);
3. возможность изменять значение угла опережения зажигания.
4. сохранение работоспособности при воздействии высоких температур.
5. устойчивость к воздействию вибраций.
Оптимальным решением в данном случае является построение устройства управления моментом зажигания на микроконтроллере, так как преобразование сигналов датчика обеспечивается программно, что дает возможность регулировки. Термостойкость достигается применением микроконтроллера соответствующего уровня (с индексом). Устойчивость к вибрациям обеспечивается высокой степенью интеграции и малой массой радиоэлементов.

2.2 Разработка структурной схемы.
Для определения частоты вращения двигателя, как уже говорилось, необходима установка специального датчика, на основе которого будет строиться вся схема устройства рис. 2.2. Следующий элемент механизма – электронная система смещения импульса, основанная на микроконтроллере. Микроконтроллер принимает сигнал от датчика, обрабатывает его с помощью программы, записанной

СПИСОК ЛИТЕРАТУРЫ
1. Быков К.П., Грищенко П.В. «Мотоциклы «Урал», «Днепр». Эксплуатация и ремонт». Чернигов 2004 208с.
2. Вярочкина Г.О. «Радиоэлектронная аппаратура и приборы. Монтаж и регулировка» М. 2004 352с.
3. Гаряев Л. «Нюансы настройки систем зажигания с датчиком Холла.» - МОТО. 2004. №6. с100.
4. Каталог «Промэлектроника. Активные элементы» 2003 108с.
5. Каталог «Промэлектроника. Пассивные элементы» 2003 114с.
6. Косарев С.Н. «Руководство по ремонту автомобилей ВАЗ – 2121 и ВАЗ - 21219» М. 1998 184с.
7. Самсонов В.С., Вяткин М.А. «Экономика предприятий энергетического комплекса». М. 2001 315с.
8. Яценков В.С. «Микроконтроллеры MicroCHIP практическое руководство» М. 2005 280с.

ПРИЛОЖЕНИЕ А.

Программа микроконтроллера системы управления механизмом зажигания.

; Контроллер: PIC16F84, 4MHz

; Контроллер --------------------------------------------------------------------------------------

list p=16f84

; Конфигурация ----------------------------------------------------------------------------------

__CONFIG 3ff9h

; Параметры ---------------------------------------------------------------------------------------

#define TMR_VALUE .182 ; Квантование таймера 100 мкс

; Назначение портов ввода/вывода -----------------------------------------------------------

#define pCOIL PortB,2 ; Выход управления коммутатором (RB2)

; Направление работы портов ввода/вывода (0 - вывод, 1 - ввод) ---------------------

#define PORTB_IO 0xF2 ; Порт B (11110010) RB1 и RB4-RB7 работают на вход, остальные на выход.

; Сбросовые состояния портов ----------------------------------------------------------------

#define PORTB_RESET 0x00 ; Предустановка портов B (Обнуление)

; Системные константы -----------------------------------------------------------------------------

Fsr equ 0x04
Indf equ 0x00
Tmr0 equ 0x01 ; Регистр TMR0.
OptionR equ 0x01 ; Option - банк1
Status equ 0x03 ; Регистр Status
PortB equ 0x06 ; Порт B
TrisB equ 0x06 ; Tris B - Банк1
IntCon equ 0x0B ; Регистр IntCon
EEData equ 0x08 ; EEPROM - данные
EECon1 equ 0x08 ; EECON1 - банк1.
EEAdr equ 0x09 ; EEPROM - адрес
EECon2 equ 0x09 ; EECON2 - банк1.

; Память данных -----------------------------------------------------------------------------------

Flags equ 0x10 ; Флаги состояния
MXH equ 0x0C ; Старший байт целой части переменной Х
MXL equ 0x0D ; Младший байт целой части переменной Х
EX equ 0x0E ; Дробная часть Х, 0-9;
BH equ 0x1D ; Старший байт переменной В
BL equ 0x1E ; Младший байт переменной В
TimerH equ 0x1A ; Счетчик продолжительности сигнала от датчика Холла, старший байт
TimerM equ 0x1B ; Средний байт
TimerL equ 0x1C ; Младший байт
Sec equ 0x11 ; Счётчик арифметических операций
WrtH equ 0x12 ; Счётчик времени записи в EEPROM, старший байт
WrtL equ 0x13 ; Младший байт
MulH equ 0x14 ;Переменные арифметических операций
MulL equ 0x15
MulM equ 0x16
TmpH equ 0x17
TmpM equ 0x18
TmpL equ 0x19
Mul1Lo equ 0x20
Mul1Hi equ 0x21
ResHi equ 0x22
DivLo equ 0x0F
DivHi equ 0x1F
Res1 equ 0x23
Res2 equ 0x24
Res3 equ 0x25
Temp equ 0x26
Temp1 equ 0x27
Temp2 equ 0x28
Temp3 equ 0x29
Cnt equ 0x2A ; Счётчик арифметических операций
Res11 equ 0x2B
Res22 equ 0x2C
Res33 equ 0x2D
TmpW equ 0x2E ; Регистр для сохранения состояния W (Аккумулятора)
TmpStatus equ 0x2F ; Регистр для сохранения состояния Status

; Системные флаги ==================================================================================

W equ 0 ; Результат направить в аккумулятор.
F equ 1 ; Результат направить в регистр.
C equ 0 ; Бит флага переноса-заема.
Z equ 2 ; Бит флага нулевого результата.
RP0 equ 5 ; Бит выбора банка.
GIE equ 7 ; Бит глобального разрешения прерываний.
T0IE equ 5
T0IF equ 2

; Битовые переменные ---------------------------------------------------------------------------

#define bLastState Flags,0 ; Последнее состояние датчика Холла
#define bSens Flags,1 ; Флаг состояния датчика Холла после программного фильтра
#define bINCB PortB,7 ; Флаг нажатия кнопки “Увеличить В“
#define bDECB PortB,6 ; Флаг нажатия кнопки “Уменьшить В“
#define bINCX PortB,5 ; Флаг нажатия кнопки “Увеличить Х“
#define bDECX PortB,4 ; Флаг нажатия кнопки “Уменьшить Х“
#define Tmp Flags,2 ; Флаг арифметических операций

; Вектор сброса -----------------------------------------------------------------------------------

ORG 0x0000
goto Start ; Переходим к началу программы

; Вектор прерываний -----------------------------------------------------------------------------

ORG 0x0004

; Interrupt --------------------------------------------------------------------------------------

; Описание: Прерывание от TMR0. Измерение времени прохода шторки по сигналу с датчика Холла.

;--------------------------------------------------------------------------------------------------

Interrupt;
movwf TmpW ; Сохраняем состояние W и Status в регистры TmpW и TmpStatus
swapf Status,W
movwf TmpStatus
movlw TMR_VALUE ; Квантование таймера
movwf Tmr0
bcf IntCon,T0IF ; Сбрасываем флаг прерывания от таймера
movf PortB,W ; Программный фильтр по входу датчика Холла
xorwf Flags,W
btfss bSens ; Проверяем флаг датчика (1 - шторка в датчике, 0 - вне датчика)
goto _Low ; Если 0 преходим
btfsc bLastState ; Проверяем предидущее состояние датчика
goto _HighToHigh ; Если 1 преходим
_LowToHigh ; Шторка вошла в датчик bSens=1 bLastState=0
bsf bLastState ; Обновляем данные о состоянии датчика bLastState=1
bsf pCOIL ; Включаем комутатор (Выставляем бит в RB2)
PLUS00 incf TimerL,F ; Начинаем отсчёт времени (TimerL(H,M) + 1)
btfss Status,Z
goto YES00
incf TimerM,F
btfss Status,Z
goto YES00
incf TimerH,F
YES00
goto _ExitInterrupt ; Завершаем прерывание
_HighToHigh ; Шторка уже в датчике bSens=1 bLastState=1
PLUS01 incf TimerL,F ; Продолжаем отсчёт времени (TimerL(H,M) + 1)
btfss Status,Z
goto YES01
incf TimerM,F
btfss Status,Z
goto YES01
incf TimerH,F
YES01
goto _ExitInterrupt
_Low ; Шторка вне датчика bSens=0
btfss bLastState ; Проверяем предидущее состояние датчика
goto _LowToLow
_HighToLow ; Шторка вышла из датчика
bSens=0 bLastState=1
bcf bLastState ; Обновляем данные о состоянии датчика bLastState=0
call CalculateSparkTime ; Переходим к вычислению функции Y=f(T)
goto _ExitInterrupt
_LowToLow ; Шторка уже вне датчика
_ExitInterrupt
DecWrt
DEC002
incf WrtH,W ; Проверяем было ли изменение констант, если было (WrtH<>0xFF), то осчитываем время до записи в память (2 сек)
btfss Status,Z
goto DEC003
goto OK00
DEC003
decf WrtL,F
movlw 0xFF
subwf WrtL,W
btfss Status,Z
goto OK00
decf WrtH,F
movlw 0xFF
subwf WrtH,W
btfss Status,Z
goto OK00
movlw 0xFF ; Выставляем 0хFF в WrtH (признак изменения констант)
movwf WrtH
clrf WrtL
call WriteC ; Истекло время до записи изменённых переменных в память, переход на подпрограмму записи
OK00
swapf TmpStatus,W ; Восстанавливаем соотояние W и Status и выходим из прерывания
movwf Status
swapf TmpW,F
swapf TmpW,W
retfie

; Start -------------------------------------------------------------------------------------------

; Описание: Начало программы, инициализация контроллера и установка в начальное состояние

;--------------------------------------------------------------------------------------------------

Start;
clrwdt
clrf IntCon ; Обнуляем регистр прерываний
bsf Status,RP0 ; Выбор банка памяти 1
movlw PORTB_IO
movwf TrisB
movlw 0x88
movwf OptionR
bcf Status,RP0 ; Выбор банка памяти 0
movlw PORTB_RESET
movwf PortB
clrf TimerH
clrf TimerM
clrf TimerL
movlw 0xFF
movwf WrtH
clrf WrtL
movf PortB,W ; Выставляем флаги в начальное состояние
andlw 0xF2
movwf Flags
movlw TMR_VALUE ; Квантование таймера
movwf Tmr0

;-------------------------------------------------------------------------------
; Чтение констант из памяти
;-------------------------------------------------------------------------------

movlw 0 ; Записать в регистр W константу 0 (адрес ячейки в памяти).
movwf EEAdr ; Скопировать 0h из регистра W в регистр EEAdr.
bsf Status,RP0 ; Переход в первый банк.
bsf EECon1,0 ; Инициализировать чтение.
bcf Status,RP0 ; Переход в нулевой банк.
movf EEData,W ; Скопировать число из ячейки EEPROM с адресом 0h в регистр W.
movwf MXH ; Скопировать число из регистра W в регистр MXH.
nop ; Пустой оператор (ожидание)
movlw 1
movwf EEAdr
bsf Status,RP0
bsf EECon1,0
bcf Status,RP0
movf EEData,W
movwf MXL
nop
movlw 2
movwf EEAdr
bsf Status,RP0
bsf EECon1,0
bcf Status,RP0
movf EEData,W
movwf EX
nop
movlw 3
movwf EEAdr
bsf Status,RP0
bsf EECon1,0
bcf Status,RP0
movf EEData,W
movwf BH
nop
movlw 4
movwf EEAdr
bsf Status,RP0
bsf EECon1,0
bcf Status,RP0
movf EEData,W
movwf BL

;-------------------------------------------------------------------------------

movlw 0xA0 ; Разрешаем прерывания от TMR0, и прерывания глобально, сбрасываем флаги прерываний
movwf IntCon
Cycle ; Главный цикл программы
bsf IntCon,T0IE ; Разрешаем прерывания от TMR0
bsf IntCon,GIE ; Разрешаем прерывания глобально
movf PortB,W
xorwf Flags,W
btfsc bINCB ;Если RB7 = 1, то переходим к увеличению переменной В
goto IncB
btfsc bDECB ;Если RB6 = 1, то переходим к уменьшению переменной В
goto DecB
btfsc bINCX ;Если RB5 = 1, то переходим к увеличению переменной Х
goto IncX
btfsc bDECX ;Если RB4 = 1, то переходим к уменьшению переменной Х
goto DecX
goto Cycle
IncB ; Подпрограмма увеличения переменной В
PLUS02
incf BL,F

btfss Status,Z
goto YES02
incf BH,F

btfss Status,Z
goto YES02
movlw 0xFF
movwf BH
movwf BL
YES02
goto YES07
DecB ; Подпрограмма уменьшения переменной В
PLUS03
decf BL,F
movlw 0xFF
subwf BL,W
btfss Status,Z
goto YES03
decf BH,F
movlw 0xFF
subwf BH,W
btfss Status,Z
goto YES03
clrf BH
clrf BL
YES03
goto YES07
IncX ; Подпрограмма увеличения переменной Х
PLUS04
incf EX,F
movlw 0x0A
subwf EX,W
btfss Status,Z
goto YES05
clrf EX
PLUS05
incf MXL,F
btfss Status,Z
goto YES05
incf MXH,F
btfss Status,Z
goto YES05
movlw 0xFF
movwf MXH
movwf MXL
movlw 0x09
movwf EX
YES05
goto YES07
DecX ; Подпрограмма уменьшения переменной Х
PLUS06
decf EX,F
movlw 0xFF
subwf EX,W
btfss Status,Z
goto YES07
decf MXL,F
movlw 0xFF
subwf MXL,W
btfss Status,Z
goto YES06
decf MXH,F
movlw 0xFF
subwf MXH,W
btfss Status,Z
goto YES06
clrf MXH
clrf MXL
clrf EX
goto YES07
YES06
movlw 0x09
movwf EX
YES07 ; Выход из подпрограм изменения переменных, инициализация отсчёта времени для записи в память (2 сек, 0x4E20)
movlw 0x4E
movwf WrtH
movlw 0x20
movwf WrtL
nop ; Ожидание отпускания кнопок изменения переменных и переход на главный цикл программы
nop
nop
nop
goto Cycle

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

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 ;Ожидание записи
goto WR0
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
btfsc EECon1,1
goto WR1
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
btfsc EECon1,1
goto WR2
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
btfsc EECon1,1
goto WR3
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
btfsc EECon1,1
goto WR4
bcf EECon1,4
return ; Выход из подпрограммы записи в память

;--------------------------------------------------------------------------------------------------

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

;--------------------------------------------------------------------------------------------------

SUM00 ; Операция сложения регистров MulL, MulM, MulH и TmpL, TmpM, Tmp
Вид работы: Диплом

УТОЧНИТЬ СТОИМОСТЬ РАБОТЫ     ПОДНЯТЬ АНТИПЛАГИАТ    КАК ЗАКАЗАТЬ ЭТУ РАБОТУ