РЕФЕРАТ
Пояснительнаязаписка состоит из 38 страниц, 9 рисунков, 4 таблиц, 7 источников.
Микроконтроллер,громкоговоритель, Термодатчик, Жидкокристаллический индикатор, ИК- ЛУЧИ
Цель работы:разработка микропроцессорной системы на базе микроконтроллера, автомобильныхчасов-термометра-вольтметра.
Содержаниеработы: в работе выполнено построение структурной схемы, сформирован алгоритмработы системы, выбор элементной базы, оптимальной для реализации поставленныхзадач по диапазону характеристик, разработана программа, разработана принципиальнаясхема устройства.
СОДЕРЖАНИЕ
Введение
1. Описание объекта и функциональная спецификация
2. Описание структуры системы
3. Описание ресурсов МК AT89C2051
4. Ассемблирование
5. Разработка алгоритмаработы устройства
6. Описаниевыбора элементной базы и работы принципиальной схемы
Заключение
Список литературы
Приложение А. Листинг программыи объектный файл
ВВЕДЕНИЕ
Современнуюмикроэлектронику трудно представить без такой важной составляющей, какмикроконтроллеры. Микроконтроллеры незаметно завоевали весь мир. Микроконтроллерныетехнологии очень эффективны. Одно и то же устройство, которое раньше собиралосьна традиционных элементах, будучи собрано с применением микроконтроллеров,становится проще, не требует регулировки и меньше по размерам. С применениеммикроконтроллеров появляются практически безграничные возможности по добавлениюновых потребительских функций и возможностей к уже существующим устройствам.Для этого достаточно просто изменить программу.
Однокристальные(однокорпусные) микроконтроллеры представляют собой приборы, конструктивновыполненные в виде БИС и включающие в себя следующие составные части:микропроцессор, память программ и память данных, а также программируемыеинтерфейсные схемы для связи с внешней средой.
Мироваяпромышленность выпускает огромную номенклатуру микроконтроллеров. По областиприменения их можно разделить на два класса: специализированные,предназначенные для применения в какой-либо одной конкретной области(контроллер для телевизора, контроллер для модема, контроллер для компьютерноймышки ) и универсальные, которые не имеют конкретной специализации и могутприменяться в самых различных областях микроэлектроники, с помощью которыхможно создать как любое из перечисленных выше устройств, так и принципиально новоеустройство.
Целькурсового проекта – разработка микропроцессорной системы автомобильныечасы-термометр-вольтметр на базе микроконтроллера.
1. Описаниеобъекта и функциональная спецификация
Данноеустройство предназначено для использования в автомобиле.
Основойустройства является микроконтроллер AT89C2051 фирмы «Atmel». Для отображенияинформации используется жидкокристаллический индикатор типа ЖКИ13-8/7-02.Несмотря на то, что в настоящее время доступны ЖКИ с встроенными контроллерами,иногда оказывается целесообразным применение специального ЖКИ. Причин можетбыть несколько. Распространенные ЖКИ со встроенными контроллерами обладаютцелым рядом недостатков: отсутствие десятичных точек, плохой угол обзора,недостаточный в некоторых случаях размер символов. В то же время существуетдоступная и довольно удобная в использовании микросхема драйвера ЖКИ КР1820ВГ1.Она выпускается Минским ПО «Интеграл».
Рассмотренное в этой работе устройство устанавливается вавтомобиле для индикации времени, контроля заряда аккумулятора и регистрациитемпературы. Диапазон контролируемого напряжения можно выбрать любой, однако впрограмме он установлен в пределах от 12,0 В до 15,0 В, а при отклонении отэтих значений напряжения включается зуммер.
Функциональнаяспецификация
1. Входы
a. 4датчика температуры
b. Кнопказапуска (включение питания)
c. Панельуправления с сенсорным переключателем и ИФ приемником
2. Выходы
a. Жидкокристаллическийиндикатор
b. Звуковойдинамик
3. Функции
a. индикациятекущего времени
b. будильник
c. таймер
d. индикациятемпературы в четырех точках
e. звуковаясигнализация при повышении температуры
f. индикациянапряжения в бортовой сети автомобиля
g. звуковаясигнализация при падении напряжения бортовой сети
h. управлениережимами работы устройства с помощью ИК-пульта
2. Описание структуры системы
После определения входов и выходов устройства разработана структурнаясхема устройства. Структурная схема автомобильных вольтметра-термометра-часовприведена на рис. 1.
/> /> /> /> /> /> /> /> /> />
/>/>/>/> Громкоговоритель
/>
Рис. 1.Структурная схема автомобильных часов-термометра-вольтметра
3. Описаниересурсов МК AT89C2051
AT89C2051разработан по технологии КМОП. Микроконтроллер оснащенный Flash программируемыми стираемым ПЗУ, а также совместим по системе команд и по выводам состандартными приборами семейства MCS-51. Объем Flash ПЗУ — 2 Кбайта, ОЗУ — 128байтов. Имеет 15 линий ввода/вывода, один 16-разрядный таймера/счетчикасобытий, полнодуплексный порт (UART) пять векторных двухуровневых прерываний,встроенный прецизионный аналоговый компаратор, встроенные генератор и схемуформирования тактовой последовательности. Напряжение программирования Flashпамяти — 12 В и ее содержимие может быть защищено от несанкционированныхзаписи/считывания. Имеется возможность очистки Flash памяти за одну операцию и возможностьсчитывания встроенного кода идентификации. Ток потребления в активном режиме начастоте 12 МГц не превышает 15 мА при 6 В и 5,5 мА при напряжении питания 3 В.В пассивном режиме (ЦПУ остановленно, но система прерываний, ОЗУ, таймер/счетчиксобытий и последовательный порт остаются активными) потребление не превышает 5мА и 1мА. В стоповом режиме ток потребления не превышает 100 мкА и 20 мкА принапряжении питания 6 В и 3 В, соответственно. Микроконтроллер AT89C2051ориентирован на использование в качестве встроенного управляющего контороллера.
Дляпитания устройства используется интегральный стабилизатор U5 типа 7805.Потребляемый устройством ток очень небольшой, поэтому радиатор для этоймикросхемы не нужен.
Посколькумикросхемы контроллера ЖКИ требуют небольшого количества сигналов для связи смикроконтроллером, индикатор можно выполнить конструктивно в отдельном корпусеминимального размера и расположить его в удобном для обозрения месте. Проводадатчиков температуры могут иметь длину несколько метров. При этом обязательнодолжен присутствовать земляной провод. Использовать в качестве земли кузовавтомобиля нежелательно. Удобно для термометров использовать аудио кабель,который имеет два провода в общем экране, изолированном снаружи.
AT89C2051- 8-разрядный микроконтроллер с Flash ПЗУ
/>
Рис.2.Структурная схема AT89C2051
МикроконтроллерAT89C51 построен по процессорной архитектуре MCS-51, т.е. он умеет выполнятьассемблерные команды описанные этим стандартом. Стандарт был разработан фирмойINTEL и в дальнейшем стал основой для создания современных INTEL процессоров,но проблема создания маленьких устройств (микроконтроллерных систем) осталасьактуальной и по сей день. В результате первые миниатюрные процессорыэксплуатируется до сих пор (например, в телефонах АОН).
Цифры 31 или51 в названии процессора (контроллера) указывают на принадлежность к системекоманд MCS-51 (31 в отличии от 51, не имеет возможности использовать порт P0 иP2 как порты — на 31 кристалле это только адресные линии и линии данных внешнихустройств [ПЗУ, ОЗУ, Регистров...] = 51 же кристалл имеет возможность незадействованныевыводы адресов использовать как выводы портов ввода — вывода). Цифра 80 вначале указывает на то, что исполняемая программа может быть размещена тольково внешней ПЗУ.
Цифра 83,87или 89 указывает, что программа может быть как во внешней ПЗУ, так и в ПЗУкристалла (это более поздние модели 1990-е годы, уже научились ПЗУ делать наодной подложке вместе с самим процессором), 83 — масочная ПЗУ (программируетсяна заводе изготовителе — например контроллер клавиатуры AT-XT), 87 — однократнопрограммируемая ПЗУ на кристалле процессора в корпусе из пластика илимногократно (до 100 раз ) перепрограммируемая ПЗУ на кристалле в керамическомкорпусе и окошком для УФ стирания.
89 — многократно (до 10000 раз) перепрограммируемая ПЗУ на кристалле, электрическистираемая.
AT- названиефирмы изготовителя ATMEL www.atmel.com/ или www.atmel.ru/
(русскоязычный сайт ATMEL).
Кроме тогоэто может быть DS — Dallas, N- Intel, P-Philips...
Так чтоданная микросхема — это микропроцессор (правильнее сказать микроконтроллер) совстроенной ПЗУ, которую (ПЗУ внутри процессора) и надо запрограммировать, чтобымикросхема начала выполнять требуемые функции.
Данныймикроконтроллер программируется стандартным программатором, поддерживающимпрограммирование этого типа микроконтроллеров (например, программатор UNIPRO).
/>
Рис.3. Общийвид выводов AT89C2051
4. Ассемблирование
Дляассемблирования используется макpоассемблеp MPASM, он содеpжит все необходимыенам возможности. MPASM входит в пакет программ Microchip MPLAB фирмы MicrochipTechnology.
В pезультатеpаботы ассемблеpа создаются файлы со следующими pасшиpениями:
* HEX — объектный файл
* LST — файллистинга
* ERR — файлошибок и пpедупpеждений
* COD
Объектныйфайл создается в 16-pичном фоpмате и содеpжит код, котоpый должен быть записанв микpосхему. Файл листинга содеpжит полный листинг пpогpаммы вместе сзагpузочным кодом. В файл ошибок и пpедупpеждений записываются все ошибки ипpедупpеждения, возникающие в пpоцессе ассемблиpования. Они также пpисутствуюти в файле листинга.
Послеобpаботки нашей пpогpаммы ассемблеp должен был выдать сообщение «AssemblySuccessful», означающее, что ошибок обнаpужено не было. Файл ошибок недолжен был создаться.
Листинг программыи объектный файл приведен в Приложении А.
/>5. Разработка алгоритма работы устройства
Алгоритм работы программы показан на рис. 4. После запуска иинициализации микроконтроллера программа переходит к распределителю, в которомкаждую секунду последовательно измеряется напряжение, проверяются кнопки, ивыполняется вывод на индикацию. Прерывание от этой последовательности происходиткаждую секунду для подсчета времени в часах и таймере, если он включен.
После установки флага «Одна секунда» проверяетсябортовое напряжение. Если присутствует его отклонение от установленного, товключается звуковой сигнал. Если отклонения нет, то измеренные значенияперекодируются для индикации в двоично-десятичный код.
Далее программа переходит к проверке кнопок. Поскольку кнопки —многофункциональные, то и их проверка несколько усложнена. Вначале проверяетсяфлаг индикации часов. Если индикация часов отсутствует, то кнопка установкикурсора «Разряд» не проверяется, а сразу проверяется кнопка«Режим». Если индикация часов включена и нажата кнопка«Разряд», то к регистру курсора прибавляется единица.
Если кнопка «Режим» нажата, то на единицу увеличиваетсярегистр режима. По значению регистра режима из таблицы выбирается режим индикации(рис. 5).
При индикации напряжения ранее перекодируемые значения напряженияпереписываются в регистры индикации.
При индикациичасов проверяется, был ли ранее введен курсор в поле индикатора. Если значениерегистра курсора — ненулевое, то выполняется установка часов. Если при этомнажата кнопка «Установка», то к выбранному разряду прибавляетсяединица, а регистры индикации заполняются новыми значениями. Если установкаотсутствует, то регистры индикации заполняются значениями текущего времени.
/>
Рис. 4.Алгоритм работы автомобильных часов (начало)
/>
Рис. 5. Алгоритм работы автомобильных часов (продолжение)
Однако заполненные регистры индикации еще не готовы к выводу на индикацию— в них необходимо записать значение курсора. Если значение курсора — ненулевое(т.е. он находится в поле индикатора), то он вводится в младший разряд регистраиндикации соответствующего знакоместа.
Если курсор в поле индикатора отсутствует, то обнуляется счетчикцикла записи, и первым импульсом выводится значение запятой для N-го разряда. В принципе,запятая в данном устройстве необходима только одна: для выделения десятых долейнапряжения, — однако подпрограмма вывода на индикацию универсальна, и потомунет смысла ее изменять. Значения запятых заранее записываются в позиционномкоде в регистр запятой (т.е. если необходимо высветить запятую в пятом разрядеиндикатора, то записывают единицу в пятый разряд регистра). При этом необходимопомнить, что первыми в импульсной последовательности идут значения крайнего справаразряда.
После вывода запятой последовательно выводится значение N-ro регистра, начиная смладшего разряда. Затем прибавляется единица к счетчику циклов и, если егозначение не равно девяти, цикл вывода данных на индикатор повторяется соследующим регистром. После вывода значения последнего регистра программавозвращается к ожиданию установки флага «Одна секунда» во время прерывания.
Прерывание организовано обычным образом: по переполнению таймера TMR0. При частоте кварцевогорезонатора 32 768 Гц коэффициент деления предделителя составляет 32, что вместес коэффициентом деления таймера, равным 256, и циклом, равным 4, дает однусекунду (4x32x256 = 32 768).
6. Описание выбора элементной базы и работы принципиальной
схемы
МикросхемаКР1820ВГ1 [1] используется для управления 36-сегментным ЖКИ в режиме3-уровневого мультиплексирования. Микросхема изготавливается по КМОП-технологиии выпускается в 20-выводном пластмассовом DIP-корпусе. Микросхема содержитвстроенный тактовый генератор, резистивный делитель напряжения и делителичастоты, с помощью которых формируются сигналы управления строками (общимиэлектродами) и столбцами (сегментными электродами) ЖКИ в режиме 3-уровневогомультиплексирования. Одна микросхема имеет три выхода управления строками и 12выходов управления столбцами. Предусмотрена возможность каскадирования схем,что позволяет использавать их для управления мультиплексным ЖКИ с числомсегментов более 36. Микросхема не требует никаких навесных компонентов иработает в диапазоне напряжения питания от 3 до 6 вольт. Назначение выводовмикросхемы КР1820ВГ1 показано в таблице 1.
Таблица1. Назначениевыводов микросхемы КР1820ВГ1.Вывод Обозначение Тип Назначение 1...3 COB1, COC3, COB3 Выход Управление столбцами В1, С3, В3 4 CS Вход Выбор кристалла 5 Ucc - Напряжение источника питания 6 GND - Общий 7 D Вход Данные 8...13 COA2, COB4, COB2, COA1, COC2, COC4 Выход Управление столбцами A2, B4, B2, A1, C2, C4 14 C Вход Тактовый сигнал С 15 COA/G Выход Управление сторокой А (вход генератора G) 16 COC/G Выход Управление сторокой С (выход генератора G) 17 COB Выход Управление строкой В 18...20 COC1, COA3, COA4 Выход Управление столбцами B1, A3, A4
МикросхемаКР1820ВГ1 имеет четыре режима работы: одиночный, старший, младший и тестовый. Водиночном режиме одна микросхема управляет 36-сегментным ЖКИ, обеспечиваяполную синхронизацию его работы. Старший и младний режимы предназначены дляорганизации управления ЖКИ с числом сегментов более 36, тестовый режим – дляконтроля качества микросхем в процессе изготовления. Данные вводятся вмикросхему в последовательном коде по входу D с синхронизацией записи фронтомтактовых импульсов по входу C (рис. 6).
/>
Рис.6. Загрузка микросхемы КР1820ВГ1 по последовательной шине
Кодзаписываемых данных определяется конкретной схемой подключения шин управления строкамии столбцами к сегментам ЖКИ, а также конфигурацией ЖКИ.
/>
Рис.7.Конфигурация сегментов ЖКИ.
Нарис. 7 показан пример конфигурации ЖКИ, а в таблице 2 показан порядок следованиябитов в кодовой посылке для этого варианта подключения такого ЖКИ.
Таблица 2. Порядок следования битовв кодовой посылкеБит Вывод Сегмент ЖКИ Бит Вывод Сегмент ЖКИ D0 COA1, COC/G H1 D20 COB3, COC/G D3 D1 COB1, COB G1 D21 COA3,COB C3 D2 COC1,COA/G F1 D22 COA3, COA/G B3 D3 COC1, COB E1 D23 COB3, COA/G A3 D4 COB1, COC/G D1 D24 COA4, COC/G H4 D5 COA1,COB C1 D25 COB4, COB G4 D6 COA1, COA/G B1 D26 COC4,COA/G F4 D7 COB1, COA/G A1 D27 COC4, COB E4 D8 COA2, COC/G H2 D28 COB4, COC/G D4 D9 COB2, COB G2 D29 COA4,COB C4 D10 COC2,COA/G F2 D30 COA4, COA/G B4 D11 COC2, COB E2 D31 COB4, COA/G A4 D12 COB2, COC/G D2 D32 COC1, COC/G P1 D13 COA2,COB C2 D33 COC2, COC/G P2 D14 COA2, COA/G B2 D34 COC3, COC/G P3 D15 COB2, COA/G A2 D35 COC4, COC/G P4 D16 COA3, COC/G H3 D36 Не используется - D17 COB3, COB G3 D37 Q6 - D18 COC3,COA/G F3 D38 Q7 - D19 COC3, COB E3 D39 Q8 -
БитыD0..D7 соответствуют сегментам первого разряда, биты D8..D15 – второго и т. д.Биты D32..D35 соответствуют специальным сегментам P1...P4. Бит D36 можетпринимать любое значение. Биты D37 и D38 (Q6 и Q7) управляют режимом работысхемы согласно таблице 3. Бит D39 (Q8) предназначен для синхронизации работыдвух и более микросхем при каскадировании.
Длязагрузки микросхемы в одиночном режиме необходимо выполнить следующую последовательностьдействий:
· установитьна сходе CS уровень логического 0
· записатьвосемь битов данных для каждой цифры первого-четвертого разрядов
· записатьчетыре бита для специальных сегментов и четыре бита управления:0|0|1|1|P4|P3|P2|P1
· установитьна входе CS уровень логической 1
Таблица 3. Назначение битовуправления микросхемой Бит Режим работы Выход D36 (Q7) D37 (Q6) COC/G COA/G 1 1 Младший Выход управления строкой С Вход генератора 1 Одиночный То же Выход управления строкой А 1 Тестовый - - Старший Выход внутреннего генератора Выход управления строкой А
Послеустановки микросхемы в нужный режим для последующей смены данных необязательнозаписывать все 40 бит информации. Для загрузки микросхемы в старшем и младшемрежимах необходимо выполнить следующую последовательность действий:
· установитьна входе CS обеих схем уровень логического 0
· записать32 бита данных для «младшей» схемы
· записатьчетыре бита для специальных сегментов младшей схемы и четыре бита управления:1|1|1|1|P4|P3|P2|P1 (при подаче последней единицы обе микросхемыустанавливаются в младший режим, выводы COA/G обеих схем работают как входыгенератора. Происходит синхронизация работы микросхем)
· установитьна входах CS обеих схем уровень логической 1
· установитьна входе CS «старшей» схемы уровень логического 0
· записать32 бита данных для старшей схемы
· записатьчетыре бита для специальных сегментов старшей схемы и четыре бита управления:0|0|0|0||P4|P3|P2|P1 (после этого вывод COA/G старшей схемы начитает работатькак выход управления строкой А, а вывод COC/G – как выход встроенногогенератора. Импульсы с выхода генератора старшей схемы поступают на вход генератораCOA/G младшей схемы, и оба кристалла начинают работать синхронно от генераторастаршей схемы)
· установитьна сходе CS установить уровень логической 1
Чтобызаписать во внутренние регистры-защелки новые данные, нет необходимостисбрасывать обе схемы: достаточно записать данные по очереди во внутренниерегистры-защелки каждой схемы. При этом в последний бит D39 должен записыватьсяноль как для старшей, так и для младшей схем.
Нужносказать, что некоторые типы ЖК индикаторов неудовлетворительно работают припитании микросхем драйверов напряжением 5В. Однако картина резко улучшается приснижении напряжения питания до 3.3 – 4.0В. Это сделать совсем несложно, так какпотребляемый драйверами ток очень мал. В цепь питания можно включитьпараметрический стабилизатор напряжения на основе TL431 или даже простойрезистивный делитель. На всех цифровых входах драйверов также понадобятсяделители напряжения.
В качествечасов реального времени применена микросхема DS1302 фирмы Dallas. Этамикросхема имеет раздельные входы для подключения основного и резервногоисточников питания, что избавляет от проектирования довольно хитрых схемперехода на резервный источник. Кроме того, имеется встроенная схема«капельной» зарядки резервного источника питания, которая может быть включенапрограммно. Дополнительно микросхема имеет ОЗУ объемом 31 байт, которое можетбыть использовано для энергонезависимого хранения параметров. Из навесныхэлементов требуется только кварцевый резонатор. Здесь хочется предостеречь отприменения дешевых некачественных резонаторов. Согласно рекомендациям фирмыDallas, требуется резонатор, рассчитанный на емкость нагрузки 6 пФ. В противномслучае точность хода часов будет неудовлетворительной или даже появятсяпроблемы с запуском кварцевого генератора.
Дляобмена с микросхемой DS1302 используются общие с драйверами ЖКИ линии данных итактирования. Разделены только сигналы CS и RST. К сожалению, микросхема DS1302имеет довольно специфический 3-х проводный интерфейс, который в фирменнойдокументации описан весьма неоднозначно. Это довольно редкий пример плохогофирменного описания. Поэтому в новых разработках лучше применять болеесовременные микросхемы, например DS1307 с интерфейсом I2C.
Вкачестве датчиков температуры применены микросхемы цифровых термометров DS1821фирмы Dallas. В цепях данных термометров включены защитные цепочки R11-R14,VD1-VD8, а в цепи питания включен ограничивающий резистор R10 для защиты откороткого замыкания. Несмотря на то, что аппаратно имеется возможностьподключить четыре термометра, данная версия программы работает только с тремя.Это вызвано недостаточным объемом памяти программ. Термометры устанавливаются вразных местах автомобиля. В данном случае они были установлены в салоне, наоткрытом воздухе и в моторном отсеке. Благодаря наличию заданных программнопорогов, кроме индикации температуры осуществляется ещё и контроль ее выхода забезопасные пределы. Ввиду недостаточного объема памяти программ, редактированиепорогов температур не поддерживается. Пороги в виде констант внесены в текстпрограммы. Для первого термометра +55 градусов, а для второго и третьеготермометра +99 градусов.
Дляизмерения напряжения бортовой сети построен простейший 8-разрядный АЦП наоснове встроенного в микроконтроллер компаратора. Для уменьшения влияния помехиспользуется 16-кратное усреднение результатов. Принцип работы АЦП пояснен нарис. 8.
/>
Рисунок8. Принцип работы АЦП
Навходе AIN1 формируется пилообразное напряжение, которое сравнивается с входнымнапряжением, которое через делитель R2, R3 поступает на вход компаратора AIN0.Емкость C8 снижает влияние помех на показания вольтметра. Пилообразноенапряжение формируется на емкости C9 в результате заряда ее стабильным током отгенератора тока, собранного на элементах VT2, VD9, R6. Перед началом измеренияконденсатор C9 разряжен с помощью открытого ключа VT3. Когда начинается циклизмерения, на порту P1.5 устанавливается низкий логический уровень, транзисторVT3 закрывается, и напряжение на конденсаторе C9 начинает линейно нарастать. Вэто время разрешается счет программному счетчику. Счет идет до тех пор, поканапряжение на C9 не станет равным входному (на средней точке делителя R2, R3).При этом переключается встроенный компаратор, и счет запрещается. Значение,накопленное в счетчике, будет пропорционально входному напряжению. Применениегенератора тока (а не резистора) позволило получить линейный закон заряда C9,что исключило необходимость программной линеаризации АЦП, которая потребовалабы дополнительных затрат и так дефицитной памяти программ. Необходимо отметить,что конденсатор C9 должен быть термостабильным, например, с пленочным диэлектрикомтипа К73-17. С помощью резистора R6 подбирают ток генератора таким образом,чтобы показания АЦП совпадали с реальным значением напряжения на входе +B.Кроме индикации напряжения осуществляется контроль его падения ниже порога 10В.В случае такого падения включается звуковая сигнализация.
Дляуправления устройством применяется ИК-пульт дистанционого управления.Конструктивно он выполнен на базе дешевого малогабаритного калькулятора.Использованы только его корпус и клавиатура. В пульту применена микросхемаINA3010D в корпусе SOIC. Для питания используются два элемента СЦ-30.Используемый номер системы кода RC-5 — 1EH. Схема пульта не приводится, так какпрактически повторяет типовую схему включения микросхемы INA3010 (SAA3010) изависит от конфигурации конкретной клавиатуры. Коды, соответствующие кнопкам,также могут отличаться от заданных. Для восстановления соответствия необходимоправильно заполнить перекодировочную таблицу в программе. Сделать это можнодаже не перетранслируя программы с помощью шестнадцатиричного редактора прямо в.bin – файле. Таблица расположена по адресам 7B8H — 7E3H. Соответствие функцийуправления, их внутренних кодов (после перекодировки) и кодов ИК ДУ (доперекодировки) приведено в таблице 4.
Таблица4. Кодыкнопок управленияНомер команды Название команды Внутренний код команды (после перекодировки) Код ИК ДУ (до перекодировки) 1 TIMER 0CH 00H 2 CLOCK 0DH 01H 3 ALARM 0EH 02H 4 LOCK 0FH 03H 5 7 08H 08H 6 8 09H 09H 7 9 0AH 0AH 8 LIST 10H 0BH 9 4 05H 10H 10 5 06H 11H 11 6 07H 12H 12 ESCAPE 11H 13H 13 ALARM DISABLE 14H 18H 14 TIMER CLEAR 13H 1AH 15 01H 20H 16 BACKSPACE 12H 22H 17 1 02H 28H 18 2 03H 29H 19 3 04H 2AH 20 ENTER 0BH 2BH
Воткраткое описание команд управления:
· CLOCK– вход в режим установки текущего времени
· ALARM– вход в режим установки времени будильника
· ALARMDISABLE – выключение будильника
· TIMER– включение индикации значения таймера
· TIMERCLEAR – очистка таймера
· LIST– включение циклической смены параметров
· LOCK– запрещение смены параметров
· 0..9– кнопки для ввода числовых значений параметров
· ENTER– ввод отредактированного параметра
· ESCAPE– отказ от редактирования параметра
· BACKSPACE– возврат на один символ при редактировании
В качестве ИКприемника использована интегральная микросхема SFH-506 фирмы Siemens. Этамикросхема весьма чувствительна к помехам по цепи питания, поэтому применен RCфильтр R15 C7.
Вслучае срабатывания будильника, превышения температурой установленного порогаили понижения напряжения в бортовой сети формируется звуковой сигнал. Для егоформирования использована малогабаритная динамическая головка HA1, котораяподключена через транзисторный ключ VT1. Звуковые сигналы также формируются принажатиях на кнопки управления.
/>
Рис. 9. Принципиальнаясхема в Accel EDA.
ЗАКЛЮЧЕНИЕ
В данномкурсовом проекте разработано устройство — электронные часы-вольтметр-термометр.Разработана схема электрическая принципиальная этого устройства и программа длямикроконтроллера. В результате ассемблирования получена прошивка программы дляпамяти микроконтроллера. Применение микроконтроллера позволило упростить принципиальнуюсхему и расширить функциональные возможности микроконтроллера, так как дляизменения функций устройства достаточно внести изменения в программу микроконтроллера.
СПИСОКЛИТЕРАТУРЫ
1. Белов А.В. Микроконтроллеры АVR в радиолюбительскойпрактике – СП-б, Наука и техника, 2007 – 352с.
2. Проектированиецифровых устройств на однокристальных микроконтроллерах / В.В. Сташин [и др.].– М.: Энергоатомиздат, 1990. – 224 с.
3. Евстифеев А.В.Микроконтроллеры Microchip: практическое руководство/А.В.Евстифеев. – М.:Горячая линия – Телеком, 2002. – 296 с.
4. Кравченко А.В. 10 практических устройств на AVR-микроконтроллерах. Книга1 – М., Додэка –ХХ1, МК-Пресс, 2008 – 224с.
5. Трамперт В. Измерение, управление ирегулирование с помощью АVR-микроконтроллеров: Пер. с нем – К., МК-Пресс,2006 – 208с.
6. Мортон Дж. Микроконтроллеры АVR. Вводный курс /Пер. сангл. – М., Додэка –ХХ1, 2006 – 272с.
7. Техническая документация на микроконтроллерыAT89C2051 фирмы «Atmel». ООО «Микро -Чип», Москва, 2002.-184 с.
ПРИЛОЖЕНИЕА
Листинг программыи объектный файл
;ЧАСЫ-ТЕРМОМЕТР-ВОЛЬТМЕТР ДЛЯ АВТОМОБИЛЯ.
РАЗРАБОТАЛДЕРКАЧ
; ПРОГРАММА =ABTO.ASM
; ВЕРСИЯ:20-01-07.
; АССЕМБЛЕР ИОТЛАДЧИК: MPLAB IDE, ВЕРСИЯ: 5.70.40.
LIST P=16F676
#INCLUDEP16F676.INC
__CONFIG31D0H
;==============================================
;ИСПОЛЬЗУЕТСЯ КВАРЦ ЧАСТОТОЙ 32768 ГЦ.
; КОЭФФИЦИЕНТДЕЛЕНИЯ ПРЕДДЕЛИТЕЛЯ РАВЕН 32, ЧТО ВМЕСТЕ
; С TMR0(256) И ЦИКЛОМ, РАВНЫМ 4 ТАКТАМ
; ДАЕТ НАВЫХОДЕ 1 СЕКУНДУ (4х32х256=32768).
;==============================================
; RA1 — РЕЖИМ- УСТАНОВКА, RA2 — РАЗРЯД — ПУСК,
; RA3 — ВЫХОДИЗЛУЧАТЕЛЯ,
; RC5 — LOAD,RC3 — DIN,
; RC4 — DCLK
;===========================================
CBLOCKH'20'
;===========================================
; ОПРЕДЕЛЕНИЕРЕГИСТРОВ ВРЕМЕНИ.
;===========================================
HOU ; ЧАСЫДВОИЧНЫЕ.
CL ; ЕДИНИЦЫСЕКУНД ЧАСОВ.
CH ; ДЕСЯТКИСЕКУНД.
ML ; ЕДИНИЦЫМИНУТ.
MH ; ДЕСЯТКИМИНУТ.
HL ; ЕДИНИЦЫЧАСОВ.
HH ; ДЕСЯТКИЧАСОВ.
TCL ; ДЛЯТАЙМЕРА.
TCH ;
TML ;
TMH ;
THL ;
THH ;
;===============================================
; РЕГИСТРЫДЛЯ ОРГАНИЗАЦИИ ИНДИКАЦИИ.
;===============================================
ZPT ; РЕГИСТРЗАПЯТОЙ.
TZPT ; ЗАПЯТАЯДЛЯ ВЫВОДА НА ИНДИКАЦИЮ.
COUZ ; СЧЕТЧИКВЫВОДА ЗАПЯТЫХ.
COU ; СЧЕТЧИКВЫВОДА БИТ.
KYPC ; ВЫБОРРАЗРЯДА УСТАНОВКИ.
KYPCI ; ИНДИКАЦИИ.
PEID ; РЕЖИМАИНДИКАЦИИ.
TEMP ; ВРЕМЕННЫЙ.
EDI ; ДЕСЯТЫЕНАПРЯЖЕНИЯ.
DEI ; ЕДИНИЦЫВОЛЬТ.
COI ; ДЕСЯТКИВОЛЬТ.
;================================================
; ВРЕМЕННЫЕ.
;================================================
WTEMP ; БАЙТСОХРАНЕНИЯ РЕГИСТРА W ПРИ ПРЕРЫВАНИИ.
STEMP ; БАЙТСОХРАНЕНИЯ РЕГИСТРА STATUS ПРИ ПРЕРЫВАНИИ.
FTEMP ; ВРЕМЕННЫЙДЛЯ FSR.
TEKH ;
EDA ;
DEA ;
YCTL ;
YCTLI ;
;===========================================
; ОПРЕДЕЛЕНИЕБИТОВ СОСТОЯНИЯ ФЛАГОВ.
;===========================================
FLAG
;
; 0->ВКЛЮЧЕНИЕ СИГНАЛА.
; 1->ТЕКУЩЕЕ ВРЕМЯ.
; 2->ВКЛЮЧЕН РЕЖИМ ТАЙМЕРА.
; 3->ИНДИКАЦИЯ НАПРЯЖЕНИЯ.
; 4->НЕТ КУРСОРА.
; 5->ПУСК-СТОП.
; 6->ПРОЧЕРК В ЧАСАХ.
; 7->УСТАНОВКИ.
;=============================================
FLAG1
;
; 1->1 СЕК ЦИКЛА.
; 2->ПЕРЕДАНА ЗАПЯТАЯ.
; 4->ЗУММЕР ВКЛЮЧЕН.
; 5->СТОРОЖОК НАПОМИНИНИЯ АВАРИИ ЧЕРЕЗ 1 ЧАС.
;===========================================
ENDC
;===========================================
; ОПРЕДЕЛЕНИЕРЕГИСТРОВ ИНДИКАЦИИ.
;===========================================
R1 EQU 50H ; МЛАДШИЙРАЗРЯД.
R2 EQU 51H ;
R3 EQU 52H ;
R4 EQU 53H ;
R5 EQU 54H ;
R6 EQU 55H ;
R7 EQU 56H ;
R8 EQU 57H ; СТАРШИЙРАЗРЯД.
TEKL EQU 58H ;
;===========================================
; ОПРЕДЕЛЕНИЕБИТ ПОРТОВ ВВОДА/ВЫВОДА.
;===========================================
YC EQU 1 ; РЕЖИМ/УСТАНОВКА.
KY EQU 2 ; ПУСК/КУРСОР.
LOAD EQU 5 ; ЗАГРУЗКА.
DIN EQU 3 ; ДАННЫЕ.
DCLK EQU 4 ; СИНХРОИМПУЛЬСЫ.
;===========================================
; 1. ПУСК.
;===========================================
ORG 0
GOTO INIT
ORG 4
GOTO PRER
;===========================================
; 2.ИНИЦИАЛИЗАЦИЯ.
;===========================================
INIT
BSF STATUS,5; ПЕРЕХОДИМВ БАНК 1.
MOVLW 0FFH ;
MOVWF ADCON1^80H; ТАКТ АЦП ОТ ВНУТРЕННЕГО ГЕНЕРАТОРА 500 кГц.
MOVLW B'00000100' ; К=32.
MOVWF OPTION_REG^80H; РЕЗИСТОРЫ ВКЛЮЧЕНЫ.
MOVLW B'10100000'; РАЗРЕШЕНИЕ ПРЕРЫВАНИЙ ОТ TMR0.
MOVWF INTCON;
CLRF PIE1^80H; ЗАПРЕЩЕНЫ ВСЕ ПЕРИФЕРИЙНЫЕ ПРЕРЫВАНИЯ.
MOVLW B'00001111'; ВСЕ ВЫХОДЫ. 0 — ВХОД АЦП.
MOVWF TRISA^80H;
CLRF TRISC^80H; ВСЕ ВЫХОДЫ.
CLRF VRCON^80H; ИОН ОТКЛЮЧЕН.
CLRF PCON^80H; ПРЕРЫВАНИЯ ПО ПИТАНИЮ ЗАПРЕЩЕНЫ.
MOVLW B'00000110';
MOVWF WPUA^80H; ПОДТЯГИВАЮЩИЕ РЕЗИСТОРЫ ВКЛЮЧЕНЫ.
CLRF IOCA^80H; ПРЕРЫВАНИЯ ЗАПРЕЩЕНЫ.
MOVLW .1
MOVWF ANSEL^80H; ВЫБРАН АНАЛОГОВЫЙ ВХОД RA0/AN0.
BCF STATUS,5; ПЕРЕХОДИМ В БАНК 0.
CLRF PORTC; ВЫХОД И СВЕТОДИОД ВЫКЛЮЧЕНЫ.
CLRF T1CON; ТАЙМЕР 1 ОТКЛЮЧЕН.
MOVLW .7
MOVWF CMCON; КОМПАРАТОР ВЫКЛЮЧЕН.
CLRF FLAG; ВСЕ ОБНУЛЯЕМ И УСТАНАВЛИВАЕМ.
CLRF FLAG1
CLRF EDI
CLRF DEI
CLRF COI
CLRF CL
CLRF CH
CLRF ML
CLRF MH
CLRF HL
CLRF HH
CLRF TCL
CLRF TCH
CLRF TML
CLRF TMH
CLRF THL
CLRF THH
CLRF PEID
CLRF ZPT
CLRF COUZ
CLRF COU
CLRF HOU
MOVLW 96H
MOVWF YCTL ; УСТАНОВКАМАКСИМУМА = 15,0 B.
MOVLW 78H
MOVWF YCTLI ; УСТАНОВКАМИНИМУМА = 12,0 B.
CLRF KYPC
BSF FLAG,4
GOTO PAC
;==========================================
;3. ТАБЛИЦА СЕГМЕНТОВ.
;==========================================
SEG
;DE G F A B C K
ADDWF PCL,1 ;
RETLW B'11011110' ;0
RETLW B'00000110' ;1
RETLW B'11101100' ;2
RETLW B'10101110' ;3
RETLW B'00110110' ;4
RETLW B'10111010' ;5
RETLW B'11111010' ;6
RETLW B'00001110' ;7
RETLW B'11111110' ;8
RETLW B'10111110' ;9
RETLW B'00000000' ;10->ПУСТО.
RETLW B'00100000' ;11->ПРОЧЕРК.
RETLW B'10000000' ;12->ПРОЧЕРК.
;=================================================
; 4. ТАБЛИЦАПЕРЕКОДИРОВКИ КУРСОРА.
;=================================================
KYPCY
MOVFW KYPC ;
ADDWF PCL,1 ;
RETURN ; НЕТКУРСОРА.
RETLW B'00000100' ;3
RETLW B'00001000' ;4
RETLW B'00010000' ;5
RETLW B'00100000' ;6
RETLW B'01000000' ;7
;===================================================
; 5. ВЫБОРРЕЖИМА ИНДИКАЦИИ.
;===================================================
VUBOR
MOVFW PEID; ИЗМЕНЯЕМРЕЖИМ ИНДИКАЦИИ.
ADDWF PCL,1 ;
GOTO INDH ; ИНДИКАЦИЯЧАСОВ.
GOTO INDT ; ТАЙМЕРА.
GOTO INDU ; НАПРЯЖЕНИЯ.
;======================================================
; 6. ВЫБОРРАЗРЯДА УСТАНОВКИ.
;======================================================
YCT
BTFSC PORTA,YC; ЕСЛИКНОПКА «РЕЖИМ» НАЖАТА,
RETURN
MOVFW KYPC ; ТОПО КУРСОРУ
ADDWF PCL,1 ; ВЫБИРАЕМРАЗРЯД УСТАНОВКИ.
RETURN ; НЕТКУРСОРА.
GOTO YC0 ; МИНУТЫ.
GOTO YC1 ; ДЕСЯТКИМИНУТ.
GOTO YCE ; ОБНУЛЕНИЕ.
GOTO YC2 ; ЧАСЫ.
GOTO YC3 ; ДЕСЯТКИЧАСОВ.
;======================================================
; 7. ТАБЛИЦЫПЕРЕВОДА ДЕСЯТКОВ В ДВОИЧНОЕ ЧИСЛО.
;======================================================
DEBIN
ADDWF PCL,1 ;
RETLW .0
RETLW .10
RETLW .20
RETLW .30
RETLW .40
RETLW .50
RETLW .60
RETLW .70
RETLW .80
RETLW .90
;======================================================
; 8. ПРОВЕРКАНАЖАТЫХ КНОПОК УСТАНОВКИ.
;======================================================
KHOP
BTFSS FLAG,1 ; ЕСЛИНЕТ РЕЖИМА ЧАСОВ,
GOTO $+5 ; ТОКУРСОР НЕ МЕНЯЕТСЯ.
BTFSS PORTA,KY; ПРИНАЖАТОЙ КНОПКЕ
CALL KYPCOP ; ИДЕМНА УСТАНОВКУ КУРСОРА.
BTFSC FLAG,7 ; ЕСЛИИДЕТ УСТАНОВКА,
GOTO VUBOR ; ТОРЕЖИМ НЕ МЕНЯЕТСЯ.
BTFSC PORTA,YC; ЕСЛИКНОПКА «РЕЖИМ» НАЖАТА,
GOTO VUBOR ; ИЛИИДЕМ НА ВЫБОР РЕЖИМА ИНДИКАЦИИ.
INCF PEID,1 ; ИЗМЕНЕНИЕРЕЖИМА ИНДИКАЦИИ.
MOVLW .3 ;3РЕЖИМОВ ИНДИКАЦИИ.
SUBWF PEID,0 ; ЕСЛИБОЛЬШЕ,
BTFSS STATUS,2; ТОПОЙДЕМ НА СБРОС.
GOTO VUBOR ; НАЗАПИСЬ В РЕГИСТРЫ ИНДИКАЦИИ.
CLRF PEID; СБРОСРЕЖИМА.
GOTO VUBOR ; НАВЫБОР РЕЖИМА ИНДИКАЦИИ.
RETURN
;=================================================
; 9.УСТАНОВКА КУРСОРА (ВЫБОР РАЗРЯДА УСТАНОВКИ).
;=================================================
KYPCOP
BSF FLAG,7 ; УСТАНОВКА.
BCF FLAG,4 ; СБРОСФЛАГА НЕТ КУРСОРА.
INCF KYPC,1 ; ПРИБАВИМЕДИНИЦУ В КУРСОР.
MOVLW .6 ; НЕБОЛЕЕ 5.
SUBWF KYPC,0 ;
SKPC ; ЕСЛИБОЛЬШЕ ИЛИ РАВНО 6,
RETURN ;
CLRF KYPC ; ОБНУЛИМ.
BSF FLAG,4 ; НЕТКУРСОРА В ПОЛЕ.
BCF FLAG,7 ; НЕТУСТАНОВКИ.
RETURN ;
;=========================================
; 10. ВВОДКУРСОРА В МЛ. РАЗРЯД РЕГИСТРОВ.
;=========================================
KYPVO
BTFSC FLAG,4 ; ЕСЛИНЕТ КУРСОРА,
RETURN ; ТОВЕРНЕМСЯ.
CALL KYPCY ; УСТАНОВИМРЕЖИМЫ.
MOVWF KYPCI ; ВКУРСОР ИНДИКАЦИИ.
RRF KYPCI,1 ; ЗАПОЛНИМБИТ «С».
ADDCF R1,1 ; ПЕРЕНЕСЕМВ РЕГИСТР ИНДИКАЦИИ.
RRF KYPCI,1 ; ЗАПОЛНИМБИТ «С».
ADDCF R2,1 ; ПЕРЕНЕСЕМВ РЕГИСТР ИНДИКАЦИИ.
RRF KYPCI,1 ; ОСТАЛЬНЫЕРЕГИСТРЫ
ADDCF R3,1 ; ЗАПОЛНЯЕМАНАЛОГИЧНО.
RRF KYPCI,1 ;
ADDCF R4,1 ;
RRF KYPCI,1 ;
ADDCF R5,1 ;
RRF KYPCI,1 ;
ADDCF R6,1 ;
RRF KYPCI,1 ;
ADDCF R7,1 ;
RRF KYPCI,1 ;
ADDCF R8,1 ;
RETURN ;
;=============================================
; 11. ВЫВОДНА ИНДИКАЦИЮ.
;=============================================
IND
CALL KYPVO ; ВВЕДЕМКУРСОРЫ В РЕГИСТРЫ ИНДИКАЦИИ.
MOVFW ZPT ; ЗНАЧЕНИЯЗАПЯТЫХ ПЕРЕПИШЕМ
MOVWF TZPT ; ВОВРЕМЕННЫЙ РЕГИСТР.
BSF FLAG1,2 ; ЗАПЯТАЯПЕРЕДАНА.
BCF PORTC,DIN ; ДАННЫЕРАВНЫ НУЛЮ.
BCF PORTC,LOAD ; НАЧАЛОПЕРЕДАЧИ (LOAD=0).
RRF TZPT,1 ; ВЫТОЛКНЕМОЧЕРЕДНУЮ ЗАПЯТУЮ.
CALL VUV0 ;
BCF FLAG1,2 ; ЗАПЯТАЯПЕРЕДАНА.
MOVLW R1 ; ЗАПИШЕМАДРЕС ПЕРВОГО РЕГИСТРА ИНДИКАЦИИ.
MOVWF FSR ;
MOVFW INDF; ЗНАЧЕНИЕПЕРВОГО РЕГИСТРА
MOVWF TEMP ; ПЕРЕПИШЕМВО ВРЕМЕННЫЙ.
BCF PORTC,LOAD ; НАЧАЛОПЕРЕДАЧИ (LOAD=0).
CALL VUVOD ; НАВЫВОД.
POVT
BSF FLAG1,2 ; ЗАПЯТАЯПЕРЕДАНА.
RRF TZPT,1 ; ВЫТОЛКНЕМОЧЕРЕДНУЮ ЗАПЯТУЮ.
CALL VUV0 ;
BCF FLAG1,2 ; ЗАПЯТАЯПЕРЕДАНА.
INCF FSR,1 ; УВЕЛИЧИМАДРЕС РЕГИСТРА ИНДИКАЦИИ.
MOVFW INDF; ПЕРЕПИШЕМЕГО ЗНАЧЕНИЕ
MOVWF TEMP ; ВОВРЕМЕННЫЙ.
CALL VUVOD ; НАВЫВОД.
INCF COUZ,1 ; ПОДСЧИТАЕМЧИСЛО
MOVLW .7 ; ПЕРЕДАВАЕМЫХ
SUBWF COUZ,0 ; ЗАПЯТЫХ.
BTFSC STATUS,2;
CLRF COUZ ; ОБНУЛИМ СЧЕТЧИК.
BTFSS STATUS,2;
GOTO POVT ; ПОВТОРИМ ВЫВОД.
BSF PORTC,LOAD ; КОНЕЦПЕРЕДАЧИ.
RETURN ;
CUNX
BSF PORTC,DCLK ; СИНХРОТМПУЛЬС = 1.
CALL PAUS ; ПАУЗА.
BCF PORTC,DCLK ; СИНХРОИМПУЛЬС = 0.
RETURN ; ВОЗВРАТ.
PAUS
MOVLW .5 ; МОЖНОПОДБИРАТЬ ЗНАЧЕНИЕ ПАУЗЫ.
ADDLW -1; ПАУЗА= ЧИСЛО Х 4 МКС.
BTFSSSTATUS,2;
GOTO$-2 ; ПОВТОРИМ.
RETURN ; ВЕРНЕМСЯ.
VUVOD
RRF TEMP,1 ; СДВИНЕМ ВПРАВО.
VUV0
BTFSS STATUS,0; ПОНУЛЕВОМУ РАЗРЯДУ
BCF PORTC,DIN ; УСТАНАВЛИВАЕМДАННЫЕ
BTFSC STATUS,0; В0 ИЛИ 1.
BSF PORTC,DIN ;
CALL CUNX ; СИНХРОНИЗИРУЕМДАННЫЕ.
BTFSC FLAG1,2 ; ЕСЛИЗАПЯТАЯ ПЕРЕДАНА,
RETURN ; ТОВЕРНЕМСЯ.
INCF COU,1 ; ПОДСЧИТАЕМЧИСЛО БИТ.
MOVLW .8 ;
SUBWF COU,0 ;
BTFSS STATUS,2; ЕСЛИНЕ ВСЕ БИТЫ ПЕРЕДАНЫ,
GOTO VUVOD ; ПОВТОРИМВЫВОД.
CLRF COU; ОБНУЛИМСЧЕТЧИК.
RETURN ;
;======================================================
; 12.СОХРАНЕНИЕ И ВОССТАНОВЛЕНИЕ ЗНАЧЕНИЙ РЕГИСТРОВ ПРИ ПРЕРЫВАНИИ.
;======================================================
PRER
MOVWF WTEMP ; СОХРАНЕНИЕЗНАЧЕНИЙ РЕГИСТРОВ W,
MOVFW STATUS ;STATUS,
MOVWF STEMP ;
MOVFW FSR ;FSR.
MOVWF FTEMP ;
BSF FLAG1,1 ;1СЕК ЦИКЛА.
CALL S1 ; ПОДСЧИТАЕМ ВРЕМЯ.
BTFSC FLAG,2 ;
CALL TAIM ;
REPER; ВОССТАНОВЛЕНИЕСОХРАНЕННЫХ ЗНАЧЕНИЙ.
MOVFW STEMP ; ВОССТАНОВЛЕНИЕРЕГИСТРОВ:
MOVWF STATUS ;STATUS,
MOVFW FTEMP ;
MOVWF FSR ;FSR,
MOVFW WTEMP ;W.
BCF INTCON,2; СБРАСЫВАЕМ ФЛАГ ПРЕРЫВАНИЯ ОТ TMR0.
RETFIE ; ВОЗВРАТИЗ ПРЕРЫВАНИЯ.
;=============================================
; 13. ПОДСЧЕТВРЕМЕНИ.
;=============================================
S1
BTFSC FLAG1,5 ;
GOTO $+8 ;
BTFSS FLAG1,4 ;
GOTO $+6 ;
BTFSC PORTC,0 ; СМЕНАВКЛЮЧЕНИЯ ЗУММЕРА.
GOTO $+3 ;
BSF PORTC,0 ; ВКЛЮЧИМСИГНАЛ.
GOTO $+2 ;
BCF PORTC,0 ;
MOVLW .9 ; ЕСЛИУЖЕ 9 СЕКУНД,
SUBWF CL,0 ;
BC SH ; ИДЕМНА СРАВНЕНИЕ ДЕСЯТКОВ СЕКУНД.
INCF CL,1 ; ИНАЧЕПРИБАВИМ ЕДИНИЦУ.
RETURN
SH
CLRF CL ; ОБНУЛИМСЕКУНДЫ.
MOVFW CH ; ЕСЛИДЕСЯТКИ СЕКУНД
ADDLW -5H ; РАВНЫ5,
BZ MIL ; ИДЕМСРАВНИВАТЬ МИНУТЫ.
INCF CH,1; ИНАЧЕУВЕЛИЧИМ ДЕСЯТКИ СЕКУНД.
RETURN
MIL
CLRF CH ; ОБНУЛИМДЕСЯТКИ СЕКУНД.
MOVFW ML ; ЕСЛИЕДИНИЦЫ МИНУТ
ADDLW -9H ; РАВНЫ9,
BZ MIH ; ИДЕМСРАВНИВАТЬ ДЕСЯТКИ.
INCF ML,1; ИНАЧЕУВЕЛИЧИМ МИНУТЫ.
RETURN
MIH
BSF FLAG1,4 ; ПРОШЛО10 МИНУТ КУРСОР ВЫКЛЮЧАЕТСЯ.
BCF FLAG,7 ; НЕТУСТАНОВКИ.
CLRF KYPC ; НЕТКУРСОРА.
CLRF ML ; ОБНУЛИМЕДИНИЦЫ МИНУТ.
MOVFW MH ; ЕСЛИДЕСЯТКИ МИНУТ
ADDLW -5H ; РАВНЫ5,
BZ HOL ; ИДЕМСРАВНИВАТЬ ЧАСЫ.
INCF MH,1 ; ИЛИУВЕЛИЧИМ ДЕСЯТКИ МИНУТ.
RETURN
HOL
BCF FLAG1,5 ; НАПОМИНАНИЕОБ АВАРИИ НАПРЯЖЕНИЯ.
CLRF MH ; ОБНУЛИМДЕСЯТКИ МИНУТ.
MOVFW HH ; ЕСЛИДЕСЯТКИ ЧАСОВ
ADDLW -2H ; РАВНЫ2,
BZ HL4 ; ПРОВЕРИМЕДИНИЦЫ ЧАСОВ.
MOVFW HL ; ЕСЛИЕДИНИЦЫ ЧАСОВ РАВНЫ 9,
ADDLW -9H ;
BZ $+3 ; УВЕЛИЧИМДЕСЯТКИ ЧАСОВ.
INCF HL,1; ИЛИУВЕЛИЧИМ ЕДИНИЦЫ ЧАСОВ.
RETURN
CLRF HL ;
INCF HH,1 ;
RETURN
HL4
MOVFW HL ; ЕСЛИЕДИНИЦЫ ЧАСОВ
ADDLW -3H ; РАВНЫ3,
BZ HOH; ИДЕМОБНУЛЯТЬ.
INCF HL,1; ИЛИПРИБАВИМ ЕДИНИЦУ.
RETURN
HOH
CLRF HL ;
CLRFHH ; ОБНУЛИМ ДЕСЯТКИ ЧАСОВ.
RETURN ;
;=============================================
; 14. ТАЙМЕР.
;=============================================
TAIM
BSF FLAG,5 ; СЛЕДУЮЩАЯОСТАНОВКА ТАЙМЕРА.
MOVLW .9 ; ЕСЛИУЖЕ 9 СЕКУНД,
SUBWF TCL,0 ;
BC $+3 ; ИДЕМНА СРАВНЕНИЕ ДЕСЯТКОВ СЕКУНД.
INCF TCL,1 ; ИНАЧЕПРИБАВИМ ЕДИНИЦУ.
RETURN
CLRF TCL ; ОБНУЛИМ СЕКУНДЫ.
MOVFW TCH ; ЕСЛИДЕСЯТКИ СЕКУНД
ADDLW -5H ; РАВНЫ5,
BZ $+3 ; ИДЕМСРАВНИВАТЬ МИНУТЫ.
INCF TCH,1 ; ИНАЧЕУВЕЛИЧИМ ДЕСЯТКИ СЕКУНД.
RETURN
CLRF TCH ; ОБНУЛИМДЕСЯТКИ СЕКУНД.
MOVFW TML; ЕСЛИЕДИНИЦЫ МИНУТ
ADDLW -9H ; РАВНЫ9,
BZ $+3 ; ИДЕМСРАВНИВАТЬ ДЕСЯТКИ.
INCF TML,1 ; ИНАЧЕУВЕЛИЧИМ МИНУТЫ.
RETURN
CLRF TML; ОБНУЛИМЕДИНИЦЫ МИНУТ.
MOVFW TMH; ЕСЛИДЕСЯТКИ МИНУТ
ADDLW -5H ; РАВНЫ5,
BZ $+3 ; УВЕЛИЧИМЧАСЫ.
INCF TMH,1 ; ИЛИУВЕЛИЧИМ ДЕСЯТКИ МИНУТ.
RETURN
CLRF TMH; ОБНУЛИМДЕСЯТКИ МИНУТ.
MOVFW THL ; ЕСЛИЕДИНИЦЫ ЧАСОВ РАВНЫ 9,
ADDLW -9H ;
BZ $+3 ; УВЕЛИЧИМДЕСЯТКИ ЧАСОВ.
INCF THL,1 ; ИЛИУВЕЛИЧИМ ЕДИНИЦЫ ЧАСОВ.
RETURN
CLRF THL ; ОБНУЛИМ ЧАСЫ.
MOVFW THH; ЕСЛИДЕСЯТКИ ЧАСОВ РАВНЫ 9,
ADDLW -9H ;
BZ $+3 ; ОБНУЛИМ.
INCF THH,1 ; ИЛИУВЕЛИЧИМ ДЕСЯТКИ ЧАСОВ.
RETURN
CLRF THH ;
RETURN
T00
BTFSS FLAG,5 ;
GOTO $+4 ;
BCF FLAG,2 ; ТАЙМЕР ВЫКЛЮЧЕН.
BCF FLAG,5 ; СЛЕДУЮЩЕЕВКЛЮЧЕНИЕ ТАЙМЕРА.
RETURN ;
CLRF TCL ; ВСЕ ОБНУЛЯЕМ.
CLRF TCH ;
CLRF TML ;
CLRF TMH ;
CLRF THL ;
CLRF THH ;
BSF FLAG,2 ; ВКЛЮЧИМ ТАЙМЕР.
RETURN
;===================================================
; 15. АЦП — ПРЕОБРАЗОВАНИЯ (ИЗМЕРЕНИЕ ВХОДНЫХ ВЕЛИЧИН).
;===================================================
ADP
MOVLW B'10000001' ; СИНХРОНИЗАЦИЯОТ RC
MOVWF ADCON0 ; ГЕНЕРАТОРА,ВХОД 0, ВКЛЮЧЕНИЕ АЦП (YBX).
CALL ZAD ;
BSF ADCON0,1 ; ВКЛЮЧИМПРЕОБРАЗОВАНИЕ.
BTFSC ADCON0,1 ; ОЖИДАЕМЗАВЕРШЕНИЯ
GOTO $-1 ; ПРЕОБРАЗОВАНИЯ.
MOVFW ADRESH ; ПЕРЕПИШЕМ РЕЗУЛЬТАТ ПРЕОБРАЗОВАНИЯ
MOVWF TEKH ; ВСТАРШИЙ ТЕКУЩИЙ РЕГИСТР.
BSF STATUS,5; ПЕРЕХОДИМВ БАНК 1.
MOVLW 58 ;
MOVWF FSR ; ПОКОСВЕННОЙ АДРЕСАЦИИ
MOVFW ADRESL ; ЗАПИСЬМЛ. РЕГИСТРА АЦП
MOVWF INDF ; ВРЕГИСТР TEKL.
BCF STATUS,5; ПЕРЕХОДИМВ БАНК 0.
CALL COMPA ;
GOTO BINDEC ; ПЕРЕКОДИРУЕМ В 2_10 КОД.
ZAD
MOVLW .5 ; ЗАДЕРЖКА 20 МКС.
ADDLW -1 ;
BTFSS STATUS,2 ;
GOTO $-2 ;
RETURN
;===========================
; 16.СРАВНЕНИЕ С УСТАНОВКОЙ.
;===========================
COMPA
TSTF TEKL ;
BTFSC STATUS,2;
GOTO VUKL ;
MOVFW YCTL ; УСТАНОВКАМАКСИМУМА.
SUBWF TEKL,0 ; ИЗМЕРЕНИЕ,
BTFSC STATUS,0; ЕСЛИБОЛЬШЕ ИЛИ РАВНО,
GOTO VUKL ; ТОВКЛЮЧАЕТСЯ ЗУММЕР.
MOVFW YCTLI ; УСТАНОВКАМИНИМУМА.
SUBWF TEKL,0 ; ИЗМЕРЕНИЕ,
BTFSS STATUS,0; ЕСЛИМЕНЬШЕ,
GOTO VUKL ; ТОВКЛЮЧАЕТСЯ ЗУММЕР.
BTFSC STATUS,2; ЕСЛИРАВНО,
GOTO VUKL ; ТОВКЛЮЧАЕТСЯ ЗУММЕР.
BCF FLAG1,4 ; ЗУММЕРВЫКЛЮЧЕН.
BCF FLAG1,5 ; ЗУММЕРВЫКЛЮЧЕН.
BCF PORTC,0 ; ВЫКЛЮЧИМСИГНАЛ.
RETURN
VUKL
BTFSC PORTA,KY;
GOTO $+5 ;
BSF FLAG1,5 ; ПОСТАВИМСТОРОЖОК НА 1 ЧАС.
BCF PORTC,0 ; ВЫКЛЮЧИМСИГНАЛ.
BTFSC FLAG1,5 ; ЕСЛИ1 ЧАС ПРОШЕЛ, ТО ВКЛЮЧИМ СИГНАЛ.
RETURN
BTFSC FLAG1,4 ; ЕСЛИВЫХОД УЖЕ ВЫКЛЮЧЕН,
RETURN ; СРАВНЕНИЙНЕТ.
BSF PORTC,0 ; ВКЛЮЧИМСИГНАЛ.
BSF FLAG1,4 ; ЗУММЕРВКЛЮЧЕН.
RETURN
;======================================================
; 17.ПЕРЕКОДИРОВКА ИЗ 16-И РАЗРЯДНОГО 2-ГО В 5- РАЗРЯДНОЕ 2-10-Е.
; АЛГОРИТМПЕРЕКОДИРОВКИ ОСНОВЫВАЕТСЯ НА ПРИБАВЛЕНИИ 3 В МЛАДШИЙ
; И СТАРШИЙПОЛУБАЙТЫ. ЕСЛИ РЕЗУЛЬТАТ СПЕРЕНОСОМ 1 В 3 РАЗРЯД (10=7+3), ТО ЗАПИСЫВАЕМ
; НОВОЕЗНАЧЕНИЕ В РЕГИСТР. ВЫПОЛНЯЕМ 16 РАЗ СДВИГАЯ БИТЫ РЕГИСТРОВ.
;======================================================
BINDEC
MOVLW .16; ЗАПИШЕМЧИСЛО СДВИГОВ
MOVWF COU; ВСЧЕТЧИК.
BIDE
BCF STATUS,0; ОБНУЛИМБИТ «С».
RLF TEKL,1; СДВИНЕМПЕРЕКОДИРУЕМОЕ
RLF TEKH,1; ЧИСЛОПЕРЕМЕЩАЯ ЕГО СТАРШИЙ БИТ
RLF EDA,1; ВМЛАДШИЙ БИТ РЕГИСТРОВ
RLF DEA,1; РЕЗУЛЬТАТА.
DECFSZ COU,1; ЗАФИКСИРУЕМСДВИГ В СЧЕТЧИКЕ.
GOTO RASDEC; ПРОВЕРИМПОЛУБАЙТЫ НА СЕМЕРКУ.
GOTO MESTO; ЕСЛИСЧЕТЧИК ПУСТ, ЗАПОЛНИМ РЕГИСТРЫ ИНДИКАЦИИ.
RASDEC
MOVLW EDA; ЗАПИШЕМАДРЕС РЕГИСТРА
MOVWF FSR; ВРЕГИСТР КОСВЕННОЙ АДРЕСАЦИИ.
CALL BCD; ПРОВЕРИМЗНАЧЕНИЕ РЕГИСТРА НА 7.
MOVLW DEA; АНАЛОГИЧНЫЕОПЕРАЦИИ ПРОДЕЛАЕМ
MOVWF FSR; СДРУГИМИ РЕГИСТРАМИ.
CALL BCD ;
GOTO BIDE; ПОЙДЕМПОВТОРЯТЬ СДВИГ.
BCD
MOVLW 3 ;00000011
ADDWF 0,0; ПРИБАВИМ3 К РЕГИСТРУ И РЕЗУЛЬТАТ
MOVWF TEMP; ЗАПИШЕМВО ВРЕМЕННЫЙ РЕГИСТР.
BTFSC TEMP,3; ПРОВЕРИМ3 БИТ И ЕСЛИ ОН РАВЕН НУЛЮ,
MOVWF 0; ПРОПУСКАЕМЗАПИСЬ РЕЗУЛЬТАТА В РЕГИСТР.
MOVLW 30 ;48=00110000
ADDWF 0,0; ПРИБАВИМ3 К СТАРШЕМУ ПОЛУБАЙТУ РЕГИСТРА И РЕЗУЛЬТАТ
MOVWF TEMP; ЗАПИШЕМВО ВРЕМЕННЫЙ РЕГИСТР.
BTFSC TEMP,7; ЕСЛИБИТ ЕДИНИЧНЫЙ,
MOVWF 0; ТОЗАПИШЕМ НОВОЕ ЗНАЧЕНИЕ В РЕГИСТР.
RETURN; ВЕРНЕМСЯДЛЯ ЗАГРУЗКИ НОВОГО ЗНАЧЕНИЯ РЕГИСТРА.
;======================================================
; 18.ИЗВЛЕКАЕМ ПОЛУБАЙТЫ ИЗ РЕГИСТРОВ СЧЕТА В РЕГИСТРЫ ИНДИКАЦИИ.
;======================================================
MESTO
MOVLW B'00001111' ; ИЗВЛЕКАЕМПОЛУБАЙТЫ
ANDWF DEA,0 ; ВРЕГИСТРЫ ИНДИКАЦИИ.
MOVWF COI ;
MOVLW B'11110000' ;
ANDWF EDA,0 ;
MOVWF DEI ;
SWAPF DEI,1 ;
MOVLW B'00001111' ;
ANDWF EDA,0 ;
MOVWF EDI ;
CLRF EDA ;
CLRF DEA ;
RETURN ;
;==================================================
; 19. СМЕНАИНДИКАЦИИ ПРИ СМЕНЕ РЕЖИМА.
;==================================================
INDH
BTFSC FLAG,7 ; ЕСЛИКУРСОР ЕСТЬ,
CALL YCT ; ТОИДЕМ НА УСТАНОВКУ.
MOVLW .10 ; ПУСТО.
CALL SEG ; ЗАПОЛНИМРЕГИСТРЫ ИНДИКАЦИИ.
MOVWF R1 ;
MOVWF R2 ;
MOVWF R8 ;
BTFSS FLAG,6 ;
GOTO $+6 ;
MOVLW .11 ; ПРОЧЕРК СРЕДНИЙ.
CALL SEG ;
MOVWF R5 ;
BCF FLAG,6 ;
GOTO $+5 ;
MOVLW .12 ; ПРОЧЕРК НИЖНИЙ.
CALL SEG ;
MOVWF R5 ;
BSF FLAG,6 ;
MOVFW ML ;
CALL SEG ;
MOVWF R3 ;
MOVFW MH ;
CALL SEG ;
MOVWF R4 ;
MOVFW HL ;
CALL SEG ;
MOVWF R6 ;
MOVFW HH ;
CALL SEG ;
MOVWF R7 ;
BSF FLAG,1 ; ВКЛЮЧИМ РЕЖИМ ЧАСОВ.
CLRF ZPT ;
RETURN ;
INDT
BTFSS PORTA,KY; ЕСЛИ КНОПКА НАЖАТА,
CALL T00 ; ТОИДЕМ ОБНУЛЯТЬ ТАЙМЕР.
MOVFW TCL ; ЗАПОЛНИМРЕГИСТРЫ ИНДИКАЦИИ
CALL SEG ; МИНУТИ СЕКУНД ПРАВЫХ ЧАСОВ.
MOVWF R1 ;
MOVFW TCH ;
CALL SEG ;
MOVWF R2 ;
MOVFW TML ;
CALL SEG ;
MOVWF R4 ;
MOVFW TMH ;
CALL SEG ;
MOVWF R5 ;
MOVLW .11 ; ПРОЧЕРК.
CALL SEG ;
MOVWF R3 ;
MOVWF R6 ;
MOVFW THL ;
CALL SEG ;
MOVWF R7 ;
MOVFW THH ;
CALL SEG ;
MOVWF R8 ;
BCF FLAG,1 ; РЕЖИМ ЧАСЫ ВЫКЛЮЧЕН.
BCF FLAG,7 ; НЕТУСТАНОВКИ.
RETURN ;
INDU
MOVLW .10 ; ПУСТО.
CALL SEG ; ЗАПОЛНИМРЕГИСТРЫ ИНДИКАЦИИ.
MOVWF R1 ;
MOVWF R2 ;
MOVWF R3 ;
MOVWF R7 ;
MOVWF R8 ;
MOVFWCOI ;
CALL SEG ;
MOVWF R6 ;
MOVFWDEI ;
CALL SEG ;
MOVWF R5 ;
MOVFWEDI ;
CALL SEG ;
MOVWF R4 ;
BSF ZPT,4 ;
RETURN ;
;===================================================
; 20.РАСПРЕДЕЛИТЕЛЬ.
;===================================================
PAC
BTFSS FLAG1,1 ; ЖДЕМ1 СЕКУНДУ.
GOTO $-1 ;
CALL ADP ;
CALL KHOP ; НАПРОВЕРКУ КНОПОК.
CALL IND ; НАИНДИКАЦИЮ.
BCF FLAG1,1 ;
GOTO PAC ; ПОВТОРИМ.
;=====================================================
; 21.УСТАНОВКА ВРЕМЕНИ.
;=====================================================
YC0
INCF ML,1 ; УВЕЛИЧИМЕДИНИЦЫ МИНУТ.
MOVLW .10 ; НЕБОЛЕЕ 9.
SUBWF ML,0 ;
SKPNC ; ЕСЛИБОЛЬШЕ ИЛИ РАВНО 10,
CLRF ML ; ТООБНУЛИМ.
RETURN
YC1
INCF MH,1 ; УВЕЛИЧИМДЕСЯТКИ МИНУТ.
MOVLW .6 ; НЕБОЛЕЕ 5.
SUBWF MH,0 ;
SKPNC ; ЕСЛИБОЛЬШЕ ИЛИ РАВНО 6,
CLRF MH ; ТООБНУЛИМ.
RETURN
YC2
INCF HL,1 ; УВЕЛИЧИМЕДИНИЦЫ ЧАСОВ.
MOVLW .10 ; НЕБОЛЕЕ 9.
SUBWF HL,0 ;
SKPNC ;
CLRF HL ; ЕСЛИБОЛЬШЕ, ТО ОБНУЛИМ.
MOVFW HH ; ПЕРЕКОДИРУЕМВ ДВОИЧНЫЙ
CALL DEBIN ; КОДДЕСЯТКИ.
ADDWF HL,0 ; ПРИБАВИМЕДИНИЦЫ
MOVWF HOU ; ДВОИЧНОЕЗНАЧЕНИЕ НЕ ДОЛЖНО
ADDLW -18H ; ПРЕВЫШАТЬ- 24.
SKPC ; ЕСЛИБОЛЬШЕ ИЛИ РАВНО 24,
RETURN
CLRF HOU ; ТООБНУЛИМ ЧАСЫ ДВОИЧНЫЕ
CLRF HL ; ИРАЗРЯДЫ СТАРШИЙ
CLRF HH ; ИМЛАДШИЙ.
RETURN
YC3
INCF HH,1 ; УВЕЛИЧИМДЕСЯТКИ ЧАСОВ.
MOVLW .3 ; НЕБОЛЕЕ 2.
SUBWF HH,0 ;
SKPNC ;
CLRF HH ; ЕСЛИБОЛЬШЕ, ТО ОБНУЛИМ.
MOVFW HH ; ПЕРЕКОДИРУЕМВ ДВОИЧНЫЙ
CALL DEBIN ; КОДДЕСЯТКИ.
ADDWF HL,0 ; ПРИБАВИМЕДИНИЦЫ
MOVWF HOU ; ИПОЛУЧИМ ДВОИЧНОЕ ЧИСЛО.
ADDLW -18H ;
SKPC ; ЕСЛИБОЛЬШЕ ИЛИ РАВНО 24,
RETURN
CLRF HOU ; ТООБНУЛИМ ЧАСЫ ДВОИЧНЫЕ
CLRF HL ; ИРАЗРЯДЫ СТАРШИЙ
CLRF HH ; ИМЛАДШИЙ.
RETURN ; ВЕРНЕМСЯ.
YCE
CLRF CL ; ОБНУЛЕНИЕ.
CLRF CH ;
CLRF ML ;
RETURN ;
;======================================================
END
;======================================================