Микропроцессорная система управления объектом
Содержание
Введение
. Техническое
задание на разработку микропроцессорной системы управления
. Структурная
схема микропроцессорной системы управления
. Разработка
принципиальной схемы блока чтения информации с датчиков
.1 Разработка
устройства сопряжения с цифровым датчиком
.2 Разработка
устройства сопряжения с аналоговым датчиком
.3 Сопряжения
контроля наличия напряжения питания
. Разработка
принципиальных схем блоков вывода управляющих сигналов
.1 Схема
подключения МК с исполнительными механизмами
. Разработка
принципиальной схемы блока последовательного канала связи
. Разработка
принципиальной схемы пульта управления
. Разработка
общего алгоритма управления микропроцессорной системы
. Алгоритм
работы блока чтения информации с цифровых датчиков
. Алгоритм
работы блока чтения информации с аналоговых датчиков
. Алгоритм
работы блока обмена данными по последовательному каналу связи
. Алгоритм
работы блока взаимодействия с оператором
. Алгоритм
обработки аварийных ситуаций
. Расчет
электрических параметров микропроцессорной системы управления
. Разработка
блока питания
Заключение
Список
литературы
Приложение
Введение
Развитие микроэлектроники и широкое применение ее изделий в промышленном
производстве, в устройствах и системах управления самыми разнообразными
объектами и процессами являются в настоящее время одним из основных направлений
научно-технического прогресса.
За последние годы в микроэлектронике бурное развитие получило
направление, связанное с выпуском однокристальных микроконтроллеров, которые
предназначены для «интеллектуализации» оборудования различного назначения.
Однокристальные микроконтроллеры представляют собой приборы,
конструктивно выбранные в виде БИС и включающие в себя все составные части
«голой» микроЭВМ: микропроцессор, память программ и память данных, а также
программируемые интерфейсные схемы для связи с внешней средой.
Среди предложенных новых архитектур однокристальных микроЭВМ следует
выделить 8-и разрядную архитектуру семейства микроконтроллеров MCS-51, предложенного фирмой INTEL в 1981г. Она удовлетворяет всем
требованиям, представляемым к однокристальным микроконтроллерам.
Однако к настоящему времени значительную часть мирового рынка
микропроцессорных средств составляет другой вид однокристальных контроллеров -
это так называемые периферийные интерфейсные контроллеры или PIC. Они
представляют собой высокопроизводительные БИС, в которые интегрированы помимо
цифровых устройств (собственно микроконтроллера) также и аналоговые - это
различные АЦП, компараторы, модули сравнения ШИМ и т.д. Это делает данные
устройства чрезвычайно популярными у производителей «интеллектуальных»
устройств. Наиболее известным в нашей стране производителем однокристальных PIC
является американская компания Microchip Technology Inc. Она производит три линейки
8-разрядных PIC.
Главная особенность микропроцессора - возможность программирования логики
работы. Поэтому МПС используются для управления процессом измерения
(реализацией алгоритма измерения), обработки опытных данных, хранения и вывода
результатов измерения и пр.
1. Техническое задание на разработку
микропроцессорной системы управления
В курсовой работе разрабатывается микропроцессорная система управления
некоторым объектом (рисунок 1).
Рисунок 1 - Структурная схема управления объектом
Микропроцессорная система принимает информацию об объекте управления от
аналоговых и цифровых датчиков, вырабатывает управляющие воздействия (Y) в
соответствии с законами управления и подает их на исполнительные механизмы. Микропроцессорная
система состоит из микроконтроллера - управляющего микро-ЭВМ, пульта управления
и последовательного канала связи. С помощью пульта управления оператор получает
возможность управлять работой микро-ЭВМ: запускать ее и останавливать, выдавать
значение некоторых установок (констант), снимать с индикаторов информацию о
состоянии объекта и т. п. С помощью последовательного канала связи
микропроцессорная система может передавать обработанную информацию системе
более высокого уровня по ее запросу.
В курсовой работе разрабатывается структурная схема микропроцессорной
системы, включая устройства связи с датчиками и исполнительными механизмами, и
программы, обеспечивающие выполнение алгоритма управления и алгоритма обмена,
осуществляется оценка характеристик микропроцессорной системы и разработка
блока питания. В разделе, посвященном расчету электрических параметров системы,
необходимо рассчитать потребляемый ток и мощность по каждой из цепей питания.
На основании этих расчетов разрабатывается или выбирается готовый блок питания.
Обработка цифровой информации. Микропроцессорная система опрашивает
двоичные датчики X1, ..., Х5 и вычисляет нулевые функции , в соответствии заданием на
курсовую работу.
При единичном значении функции , или система вырабатывает выходной сигнал =1 длительностью =120 мкс , , соответственно. Это означает, что
через , или после выдачи единичного сигнала Y1
необходимо выработать нулевой сигнал Y0. В системе имеется также двоичный
датчик аварийной ситуации Х0, единичный сигнал с которого должен вызвать
аварийный останов системы в любой момент выполнения рабочего цикла программы.
Обработка аналоговой информации. Сигналы с аналоговых датчиков V1, V2
преобразуются в цифровую форму в АЦП. Далее сформированные коды N1 и N2,
представляющее собой целые числа без знака, поступают на обработку. Величина К
- 8-разрядный код установки, поступающий с тумблерного регистра пульта
управления. Далее система вычисляет функцию:
= max(N1;N2-K)
Полученное значение функции N сравнивается с константой Q, хранящейся во
внутренней памяти. В зависимости от результатов сравнения система вырабатывает
двоичные управляющие воздействия Y2 (если N<Q) или Y3 (если N>Q) длительностью
Т3 или Т4 соответственно.
Обработка запросов на прерывания
Система обрабатывает запросы на прерывание пяти уровней:
запрос на прерывание по сигналу отказа источника питания IRQ0;
запрос на прерывание по сигналу аварийного датчика IRQ1;
запрос на прерывание от терминала внешней ЭВМ IRQ2;
запрос на прерывание от таймера IRQ3;
запрос на прерывание от пульта управления (прерывание оператора) IRQ4.
Прерывание работы системы при отказе источника питания имеет высший
приоритет. Система при этом переходит на резервный источник питания (батарейка)
вырабатывает сигнал Y5 установки внешних устройств в исходное состояние
(например, отвод головок от диска, останов дисковода и т. д.) и передает в
последовательный канал связи (если он был активен) код символа «!». Сигнал Y5
представит собой два прямоугольных импульса длительностью 30 мкс, следующие с
интервалом в 30 мкс. После выполнения указанных действий микроконтроллер
необходимо перевести в режим пониженного энергопотребления.
Прерывание от сигнала аварийного датчика включает на пульте управления
аварийную световую и обеспечивает выдачу на индикацию сигналов двоичных
датчиков X1, ..., Х4 и цифровые коды N1 и N2, поступающий с АЦП. После этого
микроконтроллер переводится в режим пониженного энергопотребления.
Прерывания от терминала внешней ЭВМ осуществляются при приеме
последовательным каналом связи символа управления обменом. Приемник
последовательного адаптера выставляет при этом запрос на прерывание работы
основной программы с целью передачи в последовательный канал связи
запрашиваемой информации. Запрашиваемая информация формируется в зависимости от
принятого из канала символа. При приеме символа "D" в канал
передается значение Y1, при приеме символа "А" - значение Y4. После
загрузки в буфер передатчика БИС последовательного адаптера запрашиваемой
информации управление передается в прерванную программу. Прерывания от пульта
управления влекут за собой выполнение следующих действий:
) Считать информацию с тумблерного регистра.
) Запись информации по заранее заданному адресу.
) Организовать выход из прерывания на начало программы обработки.
) Пульт управления
) Пульт управления должен содержать следующие элементы:
) регистр со светодиодами индикации значения N1 - РИ1;
) регистр со светодиодами индикации значений X1,..., Х4 - РИ2;
) регистр со светодиодами индикации значений Y1, Y2 - РИЗ;
) регистр со светодиодами индикации кода Y4 - РИ4;
) входной восьмиразрядный регистр Р5 для приема с тумблеров пульта
кода К (для вариантов, в которых он используется);
) светодиод индикации, на который подается меандр частотой 2 Гц;
) кнопку «Сброс», при нажатии на которую производится начальная
установка элементов системы;
) тумблер «Останов», опрашиваемый в конце каждого цикла выполнения
программы.
Несколько регистров могут быть объединены в один с возможностью выбора
текущего значения оператором.
2. Структурная схема
микропроцессорной системы управления
Структурная схема системы управления представлена на рисунке 2.
Рисунок
2 - Структурная схема системы управления
На
рисунке представлена структурная схема системы управления, на которой указаны
подключения к микроконтроллеру всех датчиков. При подключении датчиков, для
согласования сигналов, использованы устройства сопряжения. Кроме того, на схеме
указано подключение к микроконтроллеру пульта управления. Также на схеме
показаны все выходные сигналы, используемые для управления различными
устройствами. Контроллер обменивается данными с системой более высокого уровня
по интерфейсу RS-485. Подключение датчиков, пульта управления и схемы
индикации осуществляется посредством общей 8-разрядной шины, подключенной к
порту D контроллера. Подключение пульта управления и устройств сопряжения к шине
осуществляется с помощью блока расширения ввода (БРВВ). Кроме того, этот блок
формирует запросы прерываний.
Таблица
1 - Расчет количества линий ввода-вывода
Назначение линии, группы линий
|
Направление
|
Тип сигнала
|
Количество
|
Цифровые датчики -
|
I
|
D
|
6
|
Аналоговые датчики ,N2
|
I
|
A
|
2
|
USART: Tx Rx
|
I O
|
D A
|
1 1
|
I2C: SCL SDA
|
I I/O
|
D D
|
1 1
|
Аварийная звуковая сигнализация
|
O
|
D
|
1
|
Тумблер “Остановка”
|
O
|
D
|
1
|
Кнопки: “Сброс” “Прерывание оператора”
|
I I
|
D D
|
1 1
|
Схема контроллера источника питания
|
I
|
D
|
1
|
Блок организации запроса прерывания (INT)
|
I
|
D
|
1
|
Выходные сигналы -,Y5
|
O
|
D
|
4
|
Итого
|
|
|
22
|
Исходя из таблицы расчета количества линий ввода-вывода, используемый МК
должен соответствовать следующим критериям:
число линий ввода/вывода -22;
наличие модулей USART и MSSP.
В качестве МК выбираем микросхему PIC16F874A.Характеристики МКPIC16F874A
представлены в таблице 2.
Таблица 2 - Характеристики МК PIC16F874A
Тактовая частота
|
DC- 20МГц
|
Сброс (задержка сброса)
|
POR, BOR(PWRT, OST)
|
FLASH память программ (14-разрядных слов)
|
4K
|
Память данных (байт)
|
192
|
EEPROM память данных (байт)
|
128
|
Прерываний
|
14
|
Порты ввода/вывода
|
Порты A,B,C,D,E
|
Таймеры
|
3
|
Модуль захват/сравнение/ШИМ
|
2
|
Модули последовательного интерфейса
|
MSSP, USART
|
Модули параллельного интерфейса
|
PSP
|
Модуль 10-разрядного АЦП
|
8 каналов
|
Инструкций
|
35
|
Рисунок 3 -Цоколевка PIC16F874A
3. Разработка принципиальной схемы
блока чтения информации с датчиков
3.1 Разработка устройства сопряжения
с цифровым датчиком
Схема сопряжения обеспечивает гальваническую развязку бинарного датчика и
линии ввода контроллера. Основой схемы является транзисторный оптрон, который
выполняет функции устройства гальванической развязки и ключевого элемента.
Рисунок
4 - Схема устройства сопряжения с цифровым датчиком
Схема
может быть условно разделена на 2 цепи: входную и выходную. Входная цепь
образована преобразователем уровней и светодиодом оптрона. Преобразователь
уровней и приводит уровни входных сигналов к значениям, необходимым для
надежной работы светодиода оптрона. Схема входной цепи зависит от уровней
входных сигналов. В нашем случае она включает в себя резистор R1.
В данной схеме будем использовать оптрон АОТ101АС: Uпр = 1,6 В
при Iпр= 5 мА.
Стабилитрон выбирается из соотношения:
Будем использовать стабилитрон КС175Ж с параметрами: В при
Сопротивление резистора R1 в схеме рассчитывается по формуле
,
где |Uвх|max - максимальный из модулей входных
напряжений (|Uвх|max =10 В);пр - прямое
падение напряжения на светодиоде оптрона;пр - прямой ток через
светодиод оптрона.
Рисунок
5 - Схема оптрона АОТ101АС
Тогда Ом.
Согласно
ряду Е96 возьмём резистор сопротивление которого 182 Ом, таким образом R1=182
Ом .
Выходная
цепь устройства согласования образована транзистором оптрона VU1 и
подтягивающим резистором R2. Транзистор выполняет функцию ключевого элемента, а
резистор формирует на выходе схемы напряжение логической «1», когда транзистор
закрыт. Для этого в линию выходного сигнала добавляется инвертор DD1. Так как к
выходу устройства сопряжения подключен вход микросхемы ТТЛ, то сопротивление
резистора R2 выбираем равным 1кОм. В качестве элемента DD1 выберем микросхему
типа КР1533ЛН1. Потребляемый ей ток составляет 3,8 мА.
Рисунок
6 - Цоколевка КР1533ЛН1
3.2 Разработка устройства сопряжения
с аналоговым датчиком
Структурная схема устройства сопряжения с аналоговым датчиком состоит из
одного основного и двух дополнительных блоков.
Рисунок
7 - Структурная схема устройства сопряжения с аналоговым датчиком
Основным
является блок гальванической развязки аналогового датчика и линии ввода
контроллера. Функцию элемента гальванической развязки выполняет ОУ с
гальванической развязкой входа и выхода типа AD202 фирмы Analog Devices.
Потребляемый ей ток составляет 50 мА.
Рисунок 8 - Цоколевка AD202
Функционально устройство сопряжения с аналоговыми датчиками состоит из
одного основного и двух дополнительных блоков. Основным является блок
гальванической развязки. Дополнительными являются входной делитель напряжения и
выходной сумматор. Схема сопряжения обеспечивает гальваническую развязку
аналогового датчика и вывода микроконтроллера, а так же преобразует аналоговый
сигнал с уровнем -5…-10 в сигнал с уровнями 0…5В.
Рисунок
9 - Схема сопряжения для подключения аналогового датчика
Сопротивление резисторов делителя находится по следующей формуле:
R1=R2(2)
где |Uвхmax| - максимальное из модулей входных
напряжений.
Рассчитаем номиналы резисторов:
;
;
;
Выберем
из ряда номинальных значений резисторов E96 R1=R2=1 кОм.
Определим
диапазон изменения напряжения на выходе ОУ:
,
где
Uвхmin(max) - нижний (верхний) предел входного напряжения.
Схема
сопряжения аналогового датчика с сигналом от -5 В … -10 В в выходной сигнал 0В
… +5В представлена на рисунке 11.
Рисунок
10 - Схема аналогового инвертирующего сумматора.
;
;
где Uref - величина опорного напряжения, В; - максимальное напряжение на
выходе сумматора, В; - напряжение на входе сумматора, соответствующее верхнему
уровню; - напряжение на входе сумматора, соответствующее нижнему уровню.
Принимаем R13=1кОм, Uref=7,5 В, для модуля АЦП микроконтроллера
PIC16F877A Uomax = 5В, тогда, подставив нужные значения в вышеприведённые
формулы, получим:
;
;
Сопротивление резистора R4 определяется из соотношения:
=0,375 кОм;
Выберем из ряда номинальных значений резисторов E96: R11=, R12=1кОм, R13=1кОм, R14=0,383кОм.
Рисунок
11 - Схема сопряжения с аналоговым датчиком
3.3 Сопряжения контроля наличия
напряжения питания
Схема контроля напряжения питания представлена на рисунке 12.
Светодиод оптрона питается через однополупериодный выпрямитель с
фильтрующим конденсатором. Оптрон выполняет функцию гальванической развязки и
ключевого элемента.
Рисунок
12 - Схема контроля наличия напряжения питания
вх(0)
= 0; Uвх(1) = ~220 В. Емкость конденсатора C1 лежит в пределах 47-100 мкФ, а
рабочее напряжение не менее 6 В. Максимальное обратное напряжение диода VD1
должно быть не менее 400 В. Сопротивление резистора R1-2 рассчитывается по
формуле:
где
- действующее значение входного напряжения.
=27 кОм,
R2=1.1 кОм; С1=47 мкФ; R3=1кОм
Используем
оптрон DA1.1 марки AOT101AС и диод KД521А.
4. Разработка принципиальных схем
блоков вывода управляющих сигналов
4.1 Схема подключения МК с
исполнительными механизмами
Для согласования диапазонов напряжений микроконтроллера и исполнительных
механизмов используем следующие схемы сопряжения.
Диапазон напряжения сигналов с микроконтроллера на исполнительные
механизмы (ИМ): 0 .. 5В. В схеме сопряжения производится оптронная развязка
(рисунок 12).
Рисунок 12 - Схема сопряжения с выходами Y1- Y3, Y5
Рассчитаем номиналы резистора:
(8)
где
Uвхmax - максимальный из модулей входных напряжений, В;
Uпр
- прямое падение напряжения на светодиоде оптрона, В;
Iпр
- прямой ток через светодиод оптрона, А.
Рассчитаем
значения резистора:
Получим
R15=1,69 кОм.
(9)
где
Uвх - максимальное входное напряжение, В; вых - максимальный коммутируемый ток,
А.
Для
АОТ101АС Iвых = 0.005A. Uвх примем равным 5В.
Рассчитаем
значения резисторов:
Получим
R16= 1 кОм.
датчик микропроцессорный аналоговый аварийный
5. Разработка принципиальной схемы
блока последовательного канала связи
Поскольку физически выходные сигналы микроконтроллера не способны
работать на длинную линию (интерфейс UART может работать на линию не более 50см), а по заданию необходимо
организовать прерывание от терминала внешней ЭВМ, то будем использовать
преобразователь интерфейса UART в
интерфейс RS422 микросхему ILX485D фирмы Интеграл (РБ):
Напряжение питания микросхемы ILX485D - 12 В;
Ток потребления Idd - 200 мА;
Рабочий диапазон температур от -40 до +85 0С;
Максимальная длина линии передачи - 1200м.
Рисунок
13 - Схема включения микросхемы ILX485D
Также в этом пункте мы найдем скорость передачи модуля USART, которая
рассчитывается по формуле: Низкоскоростной режим:
Высокоскоростной
режим:
Как
видно из расчетов выбираем высокоскоростной режим передачи данных.
6. Разработка принципиальной схемы
пульта управления
В схему пульта управления входят блок расширения ввода/вывода, кнопки
«прерывания от оператора», «сброс», «останов», логика формирования запроса
прерывания. С помощью пульта управления оператор получает возможность управлять
работой микропроцессорной системой управления объектом: запускать ее и
останавливать, выдавать значения некоторых установок (констант), снимать с
индикаторов информацию о состоянии объекта и т.д.
Блок расширения ввода/вывода включает в себя схему индикации, регистр
установки К, которые реализованы на микросхемах DD3 типа PCA9535 и DD4 типа
PCF8574. - 16-разрядный маломощный порт ввода/вывода с управлением по шине I2C.
Цоколевка микросхемы PCA9535 представлена на рисунке 14.
Рисунок 14 - Цоколевка PCA9535
PCF8574 - 8-разрядный маломощный порт ввода/вывода с управлением по шине
I2C. Цоколевка микросхемы PCA9535 представлена на рисунке 15.
Рисунок
15 - Цоколевка PCF8574
Схема индикации предназначена для вывода информации о состоянии системы
на пульт управления. В состав схемы индикации входят 15 выводов микросхемы DD3
(IO0.0-0.7 и IO1.0-1.6) и 15 светодиодов HL1-HL15 типа КИПД05А. Выходы
регистров имеют повышенную нагрузочную способность, что позволяет подключать
светодиоды непосредственно к ним. Резисторы R40-R54 ограничивают ток через
светодиоды на уровне 5 мА.
Порт IO0 микросхемы DD3 и светодиоды HL1-HL8 образуют регистр индикации
РИ1. Регистры РИ2 и РИ3 построены на базе порта IO1 DD3. При этом светодиоды
HL9-HL16 образуют регистры РИ2 и РИ3. Схема установки реализована на микросхеме
DD4 (порт P) подключением тумблеров установки SA2-SA9 типа DS-431. С помощью
данной схемы оператор может выдавать значение некоторых установок (констант).
Синхронный последовательный порт MSSP микроконтроллера работает в режиме
совместимости с шиной I2C. Передача данных происходит по двум линиям: SCL
(тактовые синхроимпульсы) и SDA (данные).
Схема блока расширения ввода/вывода представлена на рисунке 16. В
качестве светодиодов HL1 - HL16 светодиоды типа КИПД05А с характеристиками
Iпр=5 мА , Uпр=1,8 В. В соответствии с этим определим значение сопротивления
резисторов R40 - R54, R67:
.
Ом.
Согласно ряду Е192 в качестве резисторов R40 - R54, R67 выберем
С2-14-0,25-642 Ом ±0,1%.
Резисторы R38 и R39 выберем сопротивлением 6,9 кОм, а резисторы R55 - R62
- номиналом 1 кОм. Конденсаторы С14 и С15 имеют емкость 100 мкФ.
В состав пульта управления входит также кнопка SB1 «Сброс», при нажатии
на которую формируется низкий уровень напряжения на входе MCLR контроллера, что
приводит к сбросу последнего.
При нажатии на кнопку SB2 «Прерывание от оператора» на светодиоды HL1-HL4
регистра индикации РИ1 выводятся следующие значения:
· последнее значение Y1;
· результат сравнения N > Q;
· значение выражения ;
· значение выражения ;
На светодиоды регистра РИ2 в этом случае выводится значение константы Q.
В качестве кнопок SB1 - SB3 будем использовать кнопки типа ПКн-21. Схемы
включения кнопок приведем на рисунке 17.
Рисунок 16 - Схема блока расширения ввода/вывода
Рисунок
79 - Схема включения кнопок
Логика формирования запросов на прерывания реализована на микросхеме типа
КР1533ЛА4. Цоколевка микросхемы КР1533ЛА4 приведена на рисунке 18. Потребляемый
ей ток составляет 2,2 мА.
Рисунок 18 - Цоколевка микросхемы КР1533ЛА4
Схема формирует сигнал прерывания в следующих случаях:
появление высокого уровня напряжения на выходе схемы контроля напряжения
питания (напряжение питания отсутствует);
появление высокого уровня на выходе устройства сопряжения с датчиком
аварийной ситуации;
нажатие кнопки SB2 «Прерывание оператора».
Если хотя бы один из уровней в активном состоянии, то сигнал запроса
прерывания поступает на вход INT контроллера.
Рисунок
19- Логика формирования запросов на прерывание
В качестве аварийной сигнализации используется зуммер. Аварийная
сигнализация подключена к линии 4 порта D МК. Схема аварийной сигнализации
представлена на рисунке 20.
Рисунок
20 - Схема аварийной сигнализации
Блок организации запроса прерывания предназначен для увеличения
количества источников внешнего прерывания. В качестве модуля расширения
применяется строенная двухконтактная микросхема DD2 КР1533ЛЕ1. Так как
используется базис ИЛИ-НЕ, то прерывания будем определять по заднему фронту
сигнала на входе внешнего прерывания INT.
Выходной сигнал схемы блока организации запроса прерывания в базисе И-ИЛИ-НЕ
имеет вид:
, (10)
где - сигнал от кнопки «Прерывание оператора»; - сигнал от аварийного датчика .
Переведем выходной сигнал схемы блока организации запроса прерывания в базис ИЛИ-НЕ:
(11)
Схема блока организации запроса прерывания приведена на рисунке 21.
Рисунок
21- Схема блока организации запроса прерывания
7. Разработка общего алгоритма
управления микропроцессорной системы
Блок-схема общего алгоритма работы системы приведена на рисунке 20. После
сброса начинается процесс инициализации контроллера, в которой выполняется
первоначальная установка системы: настройку периферийных модулей, посылку в
выходные каналы начальных значений управляющих воздействий и т. д. В следующем
блоке осуществляется введение информации с пульта управления. В блоках «Ввод
информации с цифровых датчиков» и «Ввод информации с аналоговых датчиков»
обеспечивается прием информации от цифровых и аналоговых датчиков, затем
цифровая информация обрабатывается в блоке «Обработка цифровой информации», где
вычисляется значении булевой функции Y1, значение которой формируется в блоке
«Формирование выходного сигнала Y1». После обработки аналоговой информации в
соответствующем блоке формируются управляющие сигналы Y2 или Y3 в блоке «Формирование
выходных сигналов Y2 или Y3». Все обработанные и вычисленные значения поступают
в блок «Вывод информации на индикацию». При этом проверяется запросы на
прерывание. В конце цикла программа опрашивает тумблер «Останов» и, если он
включен, формирует сигнал остановки системы.
В алгоритме обработки прерывание в первую очередь осуществляется
сохранение контекста, т.е. содержимого аккумулятора и регистра STATUS.
Далее производится опрос источников прерывания: прерывание от источника
питания, прерывание от аварийного датчика, прерывание от последовательного
порта, прерывание от таймера, прерывание оператором. прерывание от других
источников. В случае прерывания от одного из источников осуществляется переход
на подпрограмму, где производится обработка прерывания. После обработки
прерывания восстанавливается контекст и осуществляется выход из подпрограммы
обработки прерывания.
Рисунок 22 - Блок-схема общего алгоритма работы микропроцессорной системы
управления
8. Алгоритм работы блока чтения
информации с цифровых датчиков
Работа блока чтения информации с цифровых датчиков осуществляется по
следующему алгоритму, приведенному на рисунке 23.
Рисунок
23 - Алгоритм работы блока чтения информации с аналоговых датчиков
После
считывания информации с цифровых датчиков, происходит вычисления булевой
функции f(X1…X5). Далее система оценивает полученную в предыдущем блоке
информацию f(x). Если функция не равна 1, то происходит переход к считыванию и
обработке аналоговой информации. В случае равенства 1 происходит выработка
сигнала Y = 1, длительностью T1=120 мкс. Затем следует конец обработки цифровой
информации.
Для формирования сигналов Y1 используем таймер TMR1. Предделитель
выбираем 1:1. На таймер приходит частота 20МГц.
Произведем расчет числа машинных циклов, которые потребуются для
формирования импульса длительностью T1=120 мкс.
мц = 4·T,
где Т = 1/Fosc, тогда Тмц = 4/Fosc= 4/(20·106)=0,2 мкc.
Необходимое число машинных циклов:
= tимп/Tмц ;
=600.
Данное число в шестнадцатеричной системе счисления N = 258 h. Так как
таймер 16-ти разрядный, то FFFF-285=FD7A, полученное значение записываем в регистр TMR1.
9. Алгоритм работы блока чтения
информации с аналоговых датчиков
Работа блока чтения информации с аналоговых датчиков осуществляется по
следующему алгоритму, приведенному на рисунке 24.
Рисунок
24 - Алгоритм работы блока чтения информации с аналоговых датчиков
Вначале
осуществляется первичная инициализация АЦП. После чего происходит считывание
информации с АЦП, которая была получена от аналоговых датчиков, и дальнейшая ее
запись по портам ввода-вывода в регистры микроконтроллера. Происходит
считывание 8-и разрядного кода установки (величина К), который приходит с
пульта управления. Затем происходит вычисление ,
по заданию. Далее происходит сравнение функции N с константой Q, которая
храниться в регистре микроконтроллера. Если N < Q, то осуществляется
выработка двоичного управляющего воздействие Y2. Если же функция N1 > K, то
осуществляется переход к выработке двоичного управляющего воздействие Y3. После
этого идет завершение данного алгоритма.
Для формирования сигналов Y2 и Y3 будем использовать таймер TMR1.
Предделитель выбираем 1:1. На таймер приходит частота 20 МГц.
Произведем расчет числа машинных циклов, которые потребуются для
формирования импульса длительностью T2=318 мкс.
Tмц = 4·T,
где Т = 1/Fosc, тогда Тмц = 4/Fosc= 4/(20·106)=0,2 мкc.
Необходимое число машинных циклов:
N = tимп/Tмц ;
N=1590.
Данное число в шестнадцатеричной системе счисления N = 636 h. Так как
таймер 16-ти разрядный, то FFFF-636=F9C9, полученное значение записываем в регистр TMR1.
Аналогично рассчитаем константу для Т3:
T3=395 мкс;=1975=7B7 h;B7=F848.
10. Алгоритм работы блока обмена
данными по последовательному каналу связи
Работа блока обмена данными по последовательному каналу связи
осуществляется по следующему алгоритму, приведенному на рисунке 25.
Рисунок
25 - Алгоритм обмена данными по последовательному каналу связи
Вначале
происходит начальная инициализация последовательного порта USART:
устанавливается скорость передачи порта (115200 бит/с), разрешение прерывания
от USART и т.д. Осуществляется обработка принятой информации. Затем происходит
анализ полученной информации и если был принят символ «D», то передается в
канал значение Y1. Если символ не был принят, то осуществляется выход из
подпрограммы прерывания.
11. Алгоритм работы блока
взаимодействия с оператором
Рисунок
26 - Алгоритм обмена информацией по последовательному каналу связи
В блоке 1 опрашивается тумблерный регистр пульта управления и формируется
код установки К. В блоке 2 сформированный код записывается по заранее заданному
в программе адресу. В блоке 3 проверяется наличие прерывания от аварийного
датчика. В блоке 4 на пульте управления включается аварийная сигнализация. В
блоке 5 обеспечивается выдача на индикацию сигналов двоичных датчиков X1-X5. В
блоке 6 обеспечивается выдача на индикацию цифрового кода N1, поступающего с
АЦП. В блоке 7 микроконтроллер переводится в режим пониженного
энергопотребления. В блоке 8 проверяется наличие прерывания от ПУ. В блоке 9
обеспечивается выдача на индикацию значения Y1.В блоке 10 обеспечивается выдача
на индикацию результат сравнения N>K.В блоке 11 обеспечивается выдача на
индикацию сигналов двоичных датчиков X1-X5. В блоке 12 обеспечивается выдача на
индикацию константы K. В блоке 13 выход из прерывания на начало программы
обработки.
12. Алгоритм обработки аварийных
ситуаций
В блоке 1 вырабатывается сигнал Y1 установки внешних устройств в исходное
состояние.
В блоке 2 вырабатывается сигнал для отображения аварийной световой
индикации на ПУ.
В блоке 3 в последовательный канал связи передается код символа «!»
В блоке 4 микроконтроллер переводится в режим пониженного
энергопотребления.
Рисунок
27 - Алгоритм обработки прерывания от блока питания
Вначале вырабатывается сигнал Y5 установки внешних устройств в исходное
состояние. Сигнал Y5 представляет собой два прямоугольных импульса
длительностью 30 мкс, следующие с интервалом в 30 мкс. Затем в последовательный
канал связи передается код символа «!». После выполнения указанных действий
микроконтроллер переводится в режим пониженного энергопотребления.=30 мкс;
(Прерывание при отказе источника питания)=150=96h;=FF69.
13. Расчет электрических параметров
микропроцессорной системы управления
Для расчета электрических параметров микропроцессорной системы управления
составим сводную таблицу основных электрических параметров таких как мощность
напряжения и ток.
Таблица 3 - Токи, потребляемые микросхемами
Потребитель
|
Количество
|
Iпотр, мА
|
∑Iпотр, мА
|
+ 15 В
|
AD202
|
2
|
50
|
100
|
Итого
|
100
|
+ 5 В
|
КР1533ЛН1
|
1
|
3,8
|
3,8
|
|
PIC16F877A
|
1
|
43,0
|
43,0
|
|
MCP2551
|
1
|
75
|
75
|
|
PCA9535
|
1
|
160
|
160
|
|
PCF8574
|
1
|
100
|
100
|
|
КИПД05А
|
16
|
5,0
|
80,0
|
|
КР1533ЛА4
|
3
|
2,2
|
6,6
|
Итого
|
189,6
|
+7.5 В
|
AD202
|
2
|
50
|
100
|
Итого
|
100
|
|
|
|
|
|
|
Таким образом необходимо построить схему блока питания, который выдает
напряжение + 15 В, +5В и напряжение +7.5 В. Потребляемая от источника + 15 В
мощность составляет 1.5 Вт, от источника + 5 В - 2.34 Вт, а от источника +7.5В
- 0.75 Вт. Таким образом, мощность, потребляемая всем устройством составляет
4.59 Вт.
14. Разработка блока питания
Блок питания должен обеспечивать электроэнергией микропроцессорную
систему управления по двум каналам - каналу +5В, каналу +15В и каналу +7.5В.
Для питания проектируемой микропроцессорной системы управления используем
схему блока питания представленной на рисунке 26. Блок питания обеспечивает
электроэнергией микропроцессорную систему управления по трем каналам - каналу +
5 В, каналу + 15 В и каналу +7.5В. В цепи питания +5 В предусмотрен резервный
источник питания в виде батарейки GB1 типа 6F22.
Рисунок
28 - Схема блока питания
В качестве трансформатора Т1 в данной схеме использован трансформатор
ТПП-224-127/220-50 . Этот трансформатор имеет номинальную мощность 5,5 Вт.
Напряжения между обмотками 11-12, 13-14 составляет 5В, а между обмотками 15-16
- 10 В. Для получения напряжения 15В соединим обмотки 13-14 и 15-16
последовательно. Для выпрямления напряжения в схеме применены диодные мосты VD1 и VD2 типа КЦ407А. Для стабилизации напряжений используются
интегральные стабилизаторы. В качестве стабилизатора напряжения +15В и +7.5В
используется микросхема DA2 типа КР142ЕН6А, а для получения напряжения + 5 В в
данной схеме используется интегральный стабилизатор DA1 типа КР142ЕН5А.
Заключение
В данной курсовой работе разработана микропроцессорная система управления
объектом, включающая микроконтроллер (PIC16F877), аналого-цифровой
преобразователь, схемы сопряжения и логические микросхемы. В систему входит
пульт управления, с помощью которого оператор может управлять работой системы.
Также была составлена программа, обеспечивающая выполнение алгоритма
управления. Были получены навыки в проектировании микропроцессорных управляющих
систем.
Список литературы
1. Сташин,
В.В. Проектирование цифровых устройств на однокристальных микроконтроллерах /
В.В. Сташин, А.В. Уросов, О.Ф.Мологонцева - М.: Энергоатомиздат, 1990. - 224 с.
. Бродин,
В.Б. Системы на микроконтроллерах и БИС программируемой логики / В.Б. Бродин,
А.В.Калинин - М.: Издательство ЭКОМ, 2002. - 400 c.
. Яценков,
В.С. Микроконтроллеры Microchip. Практическое руководство / В.С. Яценков - М.: Горячая линии - Телеком,
2002. - 296 с.
. Тавернье,
К. PIC-микроконтроллеры. Практика
применения: Пер. с фр. /К. Тавернье - М.: ДМК Пресс., 2004. - 272 с.
Приложение
ЛИСТИНГ УПРАВЛЯЮЩЕЙ ПРОГРАММЫ
MPASM
5.54 NEWPIC_8B_SIMPLE.ASM 12-8-2014 7:44:43 PAGE 1
LOC OBJECT CODE LINE SOURCE TEXT VALUE
00001 #include <p16f877a.inc>
00001 LIST
00002
00003
00004 ; MPASM PIC16F877A processor include
00005 ; 00006 ; (c) Copyright 1999-2013 Microchip Technology,
All rights reserved
00007
00008
00566 LIST
00002 ;
00003 ;ОБЪЯВЛЕНИЕ КОНСТАНТ
00004 ;
00005 DEL_ADC EQU D'100'
00000044 00006 KOD_D EQU 'D'
00007 ;
;ОБЪЯВЛЕНИЕ РЕГИСТРОВ
00009 ;
CBLOCK
0x20
00000020 00011 N1;
РЕГИСТР ВЕЛИЧИНЫ АНАЛОГОВОГО СИГНАЛА ОТ ДАТЧИКА N1
00000021 00012 N2;
РЕГИСТР ВЕЛИЧИНЫ АНАЛОГОВОГО СИГНАЛА ОТ ДАТЧИКА N2
00000022 00013 N;
РЕГИСТР РЕЗУЛЬТАТА ВЫЧИСЛЕНИЯ АНАЛОГОВОЙ ФУНКЦИИ N
00000023 00014 N2_TMP; РЕГИСТР ДЛЯ ХРАНЕНИЯ РЕЗУЛЬТАТА
ВЫЧИСЛЕНИЯ N2-K
00000024 00015 Y2
00000025 00016 Y3;
РЕГИСТРЫ УПРАВЛЯЮЩИХ СИГНАЛОВ Y2,Y3
00000026 00017 KREG;РЕГИСТР
ДЛЯ ХРАНЕНИЯ 8-РАЗРЯДНОГО K
00000027 00018 Q;КОНСТАНТА
ХРАНЯЩАЯСЯ ВО ВНУТРЕННЕЙ ПАМЯТИ
00000028 00019 IND1;РЕГИСТР
ИНДИКАЦИИ 1
00000029 00020 IND2;РЕГИСТР
ИНДИКАЦИИ 2
0000002A 00021 Y1; РЕГИСТР РЕЗУЛЬТАТА ВЫЧИСЛЕНИЯ ЦИФРОВОЙ ФУНКЦИИ Y1
0000002B 00022 W_TEMP;КОПИЯ
АККУМУЛЯТОРА
0000002C 00023 STATUS_TEMP;КОПИЯ
РЕГИСТРА СОСТОЯНИЯ
0000002D 00024 X1
0000002E 00025 X2
0000002F 00026 X3
00000030 00027 X4;
Х1-Х4-ХРАНЯТ ЗНАЧЕНИЯ ЦИФРОВЫХ ДАТЧИКОВ
00000031 00028 X_BUF; ДОПОЛНИТЕЛЬНЫЙ РЕГИСТР ДЛЯ ЦИФРОВЫХ
ДАТЧИКОВ
00000032 00029 IBUF;
РЕГИСТР ДЛЯ ХРАНЕНИЯ ЗНАЧЕНИЙ X1-X5
00000033 00030 XAND;РЕЗУЛЬТАТ
ВЫЧИСЛЕНИЯ X1*X2*X3*X4*X5 НА СЛУЧАЙ ПРЕРЫВАНИЯ
00000034 00031 XIOR;РЕЗУЛЬТАТ
ВЫЧИСЛЕНИЯ X1VX2VX3VX4VX5 НА СЛУЧАЙ ПРЕРЫВАНИЯ
00000035 00032 COUNTER_ADC; СЧЁТЧИК ЗАДЕРЖКИ ДЛЯ АЦП
00000036 00033 REG_1
00000037 00034 REG_2
00000038 00035 REG_3;
ДОПОЛНИТЕЛЬНЫЕ РЕГИСТРЫ ДЛЯ ФОРМИРОВАНИЯ АВАРИЙНОЙ СИГНАЛИЗИЦИИ
00036 ENDC
00037 ;
;МАКРОКОМАНДЫ
00039 ;
MPASM
5.54 NEWPIC_8B_SIMPLE.ASM 12-8-2014 7:44:43 PAGE 2
LOC OBJECT CODE LINE SOURCE TEXT VALUE
00040 BANC0 MACRO ; ВЫБОР БАНКА 0
00041 BCF STATUS, RP0
00042 BCF STATUS, RP1
00043 ENDM
00044 BANC1 MACRO ; ВЫБОР БАНКА 1
00045 BSF STATUS, RP0
00046 BCF STATUS, RP1
00047 ENDM
00048 RES_VECT CODE 0x0000; ВЕКТОР СБРОСА
0000 2??? 00049 GOTO START; ПЕРЕХОД НА
НАЧАЛО ПРОГРАММЫ
00050 MAIN_PROG CODE
00051 ;
;ОБРАБОТКА ПРЕРЫВАНИЙ
00053 ;
00054 ORG 0x04
00055 BANC0
1283 M BCF STATUS, RP0
1303 M BCF STATUS, RP1
00AB 00056 MOVWF W_TEMP
0007 0803 00057 MOVF STATUS,W
00AC 00058 MOVWF STATUS_TEMP;
СОХРАНЕНИЕ АККУМУЛЯТОРА И РЕГИСТРА СОСТОЯНИЯ
;
;ОПРЕДЕЛЕНИЕ ИСТОЧНИКА ПРЕРЫВАНИЯ
00061 ;
188B 00062 BTFSC INTCON,INTF;
ПРЕРЫВАНИЕ ПО ВХОДУ INT
A 2???
00063 GOTO INTER_INT
B 1A8C 00064 BTFSC PIR1,RCIF; ПРЕРЫВАНИЕ ОТ USART (ПРЕРЫВАНИЯ ОТ ТЕРМИНАЛА ВНЕШНЕЙ
ЭВМ)
C 2???
00065 GOTO INTER_USART
00066 ;
;ОПРЕДЕЛЕНИЕ ПРЕРЫВАНИЙ ПО ВХОДУ INT
00068 ;
000D 00069 INTER_INT
00070 BANC0
D 1283 M BCF STATUS, RP0
000E 1303 M BCF STATUS, RP1
F 1A86 00071 BTFSC PORTB,5; ПРЕРЫВАНИЕ ПО СИГНАЛУ ОТКАЗА ИСТОЧНИКА ПИТАНИЯ
2??? 00072 GOTO INTER_PIT
1809 00073 BTFSC PORTE,0; ПРЕРЫВАНИЕ ПО СИГНАЛУ АВАРИЙНОГО
ДАТЧИКА
0012 2??? 00074 GOTO INTER_AVD
1C07 00075 BTFSS PORTC,0; ПРЕРЫВАНИЕ ОТ ПУ
0014 2??? 00076 GOTO INTER_PU
00077 ;
;ПРЕРЫВАНИЕ ОТ ИСТОЧНТИКА ПИТАНИЯ
00079
0015 00080 INTER_PIT
108B 00081 BCF INTCON,INTF; СБРОС ФЛАГА5.54 NEWPIC_8B_SIMPLE.ASM
12-8-2014 7:44:43 PAGE 3OBJECT CODE LINE SOURCE TEXT VALUE
00082 BANC0
1283 M BCF STATUS, RP0
1303 M BCF STATUS, RP1
1606 00083 BSF PORTB,4; 1 НА Y5
018F 00084 CLRF TMR1H; ОЧИСТКА TMR1H
A 018E 00085 CLRF TMR1L; ОЧИСТКА TMR1L
001B 30FF 00086 MOVLW
0xFF; ЗАНЕСТИ В TMR1 30МКС ЗНАЧЕНИЕ Т1
C 008F 00087 MOVWF TMR1H;
ЗАПИСЬ СТАРШЕГО БАЙТА В РЕГИСТР TMR1H
D 3069
00088 MOVLW 0x69
E 008E 00089 MOVWF TMR1L;
ЗАПИСЬ МЛАДШЕГО БАЙТА В РЕГИСТР TMR1L
F 1410
00090 BSF T1CON, TMR1ON; ВКЛЮЧЕНИЕ ТАЙМЕРА TMR1
0020 00091 T5_WAIT1
1C0C 00092 BTFSS PIR1, TMR1IF
2??? 00093 GOTO T5_WAIT1
140C 00094 BSF PIR1, TMR1IF; ОБНУЛИТЬ ФЛАГ ПЕРЕПОЛНЕНИЯ TMR1
1206 00095 BCF PORTB,4; 0 НА Y5
30FF 00096 MOVLW 0xFF; ЗАНЕСТИ В TMR1 30МКС ЗНАЧЕНИЕ Т1
0025 008F 00097 MOVWF TMR1H;
ЗАПИСЬ СТАРШЕГО БАЙТА В РЕГИСТР TMR1H
3069 00098 MOVLW 0x69
008E 00099 MOVWF TMR1L;
ЗАПИСЬ МЛАДШЕГО БАЙТА В РЕГИСТР TMR1L
1410 00100 BSF T1CON, TMR1ON; ВКЛЮЧЕНИЕ ТАЙМЕРА TMR1
0029 00101 T5_WAIT2
1C0C 00102 BTFSS PIR1, TMR1IF
A 2??? 00103 GOTO T5_WAIT2
B 140C 00104 BSF PIR1, TMR1IF; ОБНУЛИТЬ ФЛАГ ПЕРЕПОЛНЕНИЯ
TMR1
C 1606 00105 BSF PORTB,4; 1 НА Y5
D 30FF 00106 MOVLW 0xFF; ЗАНЕСТИ В TMR1 30МКС ЗНАЧЕНИЕ Т1
002E 008F 00107 MOVWF TMR1H; ЗАПИСЬ СТАРШЕГО БАЙТА В РЕГИСТР TMR1H
F 3069
00108 MOVLW 0x69
008E 00109 MOVWF TMR1L;
ЗАПИСЬ МЛАДШЕГО БАЙТА В РЕГИСТР TMR1L
1410 00110 BSF T1CON, TMR1ON; ВКЛЮЧЕНИЕ ТАЙМЕРА TMR1
0032 00111 T5_WAIT3
1C0C 00112 BTFSS PIR1, TMR1IF
2??? 00113 GOTO T5_WAIT3
140C 00114 BSF PIR1, TMR1IF; ОБНУЛИТЬ ФЛАГ ПЕРЕПОЛНЕНИЯ TMR1
0035 1206 00115 BCF PORTB, 4; 0 НА Y5 (СФОРМИРОВАНИ ИМПУЛЬС 30МКС -
"1", 30МКС - "0", 30МКС - "1")
3021 00116 MOVLW
"!"
0099 00117 MOVWF TXREG; ПЕРЕДАЧА В ПОСЛЕДОВАТЕЛЬНЫЙ КАНАЛ
КОДА СИМВОЛА
"!"
00118 BANC1
1683 M BSF STATUS, RP0
1303 M BCF STATUS, RP1
A 1698 00119 BSF TXSTA, TXEN
00120 BANC0
B 1283 M BCF STATUS, RP0
C 1303 M BCF STATUS, RP1
D 1E0C 00121 BTFSS PIR1, TXIF
003E 2??? 00122 GOTO $-1; ПРОВЕРКА ФЛАГА ПРЕРЫВАНИЯ ОТ ПЕРЕДАТЧИКА
MPASM 5.54 NEWPIC_8B_SIMPLE.ASM 12-8-2014 7:44:43 PAGE
4OBJECT CODE LINE SOURCE TEXT VALUE
00123 BANC1
F 1683 M BSF STATUS, RP0
1303 M BCF STATUS, RP1
1298 00124 BCF TXSTA, TXEN
00125 BANC0
1283 M BCF STATUS, RP0
1303 M BCF STATUS, RP1
0044 0063 00126 SLEEP;
ПЕРЕХОД В РЕЖИМ ПОНИЖЕННОГО ЭНЕРГОПОТРЕБЛЕНИЯ
2??? 00127 GOTO END_INTER; ПЕРЕХОД НА ВЫХОД ИЗ ПРЕРЫВАНИЯ
00128 ;
;ПРЕРЫВАНИЕ ОТ АВАРИЙНОГО ДАТЧИКА
00130
00131 INTER_AVD
00132 BANC0
1283 M BCF STATUS, RP0
1303 M BCF STATUS, RP1
108B 00133 BCF INTCON, INTF; СБРОС ФЛАГА
01A8 00134 CLRF IND1
A 01A9 00135 CLRF IND2
B 30A0 00136 MOVLW 0xA0
C 00B6 00137 MOVWF REG_1
D 3025 00138 MOVLW 0x25
E 00B7 00139 MOVWF REG_2
004F 3026 00140 MOVLW 0x26
00B8 00141 MOVWF REG_3; ЗАПИСЬ В РЕГИСТРЫ ЗНАЧЕНИЙ ДЛЯ ВЫРАБОТКИ ИМПУЛЬСОВ
ЧАСТОТОЙ 2Гц
0051 00142 MM1
0BB6 00143 DECFSZ REG_1,f
2??? 00144 GOTO $-1
0BB7 00145 DECFSZ REG_2,F
2??? 00146 GOTO MM1
2??? 00147 GOTO MM3
00148 MM2
30FF 00149 MOVLW 0xFF
00B6 00150 MOVWF REG_1
2??? 00151 GOTO MM1
00152 MM4
30FF 00153 MOVLW 0xFF
A 00B7 00154 MOVWF REG_2
B 2??? 00155 GOTO MM1
C 00156 MM3
C 0BB8 00157 DECFSZ REG_3
005D 2??? 00158 GOTO MM4; ВЫРАБОТКА СИГНАЛА ЧАСТОТОЙ 2Гц
005E 0820 00159 MOVF N1,W
F 00A8 00160 MOVWF IND1
0060 2??? 00161 CALL WRITE_IND1; ЗАПИСЬ ЗНАЧЕНИЯ N1 В РИ1
MPASM 5.54 NEWPIC_8B_SIMPLE.ASM 12-8-2014 7:44:43 PAGE
5OBJECT CODE LINE SOURCE TEXT VALUE
01B2 00162 CLRF IBUF
182D 00163 BTFSC X1,0
1432 00164 BSF IBUF,0
182E 00165 BTFSC X2,0
14B2 00166 BSF IBUF,1
182F 00167 BTFSC X3,0
1532 00168 BSF IBUF,2
1830 00169 BTFSC X4,0
15B2 00170 BSF IBUF,3
006A 2??? 00171 CALL WRITE_IND2;
ЗАПИСЬ ЗНАЧЕНИЙ X1-X4 В РИ2
B 0063 00172 SLEEP
C 2???
00173 GOTO END_INTER;ПЕРЕХОД
НА ВЫХОД ИЗ ПРЕРЫВАНИЯ
00174 ;
;ПРЕРЫВАНИЕ ОТ ПУ
00176 ;
D
00177 INTER_PU
00178 BANC0
D 1283 M BCF STATUS, RP0
E 1303 M BCF STATUS, RP1
F 108B 00179 BCF INTCON,INTF; СБРОС ФЛАГА
01A8 00180 CLRF IND1
01A9 00181 CLRF IND2
082A 00182 MOVF Y1,W
00A8 00183 MOVWF IND1
00184 ;---РЕЗУЛЬТАТ СРАВНЕНИЯ N>Q
1C25 00185 BTFSS Y3,0
0075 10A8 00186 BCF IND1,1; ЕСЛИ N<Q, ТО IND1,1=0
14A8 00187 BSF IND1,1; ЕСЛИ N>Q, ТО IND1,1=1
00188 ;---ВЫЧИСЛЕНИЕ ФУНКЦИИ X1 AND X2 AND X3 AND X4
082D 00189 MOVF X1,W
052E 00190 ANDWF X2,W
052F 00191 ANDWF X3,W
A 0530 00192 ANDWF X4,W
B 00B3 00193 MOVWF XAND
C 1833 00194 BTFSC XAND,0
D 1528 00195 BSF IND1,2
00196 ;---ВЫЧИСЛЕНИЕ ФУНКЦИИ X1 OR X2 OR X3 OR X4
E 082D 00197 MOVF X1,W
F 042E 00198 IORWF X2,W
042F 00199 IORWF X3,W
0430 00200 IORWF X4,W
00B4 00201 MOVWF XIOR
1834 00202 BTFSC XIOR,0
15A8 00203 BSF IND1,3
0085 2??? 00204 CALL WRITE_IND1
00205 ;---ВЫДАЧА КОНСТАНЫ Q В
РИ2
0086 0827 00206 MOVF Q,W
00A9 00207 MOVWF IND2
2??? 00208 CALL WRITE_IND2
2??? 00209 GOTO END_INTER
00210
00211 ;ПРЕРЫВАНИЕ ОТ USART
(ПРЕРЫВАНИЕ ОТ ТЕРМИНАЛА ВНЕЩНЕЙ ЭВМ)
00212 5.54 NEWPIC_8B_SIMPLE.ASM 12-8-2014 7:44:43 PAGE
6OBJECT CODE LINE SOURCE TEXT VALUE
A 00213 INTER_USART
A 081A 00214 MOVF RCREG,W; СЧИТЫВАНИЕ ДАННЫХ ИЗ БУФЕРА
B 0244 00215 SUBWF KOD_D,W
C 1D03 00216 BTFSS STATUS,Z
D 2??? 00217 GOTO END_INTER
E 082A 00218 MOVF Y1,W
008F 0099 00219 MOVWF TXREG; ПЕРЕДАЧА ЗНАЧЕНИЯ Y1
00220 BANC1
1683 M BSF STATUS, RP0
1303 M BCF STATUS, RP1
1698 00221 BSF TXSTA, TXEN
00222 BANC0
1283 M BCF STATUS, RP0
1303 M BCF STATUS, RP1
1E0C 00223 BTFSS PIR1, TXIF
0096 2??? 00224 GOTO
$-1; ПРОВЕРКА ФЛАГА ПРЕРЫВАНИЯ ОТ ПЕРЕДАТЧИКА
00225 BANC1
1683 M BSF STATUS, RP0
1303 M BCF STATUS, RP1
1298 00226 BCF TXSTA, TXEN
00227 BANC0
A 1283 M BCF STATUS, RP0
B 1303 M BCF STATUS, RP1
C 2??? 00228
GOTO END_INTER
;
;ВЫХОД ИЗ ПРЕРЫВАНИЯ
00231 ;
009D 00232 END_INTER
D 082C 00233 MOVF STATUS_TEMP,W; ВОССТАНОВИТЬ РЕГИСТР STATUS
E 0083 00234 MOVWF STATUS
F 082B 00235 MOVF W_TEMP,W; ВОСТАНОВЛЕНИЕ АККУМУЛЯТОРА
00A0 0009 00236 RETFIE
00237
00238 ;ПОДПРОГРАММА ЗАПИСИ ЗНАЧЕНИЙ РЕГИСТРА ИНДИКАЦИИ РИ1 00239
A1 00240 WRITE_IND1
00241 BANC1
A1 1683 M BSF STATUS, RP0
A2 1303 M BCF STATUS, RP1
A3 1411 00242 BSF SSPCON2, SEN
00243 BANC0
A4 1283 M BCF STATUS, RP0
A6 1D8C 00244 BTFSS PIR1,SSPIF; ОЖИДАТЬ УСТАНОВКУ ФЛАГА
ПРЕРЫВ SSPIF
A7 2??? 00245 GOTO $-1
A8 118C 00246 BCF PIR1,SSPIF; СБРОСИТЬ ФЛАГ5.54
NEWPIC_8B_SIMPLE.ASM 12-8-2014 7:44:43 PAGE 7OBJECT CODE LINE SOURCE TEXT VALUE
A9
3040 00247 MOVLW B'01000000';ПЕРЕДАТЬ АДРЕС УСТР-ВА (DD3), ВКЛ РЕЖИМ ЗАПИСИ
AA
0093 00248 MOVWF SSPBUF
AB 1D8C 00249 BTFSS PIR1,SSPIF; ОЖИДАТЬ УСТАНОВКУ ФЛАГА ПРЕРЫВ SSPIF
00AC 2??? 00250 GOTO $-1
AD 118C 00251 BCF PIR1,SSPIF; СБРОСИТЬ ФЛАГ
00AE 3002 00252 MOVLW 0x02;
ПЕРЕДАТЬ НОМЕР РЕГИСТРА ("2"-ВЫХ РЕГ ПОРТА P0)
AF
0093 00253 MOVWF SSPBUF
B0 1D8C 00254 BTFSS PIR1,SSPIF; ОЖИДАТЬ УСТАНОВКУ ФЛАГА ПРЕРЫВ SSPIF
B1
2??? 00255 GOTO $-1
B2 118C 00256 BCF PIR1,SSPIF;
СБРОСИТЬ ФЛАГ
B3
0828 00257 MOVF IND1,W;
ВЫВОД IND1 В РИ1
B4
0093 00258 MOVWF SSPBUF ;ПЕРЕДАТЬ СОДЕРЖИМОЕ РЕГИСТРА N1
B5 1D8C 00259 BTFSS PIR1,SSPIF; ОЖИДАТЬ УСТАНОВКУ ФЛАГА ПРЕРЫВ SSPIF
B6
2??? 00260 GOTO $-1
B7 118C 00261 BCF PIR1,SSPIF;
СБРОСИТЬ ФЛАГ
00262 BANC1
B8 1683 M BSF STATUS, RP0
B9 1303 M BCF STATUS, RP1
BA 1511 00263 BSF SSPCON2,PEN; СФОРМИРОВАТЬ СТОПОВЫЙ БИТ 00264 BANC0
BB 1283 M BCF STATUS, RP0
BC 1303 M BCF STATUS, RP1
BD 1D8C 00265 BTFSS PIR1,SSPIF; ОЖИДАТЬ УСТАНОВКУ ФЛАГА
ПРЕРЫВ SSPIF 00BE 2??? 00266 GOTO $-1
BF 118C 00267 BCF PIR1,SSPIF; СБРОСИТЬ ФЛАГ
00C0 0008 00268 RETURN; ВЕРНУТЬСЯ ИЗ ПОДПРОГРАММЫ
00269
00270 ;ПОДПРОГРАММА ЗАПИСИ ЗНАЧЕНИЙ РЕГИСТРА ИНДИКАЦИИ РИ2
00271
C1 00272 WRITE_IND2
00273 BANC1
C1 1683 M BSF STATUS, RP0
C2 1303 M BCF STATUS, RP1
C3 1411 00274 BSF SSPCON2, SEN
00275 BANC0
C4 1283 M BCF STATUS, RP0
C5 1303 M BCF STATUS, RP1
C6 1D8C 00276 BTFSS PIR1,SSPIF; ОЖИДАТЬ УСТАНОВКУ ФЛАГА ПРЕРЫВ
SSPIF
C7 2??? 00277 GOTO $-1
C8 118C 00278 BCF PIR1,SSPIF; СБРОСИТЬ ФЛАГ
00C9 3040 00279 MOVLW B'01000000';ПЕРЕДАТЬ АДРЕС УСТР-ВА (DD3), ВКЛ РЕЖИМ ЗАПИСИ
CA
0093 00280 MOVWF SSPBUF
CB 1D8C 00281 BTFSS PIR1,SSPIF; ОЖИДАТЬ УСТАНОВКУ ФЛАГА ПРЕРЫВ SSPIF
CC
2??? 00282 GOTO $-1
CD 118C 00283 BCF PIR1,SSPIF;
СБРОСИТЬ ФЛАГ
CE
3003 00284 MOVLW 0x03; ПЕРЕДАТЬ НОМЕР РЕГИСТРА ("3"-ВЫХ РЕГ ПОРТА P1)
CF
0093 00285 MOVWF SSPBUF
D0 1D8C 00286 BTFSS PIR1,SSPIF; ОЖИДАТЬ УСТАНОВКУ ФЛАГА ПРЕРЫВ SSPIF
D1
2??? 00287 GOTO $-1
D2 118C 00288 BCF PIR1,SSPIF;
СБРОСИТЬ ФЛАГ
MPASM 5.54 NEWPIC_8B_SIMPLE.ASM 12-8-2014 7:44:43 PAGE
8OBJECT CODE LINE SOURCE TEXT VALUE
D3 0829 00289 MOVF IND2,W; ВЫВОД IND2 В РИ2
00D4 0093 00290 MOVWF SSPBUF ;ПЕРЕДАТЬ СОДЕРЖИМОЕ РЕГИСТРА N1
D5 1D8C 00291 BTFSS PIR1,SSPIF; ОЖИДАТЬ УСТАНОВКУ ФЛАГА ПРЕРЫВ SSPIF
D6
2??? 00292 GOTO $-1
D7 118C 00293 BCF PIR1,SSPIF;
СБРОСИТЬ ФЛАГ
00294 BANC1
D8 1683 M BSF STATUS, RP0
D9 1303 M BCF STATUS, RP1
DA 1511 00295 BSF SSPCON2,PEN; СФОРМИРОВАТЬ СТОПОВЫЙ БИТ
00296 BANC0
DB 1283 M BCF STATUS, RP0
DC 1303 M BCF STATUS, RP1
DD 1D8C 00297 BTFSS PIR1,SSPIF; ОЖИДАТЬ УСТАНОВКУ ФЛАГА
ПРЕРЫВ SSPIF
DE 2??? 00298 GOTO $-1
DF 118C 00299 BCF PIR1,SSPIF; СБРОСИТЬ ФЛАГ
00E0 0008 00300 RETURN; ВЕРНУТЬСЯ ИЗ ПОДПРОГРАММЫ
00301
E1
00302 START
00303 ;
;ИНИЦИАЛИЗАЦИЯ 00305 ;
;---МОДУЛЬ КОМПАРАТОРА
00307 BANC1
00E1 1683 M BSF STATUS, RP0
E2 1303 M BCF STATUS, RP1
00E3 3007 00308 MOVLW B'00000111'
E4 009C 00309 MOVWF CMCON; ОТКЛЮЧЕНИЕ КОМПАРАТОРОВ
00310 ;---МОДУЛЬ АЦП
E5
3004 00311 MOVLW B'00000100'
E6 009F 00312 MOVWF ADCON1; ЛЕВОЕ ВЫРАВНИВАНИЕ, RA0,RA1 - АНАЛОГОВЫЕ
ВХОДЫ
00313 BANC0
E7 1283 M BCF STATUS, RP0
E8 1303 M BCF STATUS, RP1
E9 3081 00314 MOVLW B'10000001'
EA 009F 00315 MOVWF ADCON0; ТАКТОВЫЙ СИГНАЛ FOSC/32, МОДУЛЬ
АЦП ВКЛЮЧЕН
00316 ;---ИНИЦИАЛИЗАЦИЯ ПОРТОВ
00317 BANC1
EB
1683 M BSF STATUS, RP0
00EC 1303 M BCF STATUS, RP1
ED 0185 00318 CLRF TRISA
EE 0186 00319 CLRF TRISB
EF 0187 00320 CLRF TRISC
F0 0189 00321 CLRF TRISE
F1 3037 00322 MOVLW B'00110111'
F2 0085 00323 MOVWF TRISA; RA0,RA1,RA2,RA4,RA5 - IN5.54
NEWPIC_8B_SIMPLE.ASM 12-8-2014 7:44:43 PAGE 9OBJECT CODE LINE SOURCE TEXT VALUE
F3 3021 00324 MOVLW B'00100001'
F4 0086 00325 MOVWF TRISB; RB0,RB5-IN RB1,RB2,RB3,RB4-OUT
F5 301B 00326 MOVLW B'00011011'
F6 0087 00327 MOVWF TRISC; RC0,RC1,RC3,RC4-IN
F7 3005 00328 MOVLW B'00000101'
F8 0089 00329 MOVWF TRISE; RE0,RE2-IN RE1-OUT
00330 ;---ИНИЦИАЛИЗАЦИЯ ТАЙМЕРА
00331 BANC0
F9
1283 M BCF STATUS, RP0
FA
1303 M BCF STATUS, RP1
FB
0190 00332 CLRF T1CON; ОЧИСТИТЬ
РЕГИТР T1CON
FC 018F 00333 CLRF TMR1H;
ОЧИСТИТЬ СТАРШИЙ БИТ РЕГИСТРА TMR1
FD 018E 00334 CLRF TMR1L;
ОЧИСТИТЬ МЛАДШИЙ БИТ РЕГИСТРА TMR1
00335 ;---ИНИЦИАЛИЗАЦИЯ МОДУЛЯ USART
00336 BANC0
FE
1283 M BCF STATUS, RP0
00FF 1303 M BCF STATUS, RP1
0198 00337 CLRF RCSTA
0101 3090 00338 MOVLW B'10010000'
0098 00339 MOVWF RCSTA; МОДУЛЬ ВКЛЮЧЕН, 8-РАЗРЯДНЫЙ ПРИЕМ ,
ПРИЕМ РАЗРЕШЕН
00340 BANC1
1683 M BSF STATUS, RP0
1303 M BCF STATUS, RP1
0105 0198 00341 CLRF TXSTA
3014 00342 MOVLW B'00010100'
0098 00343 MOVWF TXSTA; 8-РАЗРЯДНАЯ ПЕРЕДАЧА, АСИНХРОННЫЙ
РЕЖИМ, ПЕРЕДАЧА РАЗРЕШЕНА, ВЫСОКОСКОРОСТНАЯ ПЕРЕДАЧА
300B 00344 MOVLW D'11'; СКОРОСТЬ 115200 БИТ/С
0099 00345 MOVWF SPBRG
00346 ;---ИНИЦИАЛИЗАЦИЯ МОДУЛЯ MSSP
00347 BANC0
010A 1283 M BCF STATUS, RP0
B 1303 M BCF STATUS, RP1
C 3028 00348 MOVLW B'00101000'
D 0094 00349 MOVWF SSPCON; ВЕДУЩИЙ I2C РЕЖИМ, ТАКУТОВЫЙ
СИГНАЛ = FOSC/(4*(SSPADD+1))
00350 BANC1
E 1683 M BSF STATUS, RP0
F 1303 M BCF STATUS, RP1
30C0 00351 MOVLW B'11000000'; SMP,CKE
0094 00352 MOVWF SSPSTAT
0191 00353 CLRF SSPCON2
3032 00354 MOVLW D'50'
0114 0093 00355 MOVWF SSPADD; ЗАГРУЗИТЬ
КОНСТАНТУ ОПРЕДЕЛЯЮЩУЮ ЧАСТОТУ СИНХ
MPASM 5.54 NEWPIC_8B_SIMPLE.ASM 12-8-2014 7:44:43 PAGE
10OBJECT CODE LINE SOURCE TEXT VALUE
РОНИЗАЦИИ В РЕГИСТР АДРЕСА
00356 ;---УСТАНОВКА НАПРАВЛЕНИЙ РАБОТЫ ЛИНИЙ ПОРТОВ
00357 ;--DD3
1411 00358 BSF SSPCON2,SEN; СФОРМИРОВАТЬ СТАРТОВЫЙ БИТ
00359 BANC0
1283 M BCF STATUS, RP0
1303 M BCF STATUS, RP1
0118 1D8C 00360 BTFSS PIR1, SSPIF; ОЖИДАТЬ УСТАНОВКУ ФЛАГА ПРЕРЫВАНИЯ SSPIF
2??? 00361 GOTO $-1
A 3040
00362 MOVLW B'01000000' ;ПЕРЕДАТЬ АДРЕС УСТРОЙСТВА DD3(ИНДИКАЦИЯ
ПУЛЬТА УПРАВЛЕНИЯ)
B 0093
00363 MOVWF SSPBUF
C 1D8C 00364 BTFSS PIR1,SSPIF ;ОЖИДАТЬ УСТАНОВКУ ФЛАГА ПРЕРЫВАНИЯ SSPIF
D 2???
00365 GOTO $-1
E 118C 00366 BCF PIR1,SSPIF;
СБРОСИТЬ ФЛАГ
F 3006
00367 MOVLW 0x06; ПЕРЕДАТЬ НОМЕР РЕГИСТРА ("6" - РЕГИСТР
КОНФИГУРАЦИИ ПОРТА P0)
0093 00368 MOVWF SSPBUF
1D8C 00369 BTFSS PIR1,SSPIF; ОЖИДАТЬ УСТАНОВКУ ФЛАГА ПРЕРЫВ SSPIF
2??? 00370 GOTO $-1
118C 00371 BCF PIR1,SSPIF;
СБРОСИТЬ ФЛАГ
3000 00372 MOVLW 0x00; ВСЕ ЛИНИИ ПОРТА P0 НА ВЫВОД
0093 00373 MOVWF SSPBUF
1D8C 00374 BTFSS PIR1,SSPIF; ОЖИДАТЬ УСТАНОВКУ ФЛАГА ПРЕРЫВ SSPIF
2??? 00375 GOTO $-1
118C 00376 BCF PIR1,SSPIF;
СБРОСИТЬ ФЛАГ
3007 00377 MOVLW 0x07; ПЕРЕДАТЬ НОМЕР РЕГИСТРА
("7" - РЕГИСТР КОНФИГУРАЦИИ ПОРТА P1)
A 0093
00378 MOVWF SSPBUF
B 1D8C 00379 BTFSS PIR1,SSPIF; ОЖИДАТЬ УСТАНОВКУ ФЛАГА ПРЕРЫВ SSPIF
C 2???
00380 GOTO $-1
D 118C 00381 BCF PIR1,SSPIF;
СБРОСИТЬ ФЛАГ
E 3000
00382 MOVLW 0x00; ВСЕ ЛИНИИ ПОРТА P1 НА ВЫВОД
F 0093
00383 MOVWF SSPBUF
1D8C 00384 BTFSS PIR1,SSPIF; ОЖИДАТЬ УСТАНОВКУ ФЛАГА ПРЕРЫВ SSPIF
2??? 00385 GOTO $-1
118C 00386 BCF PIR1,SSPIF;
СБРОСИТЬ ФЛАГ
00387 BANC1
1683 M BSF STATUS, RP0
1303 M BCF STATUS, RP1
0135 1511 00388 BSF SSPCON2,PEN; СФОРМИРОВАТЬ СТОПОВЫЙ БИТ
00389 BANC0
1283 M BCF STATUS, RP0
1303 M BCF STATUS, RP1
0138 1D8C 00390 BTFSS PIR1,SSPIF; ОЖИДАТЬ УСТАНОВКУ ФЛАГА ПРЕРЫВ SSPIF
2??? 00391 GOTO $-1
A 118C 00392 BCF PIR1,SSPIF;
СБРОСИТЬ ФЛАГ
00393 ;--DD4
B 3047
00394 MOVLW B'01000111'; ПЕРЕДАТЬ АДРЕС УСТРОЙСТВА DD4
C 0093
00395 MOVWF SSPBUF
D 1D8C 00396 BTFSS PIR1,SSPIF; ОЖИДАТЬ УСТАНОВКУ ФЛАГА ПРЕРЫВАНИЯ SSPIF
MPASM 5.54 NEWPIC_8B_SIMPLE.ASM 12-8-2014 7:44:43 PAGE
11OBJECT CODE LINE SOURCE TEXT VALUE
E 2??? 00397 GOTO $-1
F 118C 00398 BCF PIR1,SSPIF;СБРОСИТЬ ФЛАГ
0140 3006 00399 MOVLW
0x06; ПЕРЕДАТЬ НОМЕР РЕГИСТРА
("6" - РЕГИСТР КОНФИГУРАЦИИ ПОРТА P0)
0093 00400 MOVWF SSPBUF
1D8C 00401 BTFSS PIR1,SSPIF; ОЖИДАТЬ УСТАНОВКУ ФЛАГА ПРЕРЫВАНИЯ SSPIF
2??? 00402 GOTO $-1
118C 00403 BCF PIR1,SSPIF;
СБРОСИТЬ ФЛАГ
30FF 00404 MOVLW 0xFF;
ВСЕ ЛИНИИ ПОРТА P0 НАСТРОИТЬ НА
ВВОД
0093 00405 MOVWF SSPBUF
1D8C 00406 BTFSS PIR1,SSPIF; ОЖИДАТЬ УСТАНОВКУ ФЛАГА ПРЕРЫВАНИЯ SSPIF
2??? 00407 GOTO $-1
00408 ;---ИНИЦИАЛИЗАЦИЯ ПРЕРЫВАНИЙ
30D0 00409 MOVLW B'11010000'; РАЗРЕШЕНИЕ ГЛОБАЛЬНЫХ ПРЕРЫВАНИЙ, ПРЕРЫВАНИЙ ОТ
ПЕРЕФЕРИЙНЫХ МОДУЛЕЙ И ПО ВХОДУ INT
A 008B 00410 MOVWF INTCON
00411 ;
;ЧТЕНИЕ КОНСТАНТЫ К
00413 ;
014B 00414 MAIN_PROG
00415 BANC1
B 1683 M BSF STATUS, RP0
C 1303 M BCF STATUS, RP1
D 1411 00416 BSF SSPCON2,SEN ;СФОРМИРОВАТЬ СТАРТОВЫЙ БИТ
00417 BANC0
E 1283 M BCF STATUS, RP0
F 1303 M BCF STATUS, RP1
1D8C 00418 BTFSS PIR1,SSPIF; ОЖИДАТЬ УСТАНОВКУ ФЛАГА ПРЕРЫВ SSPIF
2??? 00419 GOTO $-1
118C 00420 BCF PIR1,SSPIF; СБРОСИТЬ ФЛАГ
0153 3041 00421 MOVLW B'01000001';
ПЕРЕДАТЬ АДРЕС УСТРОЙСТВА (DD6),
ВКЛЮЧИТЬ РЕЖИМ ЗАПИСИ
0093 00422 MOVWF SSPBUF
1D8C 00423 BTFSS PIR1,SSPIF; ОЖИДАТЬ УСТАНОВКУ ФЛАГА ПРЕРЫВ SSPIF
2??? 00424 GOTO $-1
118C 00425 BCF PIR1,SSPIF;
СБРОСИТЬ ФЛАГ
3001 00426 MOVLW 0x01; ПЕРЕДАТЬ НОМЕР РЕГИСТРА
("1"-ВХОДНОГО РЕГИСТРА ПОРТА P1)
0093 00427 MOVWF SSPBUF
A 1D8C 00428 BTFSS PIR1,SSPIF; ОЖИДАТЬ УСТАНОВКУ ФЛАГА ПРЕРЫВ SSPIF
B 2???
00429 GOTO $-1
C 118C 00430 BCF PIR1,SSPIF;
СБРОСИТЬ ФЛАГ
00431 BANC1
D 1683 M BSF STATUS, RP0
015E 1303 M BCF STATUS, RP1
F 1491
00432 BSF SSPCON2,RSEN;
СФОРМИРОВАТЬ ПОВТОРНЫЙ СТАРТОВЫЙ БИТ
00433 BANC0
1283 M BCF STATUS, RP0
1303 M BCF STATUS, RP1
0162 1D8C 00434 BTFSS PIR1,SSPIF; ОЖИДАТЬ УСТАНОВКУ ФЛАГА ПРЕРЫВ SSPIF
MPASM 5.54 NEWPIC_8B_SIMPLE.ASM 12-8-2014 7:44:43 PAGE
12OBJECT CODE LINE SOURCE TEXT VALUE
2??? 00435 GOTO $-1
118C 00436 BCF PIR1,SSPIF; СБРОСИТЬ ФЛАГ
0165 3043 00437 MOVLW B'01000011';ПЕРЕДАТЬ
АДРЕС УСТРОЙСТВА (DD4), ВКЛЮЧИТЬ
РЕЖИМ ЧТЕНИЯ
0093 00438 MOVWF SSPBUF
1D8C 00439 BTFSS PIR1,SSPIF; ОЖИДАТЬ УСТАНОВКУ ФЛАГА ПРЕРЫВ SSPIF
2??? 00440 GOTO $-1
118C 00441 BCF PIR1,SSPIF;
СБРОСИТЬ ФЛАГ
00442 BANC1
A 1683 M BSF STATUS, RP0
B 1303 M BCF STATUS, RP1
C 1591 00443 BSF SSPCON2,RCEN; РАЗРЕШИТЬ ПРИЕМ ДАННЫХ
00444 BANC0
D 1283 M BCF STATUS, RP0
E 1303 M BCF STATUS, RP1
F 1D8C 00445 BTFSS PIR1,SSPIF; ОЖИДАТЬ УСТАНОВКУ ФЛАГА ПРЕРЫВАНИЯ SSPIF
2??? 00446 GOTO $-1
118C 00447 BCF PIR1,SSPIF; СБРОСИТЬ ФЛАГ
0172 0813 00448 MOVF SSPBUF,W
00A6 00449 MOVWF KREG; СОХРАНИТЬ ПРИНЯТЫЙ БАЙТ(К)
1691 00450 BSF SSPCON2,ACKDT; СФОРМИРОВАТЬ БИТ "НЕТ ПОДТВЕРЖДЕНИЯ"
0175 1611 00451 BSF SSPCON2,ACKEN
00452 BANC0
1283 M BCF STATUS, RP0
1303 M BCF STATUS, RP1
1D8C 00453 BTFSS PIR1,SSPIF; ОЖИДАТЬ УСТАНОВКУ ФЛАГА ПРЕРЫВ SSPIF
2??? 00454 GOTO $-1
A 118C 00455 BCF PIR1,SSPIF; СБРОСИТЬ ФЛАГ
00456 BANC1
B 1683 M BSF STATUS, RP0
C 1303 M BCF STATUS, RP1
D 1511 00457 BSF SSPCON2,PEN; СФОРМИРОВАТЬ СТОПОВЫЙ БИТ
00458 BANC0
E 1283 M BCF STATUS, RP0
F 1303 M BCF STATUS, RP1
1D8C 00459 BTFSS PIR1,SSPIF; ОЖИДАТЬ УСТАНОВКУ ФЛАГА ПРЕРЫВ SSPIF
2??? 00460 GOTO $-1
118C 00461 BCF PIR1,SSPIF; СБРОСИТЬ ФЛАГ
00462
00463 ;ЧТЕНИЕ И ОБРАБОТКА ИНФОРМАЦИИ С АНАЛОГОВЫХ ДАТЧИКОВ
00464
00465 BANC0
1283 M BCF STATUS, RP0
1303 M BCF STATUS, RP1
119F 00466 BCF ADCON0,CHS0
121F 00467 BCF ADCON0,CHS1
129F 00468 BCF ADCON0,CHS2 ; ВЫБОР КАНАЛА AN0
3064 00469 MOVLW DEL_ADC
00B5 00470 MOVWF COUNTER_ADC5.54 NEWPIC_8B_SIMPLE.ASM
12-8-2014 7:44:43 PAGE 13OBJECT CODE LINE SOURCE TEXT VALUE
A 0BB5 00471 DECFSZ COUNTER_ADC
018B 2??? 00472 GOTO $-1; РЕАЛИЗАЦИЯ ЗАДЕРЖКИ ДЛЯ АЦП
C 151F 00473 BSF ADCON0,GO;
НАЧАТЬ ПРЕОБРАЗОВАНИЕ AN0
D 191F 00474 BTFSC ADCON0,GO;
ОЖИДАТЬ ОКОНЧАНИЯ ПРЕОБРАЗОВАНИЯ
018E 2??? 00475 GOTO $-1
F 081E 00476 MOVF ADRESH, W
0190 00A0 00477 MOVWF N1; СОХРАНИТЬ РЕЗУЛЬТАТ ПРЕОБРАЗОВАНИЯ
0191 159F 00478 BSF ADCON0,CHS0
121F 00479 BCF ADCON0,CHS1
129F 00480 BCF ADCON0,CHS2 ; ВЫБОР КАНАЛА AN1
3064 00481 MOVLW DEL_ADC
00B5 00482 MOVWF COUNTER_ADC
0196 0BB5 00483 DECFSZ COUNTER_ADC
2??? 00484 GOTO $-1;
РЕАЛИЗАЦИЯ ЗАДЕРЖКИ ДЛЯ АЦП
151F 00485 BSF ADCON0,GO;
НАЧАТЬ ПРЕОБРАЗОВАНИЕ AN0
191F 00486 BTFSC ADCON0,GO;
ОЖИДАТЬ ОКОНЧАНИЯ ПРЕОБРАЗОВАНИЯ
019A 2??? 00487 GOTO $-1
B 081E 00488 MOVF ADRESH, W
019C 00A1 00489 MOVWF N2; СОХРАНИТЬ
РЕЗУЛЬТАТ ПРЕОБРАЗОВАНИЯ
019D 0180 00490 CLRF W
E 300B 00491 MOVLW 0x0B
019F 00A7 00492 MOVWF Q; ЗАГРУЗКА
КОНСТАНТЫ Q В ПАМЯТЬ МК
01A0 0826 00493 MOVF KREG,W
A1 0221 00494 SUBWF N2,W; W=N2-K
A2 00A3 00495 MOVWF N2_TMP
A3 0220 00496 SUBWF N1,W;
A4 1D03 00497 BTFSS STATUS,Z
A5 2??? 00498 GOTO M1
A6 1C03 00499 BTFSS STATUS,C
A7 2??? 00500 GOTO M1
A8 0823 00501 MOVF N2_TMP,W
A9 00A2 00502 MOVWF N
AA 2??? 00503 GOTO M2
AB 00504 M1
AB 0820 00505 MOVF N1,W
AC 00A2 00506 MOVWF N; ВЫЧИСЛЕНИЕ ФУНКЦИИ N=min(N1,N2-K)
AD 00507 M2
AD 0822 00508 MOVF N,W
01AE 0227 00509 SUBWF Q,W; СРАВНЕНИЕ N И Q
01AF 1C03 00510 BTFSS STATUS,C
B0 2??? 00511 GOTO M3
00512 ;N<Q
B1 1424 00513 BSF Y2,0
B2 1506 00514 BSF PORTB, 2; 1 НА Y2
B3 1186 00515 BCF PORTB, 3; 0 НА Y3
01B4 30FA 00516 MOVLW
0xFA; ЗАНЕСТИ В TMR1 260МКС ЗНАЧЕНИЕ Т2
B5 008F 00517 MOVWF TMR1H;
ЗАПИСЬ СТАРШЕГО БАЙТА В РЕГИСТР TMR1H
B6 30EB 00518 MOVLW 0xEB
B7 008E 00519 MOVWF TMR1L;
ЗАПИСЬ МЛАДШЕГО БАЙТА В РЕГИСТР TMR1L
MPASM 5.54 NEWPIC_8B_SIMPLE.ASM 12-8-2014 7:44:43 PAGE
14OBJECT CODE LINE SOURCE TEXT VALUE
B8 1410 00520 BSF T1CON, TMR1ON; ВКЛЮЧЕНИЕ ТАЙМЕРА TMR1
B9 00521 T2_WAIT
B9 1C0C 00522 BTFSS PIR1, TMR1IF
BA 2??? 00523 GOTO T2_WAIT
BB 100C 00524 BCF PIR1, TMR1IF; ОБНУЛИТЬ ФЛАГ ПЕРЕПОЛНЕНИЯ
BC 1106 00525 BCF PORTB, 2; 0 НА Y2
00526 ;N>Q
BD 00527 M3
BD 1425 00528 BSF Y3,0
BE 1106 00529 BCF PORTB,2; 0 НА Y2
BF 1586 00530 BSF PORTB,3; 1 НА Y3
C0 30F6 00531 MOVLW 0xF6; ЗАНЕСТИ В TMR1 390МКС ЗНАЧЕНИЕ T3
01C1 008F 00532 MOVWF TMR1H; ЗАПИСЬ СТАРШЕГО БАЙТА В РЕГИСТР TMR1H
C2
3086 00533 MOVLW 0x86
C3 008E 00534 MOVWF TMR1L;
ЗАПИСЬ МЛАДШЕГО БАЙТА В РЕГИСТР TMR1L
C4
1410 00535 BSF T1CON, TMR1ON; ВКЛЮЧЕНИЕ ТАЙМЕРА TMR1
C5 1C0C 00537 BTFSS PIR1,TMR1IF
C6 2??? 00538 GOTO T3_WAIT
C7 100C 00539 BCF PIR1, TMR1IF; ОБНУЛИТЬ ФЛАГ ПЕРЕПОЛНЕНИЯ
C8 1186 00540 BCF PORTB,3; 0 НА Y3
00541
00542 ;ЧТЕНИЕ И ОБРАБОТКА ИНФОРМАЦИИ С ЦИФРОВЫХ ДАТЧИКОВ
00543
C9 1905 00544 BTFSC PORTA,2
CA 142D 00545 BSF X1,0
CB 1909 00546 BTFSC PORTE,2
CC 142E 00547 BSF X2,0
CD 1A05 00548 BTFSC PORTA,4
CE 142F 00549 BSF X3,0
01CF 1A85 00550 BTFSC PORTA,5
D0
1430 00551 BSF X4,0; СЧИТЫВАНИЕ ИНФОРМАЦИИ С ЦИФРОВЫХ ДАТЧИКОВ
01D1 082D 00552 MOVF X1,W
D2 062E 00553 XORWF X2,W; W=X1^X2
D3 3A01 00554 XORLW 0x01; W=NO(X1^X2)
D4 042F 00555 IORWF X3,W; W=NO(X1^X2) OR X3
D5 00B1 00556 MOVWF X_BUF
D6 0830 00557 MOVF X4,W
D7 3A01 00558 XORLW 0x01; NO(X4)
D8 0531 00559 ANDWF X_BUF,W; W=NO(X1^X2) OR X3 AND NO(X4)
D9 00AA 00560 MOVWF Y1
DA 1C2A 00561 BTFSS Y1,0
01DB 2??? 00562 GOTO NO_SIGNAL; ЕСЛИ Y1=0, ТО НЕТ СИГНАЛОВ НА ВЫХОДЕ
DC
1486 00563 BSF PORTB,1;1 НА Y1
DD 30FD 00564 MOVLW 0xFD;
ЗАНЕСТИ В TMR1 130МКС ЗНАЧЕНИЕ T1
DE 008F 00565 MOVWF TMR1H;
ЗАПИСЬ СТАРШЕГО БАЙТА В РЕГИСТР TMR1H
DF
3075 00566 MOVLW 0x75
E0 008E 00567 MOVWF TMR1L;
ЗАПИСЬ МЛАДШЕГО БАЙТА В РЕГИСТР TMR1L
E1
1410 00568 BSF T1CON,TMR1ON; ВКЛЮЧЕНИЕ ТАЙМЕРА
MPASM 5.54 NEWPIC_8B_SIMPLE.ASM 12-8-2014 7:44:43 PAGE
15OBJECT CODE LINE SOURCE TEXT VALUE
E2 00569 T1_WAIT
E2 1C0C 00570 BTFSS PIR1,TMR1IF
E3 2??? 00571 GOTO T1_WAIT
E4 1000 00572 BCF,TMR1IF; ОБНУЛИТЬ ФЛАГ ПЕРЕПОЛНЕНИЯ
E5 1086 00573 BCF PORTB,1; 0 НА Y1
E6 00574 NO_SIGNAL
00575 ;
;ОПРОС ТУМБЛЕРА "ОСТАНОВ"
00577 ;
E6
1887 00578 BTFSC PORTC,1
01E7 2??? 00579 GOTO MAIN_PROG
E8 018B 00580 CLRF INTCON
E9 1C87 00581 BTFSS PORTC,1
EA 2??? 00582 GOTO $-1
EB 2??? 00583 GOTO MAIN_PROG
EC 2??? 00584 GOTO $ ; loop forever
00585 END5.54 NEWPIC_8B_SIMPLE.ASM 12-8-2014 7:44:43 PAGE
16TABLE
LABEL VALUE
0000000500000004000000060000001F0000009F00000006000000070000000600000003000000070000000600000006000000000000001E0000009E0000000300000003000000000000000200000000INV
00000004OUT 00000006INV 00000005OUT 00000007CON 00000017IE 00000002IF 00000002M0
00000000M1 00000001M2 00000002M3 00000003X 00000005Y 00000004CON 0000001DIE
00000000IF 00000000M0 00000000M1 00000001M2 00000002M3 00000003X 00000005Y
0000000400000015H 00000016L 000000150000001BH 0000001CL
0000001B0000000300000004000000055.54 NEWPIC_8B_SIMPLE.ASM 12-8-2014 7:44:43
PAGE 17TABLE LABEL VALUE
0000000300000006000000040000000000000001000000020000009C0000000600000006_ADC
000000350000000400000007000000000000000100000002000000030000009D00000007000000060000000500000005_ADDRESS
0000000500000001_ADC 00000064_A 00000005_NOT_A
000000050000010D0000010F0000018C0000018D0000010C0000010E000000040000000400000007_INTER
0000009D000000010000000200000004000000070000000700000002_DONE 00000002_NOT_DONE
00000002C_DATA 00000005C_READ 00000002C_START 00000003C_STOP
0000000400000007000000050000003200000028000000295.54 NEWPIC_8B_SIMPLE.ASM
12-8-2014 7:44:43 PAGE 18TABLE LABEL VALUE 000000000000000B0000000400000006_AVD
00000046_INT 0000000D_PIT 00000015_PU 0000006D_USART 0000008A0000000100000007_D
0000004400000026000001AB000001AD000001BD_PROG
0000014B00000051000000560000005C00000059000000220000002000000021_TMP 00000023_A
00000005_ADDRESS 00000005_BO 00000000_BOR 00000000_DONE 00000002_PD
00000003_POR 00000001_RBPU 00000007_RC8 00000006_T1SYNC 00000002_TO 00000004_TX8
00000006_W 00000002_WRITE 00000002_SIGNAL 000001E60000000600000001_REG
000000810000000400000000000000010000000200000003000000020000000A0000008E00000006000000025.54
NEWPIC_8B_SIMPLE.ASM 12-8-2014 7:44:43 PAGE 19TABLE LABEL VALUE
0000008C0000008D0000000C0000000D000000050000000600000007000000080000000900000092000000000000000100000002000000030000000700000007000000040000002700000002000000000000000100000002000000030000000400000005000000000000000100000002000000030000000400000005000000060000000700000003000000000000000000000001000000020000000300000004000000050000000600000007_9
0000000600000006000000000000000300000005000000050000001A0000001800000000000000005.54
NEWPIC_8B_SIMPLE.ASM 12-8-2014 7:44:43 PAGE 20TABLE LABEL VALUE
00000001000000020000000300000004000000050000000600000007000000000000000100000002_WRITE
00000002_1 00000036_2 00000037_3 0000003800000005000000060000000100000006D
00000000_NOT_W 00000002_W
0000000200000003000000000000000700000099000000070000000500000093000000130000001400000091000000050000000300000003000000000000000100000002000000030000000600000094000000E100000003_TEMP
0000002C00000004CS 00000005IE 00000005IF 00000002SE 00000004CKPS0 00000004CKPS1
00000005CON 00000010INSYNC 00000002OSCEN 000000035.54 NEWPIC_8B_SIMPLE.ASM
12-8-2014 7:44:43 PAGE 21TABLE LABEL VALUE SYNC 00000002_WAIT 000001E2CKPS0
00000000CKPS1 00000001CON 00000012_WAIT 000001B9_WAIT 000001C5_WAIT1
00000020_WAIT2 00000029_WAIT3 0000003200000001IE 00000005IF 000000020000000ECS
00000001H 0000000FIE 00000000IF 00000000L 0000000EON 0000000000000011IE
00000001IF 00000001ON
0000000200000003000000040000000500000006000000850000000000000001000000020000000300000004000000050000008600000000000000010000000200000003000000040000000500000006000000070000008700000000000000010000000200000003000000040000000500000006000000075.54
NEWPIC_8B_SIMPLE.ASM 12-8-2014 7:44:43 PAGE 22TABLE LABEL VALUE
0000008800000000000000010000000200000003000000040000000500000006000000070000008900000000000000010000000200000001_9
0000000600000006D 00000000000000000000000500000004000000040000001900000098000000010000000000000007000000010000000200000003_IND1
000000A1_IND2 000000C1_TEMP
0000002B0000002D0000002E0000002F000000300000003300000034_BUF
000000310000002A000000240000002500000002
_.org_0_003E 0000003E
_.org_0_0052 00000052
_.org_0_0096 00000096
_.org_0_00A7 000000A7
_.org_0_00AC 000000AC
_.org_0_00B1 000000B1
_.org_0_00B6 000000B6
_.org_0_00BE 000000BE
_.org_0_00C7 000000C7
_.org_0_00CC 000000CC5.54 NEWPIC_8B_SIMPLE.ASM 12-8-2014
7:44:43 PAGE 23TABLE LABEL VALUE
_.org_0_00D1 000000D1
_.org_0_00D6 000000D6
_.org_0_00DE 000000DE
_.org_0_0119 00000119
_.org_0_011D 0000011D
_.org_0_0122 00000122
_.org_0_0127 00000127
_.org_0_012C 0000012C
_.org_0_0131 00000131
_.org_0_0139 00000139
_.org_0_013E 0000013E
_.org_0_0143 00000143
_.org_0_0148 00000148
_.org_0_0151 00000151
_.org_0_0156 00000156
_.org_0_015B 0000015B
_.org_0_0163 00000163
_.org_0_0168 00000168
_.org_0_0170 00000170
_.org_0_0179 00000179
_.org_0_0181 00000181
_.org_0_018B 0000018B
_.org_0_018E 0000018E
_.org_0_0197 00000197
_.org_0_019A 0000019A
_.org_0_01EA 000001EA
_.org_0_01EC 000001EC
_BODEN_OFF 00003FBF
_BODEN_ON 00003FFF
_BOREN_OFF 00003FBF
_BOREN_ON 00003FFF
_CONFIG 00002007
_CPD_OFF 00003FFF
_CPD_ON 00003EFF
_CP_ALL 00001FFF
_CP_OFF 00003FFF
_CP_ON 00001FFF
_DEBUG_OFF 00003FFF
_DEBUG_ON 000037FF
_DEVID1 00002006
_FOSC_EXTRC 00003FFF
_FOSC_HS 00003FFE
_FOSC_LP 00003FFC
_FOSC_XT 00003FFD
_HS_OSC 00003FFE
_IDLOC0 00002000
_IDLOC1 00002001
_IDLOC2 00002002
_IDLOC3 00002003
_LP_OSC 00003FFC
_LVP_OFF 00003F7F
_LVP_ON 00003FFF
_PWRTE_OFF 00003FFF5.54 NEWPIC_8B_SIMPLE.ASM 12-8-2014
7:44:43 PAGE 24TABLE LABEL VALUE
_PWRTE_ON 00003FF7
_RC_OSC 00003FFF
_WDTE_OFF 00003FFB
_WDTE_ON 00003FFF
_WDT_OFF 00003FFB
_WDT_ON 00003FFF
_WRT_1FOURTH 00003BFF
_WRT_256 00003DFF
_WRT_HALF 000039FF
_WRT_OFF 00003FFF
_XT_OSC 00003FFD
__16F877A 00000001: 0: 0 reported, 0 suppressed: 0 reported,
0 suppressed