Разработка микропроцессорной системы цифрового термометра на базе микроконтроллера
Построение структурной, функциональной и принципиальной схем электронного термометра на основе микроконтороллера, выбор элементной базы, оптимальной для реализации поставленных задач по диапазону характеристик, алгоритм работы системы и программный код.
Рубрика | Коммуникации, связь, цифровые приборы и радиоэлектроника |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 27.12.2009 |
Размер файла | 2,4 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
РЕФЕРАТ
Пояснительная записка состоит из 59 страниц, 8 рисунков, 7 таблиц, 6 источников.
Микроконтроллер, Жидкокристаллический индикатор, Датчик, кварцевый резонатор, кнопка
Цель работы: разработка микропроцессорной системы на базе микроконтороллера, электронного термометра для использования на метеостанциях и в быту. Задание режима измерений осуществляется при помощи специальных кнопок. Отображение информации осуществляется на двухрядном жидкокристаллическом индикаторе.
Содержание работы: в работе выполнено построение структурной схемы, построение функциональной схемы, сформирован алгоритм работы системы, выбор элементной базы, оптимальной для реализации поставленных задач по диапазону характеристик, разработана программа, разработана принципиальная схема устройства.
СОДЕРЖАНИЕ
Введение
1. Описание объекта и функциональная спецификация
2. Описание структуры системы
3. Описание ресурсов МК PIC16F628
3.1 Характеристика RISC ядра
3.2 Особенности микроконтроллеров
3.3 Характеристики пониженного энергопотребления
3.4 Периферия
3.5 Расположение выводов
3.6 Особенности структурной организации PIC 16С84
3.7 Обозначение выводов и их функциональное назначение
3.8 Организация памяти данных (ОЗУ)
4. Разработка алгоритма работы устройства
5. Ассемблирование
6. Описание функциональных узлов МПС и алгоритма их взаимодействия
7. Описание выбора элементной базы и работы принципиальной схемы
8. Работа с устройством
Заключение
Список литературы
Приложение А. Листинг программы и объектный файл
ВВЕДЕНИЕ
Современную микроэлектронику трудно представить без такой важной составляющей, как микроконтроллеры. Микроконтроллеры незаметно завоевали весь мир. Микроконтроллерные технологии очень эффективны. Одно и то же устройство, которое раньше собиралось на традиционных элементах, будучи собрано с применением микроконтроллеров, становится проще, не требует регулировки и меньше по размерам. С применением микроконтроллеров появляются практически безграничные возможности по добавлению новых потребительских функций и возможностей к уже существующим устройствам. Для этого достаточно просто изменить программу.
Однокристальные (однокорпусные) микроконтроллеры представляют собой приборы, конструктивно выполненные в виде БИС и включающие в себя следующие составные части: микропроцессор, память программ и память данных, а также программируемые интерфейсные схемы для связи с внешней средой.
Мировая промышленность выпускает огромную номенклатуру микроконтроллеров. По области применения их можно разделить на два класса : специализированные, предназначенные для применения в какой-либо одной конкретной области (контроллер для телевизора, контроллер для модема, контроллер для компьютерной мышки ) и универсальные, которые не имеют конкретной специализации и могут применяться в самых различных областях микроэлектроники, с помощью которых можно создать как любое из перечисленных выше устройств, так и принципиально новое устройство.
Цель курсовой работы - основываясь на знаниях, полученных при изучении темы «Микроконтроллеры и микропроцессорные системы» разработать микропроцессорную систему цифрового термометра на базе микроконтроллера.
1. Описание объекта и функциональная спецификация
Разработаем устройство предназначено для фиксации минимальной и максимальной суточных температур по двум термодатчикам с записью в память микроконтроллера данных за восемь дней. Его можно использовать для наблюдения за изменением температуры наружного воздуха на метеостанциях, при различных технологических процессах и в домашних условиях.
Устройство состоит из двух термодатчиков типа DS18B20, микроконтроллера PIC16F628, двухрядного жидкокристаллического индикатора GDM1602 и кнопок управления "Режим", "Разряд", "Установка", "Просмотр 1-2/Сброс" и "Просмотр".
Устройство поддерживает три режима индикации:
* текущий -- вывод текущих значений числа, месяца, времени и температуры по двум термодатчикам с точностью 0,1 градуса;
* установка даты и времени;
* просмотр -- вывод на индикатор зафиксированных значений максимальной и минимальной температур текущего дня, а при нажатии кнопки "Просмотр" -- и значения экстремальных температур предыдущих восьми дней. При нажатии кнопки "Просмотр 1-2" можно просмотреть экстремальные значения температур по первому и второму термодатчикам и время, когда эти значения были зафиксированы.
Функциональная спецификация
1. Входы
a. Два термодатчика типа DS18B20
b. 5 кнопок управления
2. Выходы
a. двухрядный жидкокристаллический индикатор GDM1602
3. Функции
a. Вывод текущего значения числа, месяца, времени и температуры по двум термодатчикам с точностью 0,1 градуса
b. Возможность установки даты и времени
c. Возможность просмотра на индикаторе зафиксированных значений максимальной и минимальной температур текущего дня, а при нажатии кнопки "Просмотр" -- и значения экстремальных температур предыдущих восьми дней.
d. При нажатии кнопки "Просмотр 1-2" можно просмотреть экстремальные значения температур по первому и второму термодатчикам и время, когда эти значения были зафиксированы
2. Описание структуры системы
После определения входов и выходов устройства разработана структурная схема устройства. Структурная схема электронного термометра приведена на рис. 1.
Кнопки управления SB1- SB5
Рис. 1. Структурная схема электронного термометра
3. Описание ресурсов МК PIC16F628
Микроконтроллеры PIC 16С84 (16F84) также относятся к расширенному семейству, имеют целый ряд таких же существенных отличий от МК базового семейства PIC 16С5Х как и PIC 16С71, абсолютно не отличаются от последних системой команд и особенностями программирования, но обладают несколько другими функциональными возможностями.
Рассмотрим основные характеристики микроконтроллера PIC16F628А.
3.1 Характеристика RISC ядра
Тактовая частота от DC до 20МГц
Поддержка прерываний
8-уровневый аппаратный стек
Прямая, косвенная и относительная адресация
35 однословных команд
- все команды выполняются за один машинный цикл, кроме команд ветвления и условия с истинным результатом
3.2 Особенности микроконтроллеров
Внешний и внутренний режимы тактового генератора
- Прецизионный внутренний генератор 4МГц,
нестабильность +/- 1%
- Энергосберегающий внутренний генератор 37кГц
- Режим внешнего генератора для подключения кварцевого или керамического резонатора
Режим энергосбережения SLEEP
Программируемые подтягивающие резисторы на входах PORTB
Сторожевой таймер WDT с отдельным генератором
Режим низковольтного программирования
Программирование на плате через последовательный порт (ICSP) (с использованием двух выводов)
Защита кода программы
Сброс по снижению напряжения питания BOR
Сброс по включению питания POR
Таймер включения питания PWRT и таймер запуска генератора OST
Широкий диапазон напряжения питания от 2.0В до 5.5В
Промышленный и расширенный температурный диапазон
Высокая выносливость ячеек FLASH/EEPROM
- 100 000 циклов стирания /записи FLASH памяти программ
- 1 000 000 циклов стирания /записи EEPROM памяти данных
- Период хранения данных FLASH/EEPROM памяти > 100 лет
3.3 Характеристики пониженного энергопотребления
Работа PIC 16С84 в режиме SLEEP в основном полностью аналогична PIC 16С71 за исключением выхода из этого режима по прерыванию. В данном МК предусмотрен выход из режима SLEEP по окончанию записи данных-констант в EEPROM, так как прерывание от АЦП отсутствует.
Режим энергосбережения:
- 100нА @ 2.0В (тип.)
Режимы работы:
- 12мкА @ 32кГц, 2.0В (тип.)
- 120мкА @ 1МГц, 2.0В (тип.)
Генератор таймера TMR1:
- 1.2мкА, 32кГц, 2.0В (тип.)
Сторожевой таймер:
- 1мкА @ 2.0В (тип.)
Двухскоростной внутренний генератор:
- Выбор скорости старта 4МГц или 37кГц
- Время выхода из SLEEP режима 3мкс @ 3.0В (тип.)
3.4 Периферия
16 каналов ввода/вывода с индивидуальными битами направления
Сильноточные схемы портов сток/исток, допускающих непосредственное подключение светодиодов
Модуль аналоговых компараторов:
- Два аналоговых компаратора
- Внутренний программируемый источник опорного напряжения
- Внутренний или внешний источник опорного напряжения
- Выходы компараторов могут быть подключены на выводы микроконтроллера
TMR0: 8-разрядный таймер/счетчик с программируемым предделителем
TMR1: 16-разрядный таймер/счетчик с внешним генератором
TMR2: 8-разрядный таймер/счетчик с программируемым предделителем и постделителем
CCP модуль:
- разрешение захвата 16 бит
- разрешение сравнения 16 бит
- 10-разрядный ШИМ
Адресуемый USART модуль
PICmicro |
Память программ (слов) |
Память данных |
Портов I/O |
CCP (ШИМ) |
USART |
Компар. |
Таймеры 8/16 бит |
||
ОЗУ (байт) |
EEPROM (байт) |
||||||||
PIC16F628A |
2048 |
224 |
128 |
16 |
1 |
+ |
2 |
2/1 |
3.5 Расположение выводов
Рис. 2. Расположение выводов в различном исполнении микроконтроллеров PIC16F628А
3.6 Особенности структурной организации PIC 16С84
Главным отличием данного МК от PIC 16С71 является наличие электрически перепрограммируемой памяти данных-констант EEPROM и отсутствие модуля АЦП. Эти и другие связанные с ними отличия приведены в следующем списке:
1. Память программ электрически перепрограммируема (EEPROM). Это позволяет пользователю достаточно просто многократно перепрограммировать микроконтроллер, что очень существенно на этапе отладки рабочих программ и при изменении функциональных возможностей МКУ в процессе создания и эксплуатации.
2. Наличие дополнительной электрически перепрограммируемой EEPROM памяти для данных-констант размером 64х8 байт.
3. Четыре источника прерывания. Три из которых точно такие же как и в PIC 16С71:
- внешнее прерывание с вывода RBO/INT,
- прерывание от счетчика/таймера TMRO(RTCC),
- прерывание от изменения сигналов на входах порта RB<7:4>,
а четвертый источник новый:
- по завершению записи данных в памяти EEPROM.
4. Рабочая частота - 0 Гц.....10 МГц (минимальный цикл выполнения команды - 400 нс).
5. Модуль АЦП отсутствует.
6. Управляющий регистр прерываний INTCON модифицирован.
Вместо бита разрешения/запрещения прерывания от аналого-цифрового преобразователя ADIE в 6-м разряде регистра INTCON находится бит разрешения/запрещения прерывания по завершению записи данных в памяти EEPROM (EEIE), причем:
EEIE=0 запрещает прерывание (флаг EEIF в регистре EECON1), EEIE = 1 запрещает прерывание.
Назначение всех остальных бит регистра INTCON точно такое же как и в PIC 16С71
7. В составе 15-ти специальных регистров вместо ненужных в данном микроконтроллере ADCON, ADCON1, ADRES и ADRES2 (в связи с отсутствием АЦП) появились новые регистры EEDATA, EECON1, EEADR и EECON, которые управляют EEPROM данных-констант и расположены в ОЗУ(RAM) соответственно по тем же адресам. Более подробно они будут рассмотрены далее.
Рис. 3. Структурная схема ОМК PIC16F84 (16C84)
3.7 Обозначение выводов и их функциональное назначение
Расположение и обозначение выводов ОМК PIC 16С84 полностью совпадает с PIC 16С71 за исключением того, что ножки RA0, RA1, RA2, RA3 в связи отсутствием АЦП представляют собой лишь двунаправленные линии ввода/вывода сигналов с ТТЛ уровнями.
3.8 Организация памяти данных (ОЗУ)
Область ОЗУ организована как 128х8, имеет также 2-е страницы с одинаковыми объемом (128 байт) и практически не отличается от памяти данных PIC 16С71 за исключением того, что на местах регистров ADCON, ADCON1, ADRES и ADRES2 в связи с отсутствием АЦП находятся соответственно регистры управления EEPROM данных-констант EEDATA (08h), EECON1 (88h), EEADR (09h), EECON2 (89h).
Все регистры PIC 16C84 (16F84), также как и во всех других ОМК семейства PIC, разделяются на две функциональные группы: специальные регистры и регистры общего назначения (РОН).
Регистры специального назначения используются для управления функциями микроконтроллера и могут быть разделены на два набора: регистры базовых функций и регистры периферийных устройств. Регистры базовых функций включают в себя регистр-переключатель косвенной адресации (INDF), программный счетчик (РС), представленный двумя регистрами PCL и PCLATH, регистр слова состояния (STATUS), регистр-указатель косвенной адресации (FSR), рабочий регистр (W), регистр прерываний (INTCON), а также регистр режимов работы или конфигурации предварительного делителя и таймера (OPTION). Регистры периферийных устройств включают в себя регистры ввода/вывода (RA-порт А и RB-порт В), регистры данных (EEDATA) и адреса (EEADR) памяти данных-констант, регистр таймера-счетчика (TMPO) и регистры управления конфигурацией портов ввода/вывода (TRISA и TRISB).
К ячейкам ОЗУ можно точно также как и в PIC 16С71 адресоваться прямо или косвенно, через регистр указатель FSR (04h). Это, кстати, относится и к EEPROM памяти данных-констант.
Долговременная память данных-констант EEPROM
Память данных-констант EEPROM позволяет прочитать и записать байт информации. При записи байта автоматически стирается предыдущее значение и записывается новое (стирание перед записью). Все эти операции производит встроенный автомат записи EEPROM. Содержимое ячеек этой памяти сохраняется при выключенном питании.
При считывании данных из памяти EEPROM необходимо записать требуемый адрес в EEADR регистр и затем установить бит RD EECON1<0> в единицу. Данные появятся в следующем командном цикле в регистре EEDATA и могут быть прочитаны. Данные в регистре EEDATA защелкиваются. Пример фрагмента программы считывания данных из памяти данных-констант EEPROM приведена ниже:
Считывание из памяти данных-констант
Bcf STATUS , RP0 ; Установка банка 0.
Movlw CONFIG_ADDR ;
Movwf EEADR ; Адрес чтения.
Bsf STATUS , RP0 ; Установка банка 1.
Bsf EECON1 , RD ; Чтение EEPROM.
Bcf STATUS , RP0 ; Установка банка 0.
Movf EEDATA , W ; Считанные данные W.
При записи в память EEPROM, необходимо сначала записать требуемый адрес в EEADR регистр и данные в EEDATA регистр. Затем выполнить специальную обязательную последовательность команд, производящую непосредственную запись:
Movlw 55h ;
Movwf EECON2 ; Запись 55 h.
Movlw AAh ;
Movwf EECON2 ; Запись AA h.
Bsf EECON1 , WR ; Установка бита WR,
; начало цикла записи.
Во время выполнения этого участка программы, все прерывания должны быть запрещены для точного выполнения временной диаграммы. Время записи - примерно 10мс. Фактическое время записи будет изменяться в зависимости от напряжения, температуры и индивидуальных свойств кристалла. В конце записи бит WR автоматически обнуляется, а флаг завершения записи EEIF, он же запрос на прерывание, устанавливается. Пример фрагмента программы записи в память данных-констант EEPROM приведена ниже:
; Запись в память данных-констант.
Bsf Status , RP0 ; Установка банка 1.
Bcf Intcon , GIE ; Запрет прерываний.
; Обязательая последовательность команд.
Movlw 55h ;
Movwf EECON2 ; Запись 55 h.
Movlw Aah ;
Movwf EECON2 ; Запись AA h.
Bsf EECON1, WR ; Установка бита WR,
; начало цикла записи.
;Bsf Intcon , GIE ; Разрешение прерываний.
Для предотвращения случайных записей в память данных предусмотрен специальный бит WREN в регистре EECON1. Рекомендуется держать бит WREN выключенным, кроме тех случаев, когда нужно обновить память данных. Более того, кодовые сегменты, которые устанавливают бит WREN и те, которые выполняют запись должны храниться на различных адресах, чтобы избежать случайного выполнения их обоих при сбое программы.
4. Разработка алгоритма работы устройства
Алгоритм работы устройства показан на рис. 4. После инициализации регистров микроконтроллера устанавливают пределы в текущих регистрах экстремальных значений. В регистры текущих максимальных температур записывается минимальная измеряемая термодатчиком температура (-55,0°С), а в регистры минимальных температур -- максимальная измеряемая температура (+99,9°С). При таких установках любое значение температуры, измеренное первым, будет записано в регистр как максимальных, так и минимальных температур, поскольку оно окажется заведомо больше -55,0° и заведомо меньше +99,9 °. Дальнейшие измеренные значения будут сравниваться с первой записанной температурой и, при необходимости, корректировать значения регистров максимума и минимума. Такие же предельные установки регистров выполняются каждый день в полночь после записи в память значении экстремальных температур прошедшего дня.
Вообще, термодатчик может измерять максимальную температуру до +125°, но, во-первых, таких температур наружного воздуха просто не бывает, а во-вторых, автором были использованы все 96 регистров общего назначения основного банка. Поэтому оказалось разумным остановиться на максимальной измеряемой температуре +99,9°.
По завершении предельных установок выполняется инициализация ЖКИ. При инициализации ЖКИ без опроса освобождения от цикла записи зачастую возникают затруднения с включением индикатора.
Далее выполняется проверка кнопок. Обычно при проверке кнопок при установке режима индикации выполняется загрузка регистров индикации, но в данном случае из-за большого числа регистров индикации устанавливаются только флаги режимов. Если установлен флаг текущего режима индикации, то далее выполняется вывод на индикацию.
Рис. 3. Алгоритм работы термометров с памятью
Если выполнять вывод на индикацию обычным способом, т.е. последовательным заполнением всех знакомест, то потребуется 32 регистра индикации, поэтому вывод на индикацию выполняется построчно. Поскольку при разработке программы был испытан дефицит регистров общего назначения, все текущие и экстремальные значения температур сохраняются в двоичном коде, а перед выводом на индикацию перекодируются в двоично-десятичный код, который сразу записывается в регистры индикации. После вывода на индикацию первой (верхней) строки значения второй строки перекодируются и записываются в те же регистры индикации, а затем -- выводятся на индикацию.
Для определения температуры с точностью 0,1 градуса термодатчиком DS18B20 необходимо время 0,75 с, поэтому каждое измерение одним термодатчиком выполняется один раз в две секунды. Измерение первым термодатчиком происходит каждую четную, а вторым -- каждую нечетную секунду. На рис. 3 измерение двух температур показано параллельно, хотя в действительности они выполняются последовательно. После каждого измерения температуры происходит проверка кнопок и вывод на индикацию.
После каждого принятого от термодатчика значения температуры выполняется сравнение текущей температуры с температурой, сохраненной в регистрах максимальной и минимальной температуры. Сравнение температур начинается со сравнения знаков измеренного и сохраненного значения. После сравнения знаков, при необходимости, сравниваются значения измеренных и сохраненных величин. Алгоритм сравнения знаков и выполняемые действия в зависимости от результата сравнения можно понять, рассмотрев табл. 1.
Например, при сравнении на максимальное значение, если знаки сохраненного и измеренного значения -- положительны, а измеренное значение больше сохраненного, то оно переписывается в регистр максимального значения. При сравнении на минимальное значение и аналогичной разности измеренного и сохраненного значений запись в регистры минимума выполняется, если оба знака -- отрицательные. Если при сравнении на максимум сохраненный знак -- положительный, а измеренный -- отрицательный, то явно измеренное значение температуры будет меньше сохраненного значения, поэтому нет смысла его сохранять. Ситуация с частой сменой знаков измеренной и сохраненной температурами возможна при измерении температуры вблизи нуля.
Таблица 1. Сопоставление результатов сравнения и действий
Сохр. Мах |
+ |
+ |
- |
- |
|
Измеренное |
+ |
- |
+ |
- |
|
Действие |
И>С =3 |
нет записи |
запись |
и<с = з |
|
Сохр. Min |
+ |
+ |
- |
- |
|
Измеренное |
+ |
- |
+ |
- |
|
Действие |
и <с = з |
запись |
нет записи |
И>С =3 |
Знаки сохраненных экстремальных температур сохраняются с помощью флагов регистра, но использовать их для сравнения неудобно. По этой причине для сравнения используются значения знаков для вывода на индикацию (в кодировке ASCII минус 0x30). Так, например, знак "-" обозначен числом 253, а "+" -- 251. При таком обозначении легко определить равенство или неравенство знаков и, воспользовавшись табл. 1, выполнить соответствующие действия.
Если термодатчик отключен от микроконтроллера, то на индикаторе высветится температура -00,0, а поскольку такой температуры не существует, то легко определить неисправность термодатчика.
Если при проверке кнопок окажется, что установлен режим просмотра, то вначале анализируется установленная дата. Если установлена текущая (сегодняшняя) дата, то в регистры индикации считываются текущие экстремальные значения, а если установлено прошедшее число, то данные считываются из памяти EEPROM.
При выборке из памяти значения всех 16 регистров считываются в регистры записи/считывания, а выделенный знак записывается в регистры индикации. Регистры записи/считывания являются промежуточными между регистрами текущих и экстремальных значений при записи в регистры индикации.
Для записи и считывания в энергонезависимую память экстремальных значений одного дня требуется 16 регистров. При объеме памяти 128x8 можно сохранить данные за 8 дней (128/16 = 8). Запись для одного термодатчика выполняется в следующей последовательности.
1. Часы максимума.
2. Минуты максимума.
3. Градусы максимума.
4. Десятые доли градусов максимума.
5. Часы минимума.
6. Минуты минимума.
7. Градусы минимума.
8. Десятые доли градусов минимума.
Следующие восемь регистров аналогично заполняются данными для второго термодатчика. Знаки температур дописываются в седьмой разряд регистров градусов. При этом единица соответствует знаку.
Как видно из формата записи, для уменьшения числа регистров записи число и месяц в память не записываются. При нажатии кнопки "Просмотр" на единицу уменьшается число в регистре индикации (а при необходимости -- и месяц), и на 16 уменьшается адрес считывания из памяти. Если весь объем памяти просмотрен, то просмотр начинается с адреса вчерашнего дня. Если устройство не выключается, то значения дат просмотра отсчитываются от текущей даты.
При выключении устройства энергонезависимая память сохранит записанные значения без привязки к дате. При отключении питания счетчики записи/считывания обнуляются, и считывание начнется с предыдущего адреса, т. е. 112 (128 -16=112), а дата не будет соответствовать дате записи. Например, если записаны данные одного вчерашнего числа, и выключалось напряжение питания, то эти данные будут считаны как данные недельной давности. Если память еще не заполнена, то на индикатор выводятся все нули (кроме даты, конечно).
В режиме установки считывание из памяти не выполняется. В режимах установки и просмотра на индикатор выводится мигающий курсор. Для того чтобы мигание курсора было хорошо различимо, оно происходит с периодом в две секунды. В первую секунду на индикатор выводятся значения регистров, а во вторую -- курсор в выбранном разряде. Если при инициализации ЖКИ разрешить мигание курсора, то вместе с курсором включатся все сегменты выбранного разряда, что не очень удобно при установке.
Как и в текущем режиме, в режимах просмотра и установки перед выводом на индикацию необходимые значения построчно перекодируются в двоично-десятичный код и переписываются в регистры индикации. Запись в регистры экстремальных значений происходит, когда измеренное значение превосходит сохраненное или когда они равны, поэтому, анализируя записанные в память значения, необходимо помнить, что в память записано время последней зафиксированной температуры.
5. Ассемблирование
Для ассемблирования спользуется макpоассемблеp MPASM, он содеpжит все необходимые нам возможности. MPASM входит в пакет программ Microchip MPLAB фирмы Microchip Technology.
В 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 должен был выдать сообщение "Assembly Successful", означающее, что ошибок обнаpужено не было. Файл ошибок не должен был создаться.
Листинг программы и объектный файл приведены в Приложении А.
6. Описание функциональных узлов МПС и алгоритма их
взаимодействия
В проектируемом устройстве можно выделить следующие функциональные блоки: панель управления, содержащая пять кнопок; жидкокристаллический индикатор, на котором воспроизводится информация (дата, время, температура); термодатчики, благолдаря которым производится измерение температуры; стабилизатор напряжения, служит для подачи стабильного напряжения на МК; источник питания, состоящий из внутреннего источника и внешнего. Функциональная схема электронного термометра приведена на рис. 4.
Рис. 4. Функциональная схема электронного термометра
7. Описание выбора элементной базы и работы принципиальной
схемы
Принципиальная схема устройства показана на рис. 5. Резистором R5 регулируют контрастность изображения на индикаторе. Элементы резервного питания можно составить из трех элементов типа AAA. Средний потребляемый ток от элементов питания в текущем режиме не превышает 3 мА.
Принципиальная схема электронного термометра выполнена в САПР Accel Eda (Рис. 5).
Рис.5. Принципиальная схема электронного термометра в Accel EDA.
Принципиальная схема электронного термометра приведена в Приложении Б.
Выбор элементной базы основан на выборе элементов согласующихся с микроконтроллером. Основными элементами схемы являются термодатчики, которые хорошо согласуются с микроконтроллером. Термодатчики DS1820 имеют следующие технические характеристики:
* индивидуальный 64-битный идентификационный номер;
* напряжение питания от +3 до +5,5 В;
* измеряемая температура от -55 до +125°С;
* погрешность измерения температуры в диапазоне -Ю...+85°С не более 0,5°С;
* в остальном диапазоне температур погрешность измерения не превышает 2°С;
* информация о температуре выдается 9-битным кодом;
* установка пороговых значений температуры по максимуму и минимуму;
* максимальное время преобразования температуры в код 750 мс;
* возможность питания от высокого уровня шины данных;
* термодатчики не требуют индивидуальной настройки при замене. Термодатчик типа DS18B20 отличается от DS1820 способностью измерять температуру с четырьмя уровнями погрешности -- 0,5; 0,25; 0,0625°С. При этом максимальное время измерения для каждого уровня составляет соответственно 93,75; 187,5; 375; 750 мс. Необходимая погрешность измерения задается при инициализации микроконтроллерного термодатчика.
Термодатчики выпускают в двух типах корпусов: ТО-92 и SOIC.
Рис.6. Схема подключения термодатчика к микроконтроллеру
Что же касается жидкокристаллических индикаторов. Для управления жидкокристаллическими индикаторами необходимо иметь отрицательный источник питания и организовывать подачу трехуровневых управляющих импульсов на каждый сегмент. При малом числе сегментов (например, в часах) эта задача решаема, а для большого числа сегментов была разработана модульная система. Суть модульной системы заключается в том, что ЖКИ комплектуется модулем драйвера -- контроллера. Драйверы каждый изготовитель разрабатывает по своей схеме и технологии. Но для взаимозаменяемости ЖК-дисплеев все изготовители негласно выпускают драйверы с системой команд, совместимых с драйверами типа HD44780 фирмы Hitachi. Разработчику в принципе неважно, какой драйвер внутри модуля, главное, чтобы работал «правильно».
Алфавитно-цифровые жидкокристаллические модули с драйверами -- контроллерами принято называть ЖК-дисплеями или LCD-дисплеями. Модуль ЖК-дисплея состоит из печатной платы, на которой установлен драйвер -- контроллер в корпусе или без корпуса (залитый компаундом), и жидкокристаллического индикатора, который через контактную резину прижат металлической рамкой к плате.
Остается добавить что мы выбрали двухрядный индикатор, для которого таблица кодов приведена в Таблице 7.
Основные характеристики драйвера HD44780:
Диапазон питающих напряжений для логики 2,7...5,5 В.
Диапазон питающих напряжений для выходных формирователей З...П В.
Поддержка форматов знаков 5 х 8 и 5 х 10.
Встроенный генератор.
8- или 4-разрядная шина данных для связи с микроконтроллером. Максимальная частота обмена по шине данных -- 2 МГц. Объем дисплейного ОЗУ 80 х 8 (80 символов). Встроенный фиксированный знакогенератор на 9920 бит. Пользовательский загружаемый знакогенератор 64 х 8. Программируемый мультиплекс 1:8, 1:11, 1:16.
ЖК-дисплеи выпускают с различным числом строк (1--4) и знакомест (8, 10, 16, 20, 24, 30, 32, 40) в строке и различными их размерами. Каждое знакоместо содержит 5x8 (40) точек, из которых формируются цифры, буквы и символы (рис. 58). Все символы записаны в ПЗУ знакогенератора по своим адресам. Крайние левые цифры на рис. 58 несут информацию о младшем полубайте адреса знакогенератора, а верхние -- о старшем полубайте. Например, для отображения на индикаторе буквы «3» необходимо послать в ЖК-дисплей адрес 4Ah. По этому адресу в знакогенераторе будет выбрана буква и отображена в необходимом знакоместе. ЖК-дисплеи, в которых последняя буква маркировки «R» (русифицировано), имеют в составе знакогенератора кириллицу. Это не касается ЖК-дисплеев отечественных производителей.
8. Работа с устройством
После подачи напряжения питания на индикаторе появится изображение, аналогичное представленному на рис. 6, но с числом и месяцем, равным 01 и нулевыми значениями времени. Две крайние слева цифры в верхнем ряду показывают текущую дату, а в нижнем ряду -- текущий месяц. Далее в верхнем ряду отображено текущее время в часах и минутах с двоеточием, которое мигает с периодом в две секунды.
Рис.6. Индикация после подачи напряжения питания
Крайние справа значения в верхнем ряду показывают текущую температуру с первого термодатчика, а в нижнем ряду -- со второго термодатчика. После стрелки указан номер термодатчика.
После нажатия кнопки "Режим" и удержания ее не менее трех секунд индикатор перейдет в режим установки времени и даты рис.7.
Рис. 7. Режим установки времени и даты
Под разрядом десятков часов будет мигать курсор с периодом в две секунды. После нажатия кнопки "Разряд" курсор будет перемещаться слева направо. Кнопкой "Установка" устанавливают необходимые текущие значения времени и даты. Формат записи даты: "число-месяц". При установке удерживать нажатыми кнопки "Разряд" и "Установка" следует не менее одной секунды.
При нажатии кнопки "Сброс" значения минут и секунд устанавливаются в ноль, что необходимо при установке времени по сигналам точного времени. Все кнопки срабатывают после их отпускания.
При следующем нажатии кнопки "Режим" на индикаторе установится режим просмотра (рис. 8).
Рис. 8. Режим просмотра
Первыми отображены время и температура для текущей даты. Под разрядом единиц числа будет мигать курсор. Стрелка указывает на номер термодатчика, по которому показаны экстремальные значения. В верхнем ряду отображены время и зафиксированная максимальная температура, а в нижнем -- время и минимальная температура. Кнопкой "Просмотр 1-2" выбирают показания индикатора для первого или второго термодатчика. Если кнопку "Просмотр 1-2" удерживать нажатой, то индикация будет непрерывно изменяться через две секунды.
После каждого нажатия кнопки "Просмотр" отображаемое число уменьшается на единицу, а на индикаторе появятся значения времени и температур, записанных в памяти EEPROM.
Нажатием кнопки "Режим" переходят в текущий режим индикации. При переходе из режима просмотра к текущему режиму кнопку "Режим" необходимо удерживать четыре секунды. Отсчет времени при удержании кнопки удобно вести по миганию курсора.
Важно запомнить, что в режиме просмотра и установки измерение температуры не производится, поэтому рабочим режимом нужно считать текущий режим индикации.
ЗАКЛЮЧЕНИЕ
В данном курсовом проекте разработано устройство - электронный термометр. Разработана схема электрическая принципиальная этого устройства и программа для микроконтроллера. В результате ассемблирования получена прошивка программы для памяти микроконтроллера. Применение микроконтроллера позволило упростить принципиальную схему и расширить функциональные возможности микроконтроллера, так как для изменения функций устройства достаточно внести изменения в программу микроконтроллера.
СПИСОК ЛИТЕРАТУРЫ
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с.
ПРИЛОЖЕНИЕ А
Листинг программы и объектный файл
;
; 2 ТЕРМОМЕТРА С ПАМЯТЬЮ МАКСИМУМА И МИНИМУМА.
; ТОЧНОСТЬ ИЗМЕРЕНИЯ ТЕМПЕРАТУРЫ - 0,1 ГРАДУС.
; ДАТЧИКИ ТЕМПЕРАТУРЫ - DS18B20,
; ПАМЯТЬ НА 8 ДНЕЙ.
; ИНДИКАЦИЯ - 16х2 ЖКИ.
; РАЗРАБОТАЛ САХНЮК АЛЕКСАНДР ЮРЬЕВИЧ
; ДЛЯ СВОБОДНОГО ИСПОЛЬЗОВАНИЯ
; г.СЕВЕРОДОНЕЦК ЛУГАНСКОЙ
; ПРОГРАММА = MAMIN.ASM
; ВЕРСИЯ: 24-01-06.
; АССЕМБЛЕР И ОТЛАДЧИК: MPLAB IDE, ВЕРСИЯ: 5.70.40.
;
LIST P=16F628
#INCLUDE P16F628.INC
__CONFIG 3F01H
;======================================================
; ИСПОЛЬЗУЕТСЯ КВАРЦ ЧАСТОТОЙ 4,096 MГЦ.
; КОЭФФИЦИЕНТ ДЕЛЕНИЯ ПРЕДДЕЛИТЕЛЯ РАВЕН 16, ЧТО ВМЕСТЕ
; С TMR0 (256) И ЦИКЛОМ, РАВНЫМ 4 ТАКТАМ, ДЕЛИТЕЛЕМ НА 125, 2
; ДАЕТ НА ВЫХОДЕ 1 СЕКУНДУ (4х16х256x250=4096000).
;======================================================
; RB4-RB7 - ДАННЫЕ LCD,
; RB2 - RS, RB3 - E,
; RB1 - КНОПКА "РАЗРЯД".
; RB0 - КНОПКА "РЕЖИМ".
; RA0 - ВХОД/ВЫХОД НА DS18B20 - 2.
; RA4 - ВХОД/ВЫХОД НА DS18B20 - 1.
; RA5 - ПРОСМОТР 1-2. RB5 - ПРОСМОТР -1. RB6 - УСТАНОВКА +.
;==============================================
; РЕГИСТРЫ ОБЩЕГО НАЗНАЧЕНИЯ.
;==============================================
CBLOCK H'20'
CEK;СЕКУНДЫ ДВОИЧНЫЕ.
MIN;МИНУТЫ ДВОИЧНЫЕ.
HOU;ЧАСЫ ДВОИЧНЫЕ.
MINL;ЕДИНИЦЫ МИНУТ.
MINH;ДЕСЯТКИ МИНУТ.
HOUL;ЕДИНИЦЫ ЧАСОВ.
HOUH;ДЕСЯТКИ ЧАСОВ.
TEMP;ВРЕМЕННЫЙ.
COUN;СЧЕТЧИК БИТОВ, СЧЕТЧИК ПЕРЕСЧЕТА.
LSB;РЕГИСТР ДАННЫХ DS.
LSBH;СТАРШИЙ РЕГИСТР СЧИТЫВАНИЯ.
MCK;МИЛЛИСЕКУНД.
WTEMP;ВРЕМЕННЫЙ.
STEMP;ВРЕМЕННЫЙ.
FTEMP;ВРЕМЕННЫЙ.
REID;РЕЖИМ ИНДИКАЦИИ.
KYPC;КУРСОРА.
SOT2;ЗНАК 2.
SOT2X;ЗНАК 2 MAX.
SOT2N;ЗНАК 2 MIN.
EDI2;ЕДИНИЦЫ 2.
DES2;ДЕСЯТКИ 2.
DST2;ДЕСЯТЫЕ 2.
SOT1;ЗНАК 1.
SOT1X;ЗНАК 1 MAX.
SOT1N;ЗНАК 1 MIN.
EDI1;ЕДИНИЦЫ 1.
DES1;ДЕСЯТКИ 1.
DST1;ДЕСЯТЫЕ 1.
DHU;ДНИ ДВОИЧНЫЕ.
DHUE;ЕДИНИЦЫ ДНЕЙ.
DHUD;ДЕСЯТКИ ДНЕЙ.
MEC;МЕСЯЦ ДВОИЧНЫЙ.
MECE;ЕДИНИЦЫ МЕСЯЦА.
MECD;ДЕСЯТКИ МЕСЯЦА.
FLAG;
FLAG1;
FLAG2;
MECDI;ДЕСЯТКИ МЕСЯЦА ИНДИКАЦИИ.
MECEI;ЕДИНИЦЫ МЕСЯЦА ИНДИКАЦИИ.
DHUDI;ДЕСЯТКИ ДНЕЙ ИНДИКАЦИИ.
DHUEI;ЕДИНИЦЫ ДНЕЙ ИНДИКАЦИИ.
DHUZ;ДВОИЧНЫЕ ДНИ ЗАПИСИ/СЧИТЫВАНИЯ.
MECZ;ДВОИЧНЫЙ МЕСЯЦ ЗАПИСИ/СЧИТЫВАНИЯ.
MIN1X;ЕДИНИЦЫ МИНУТ 1.
MIN1N;ДЕСЯТКИ МИНУТ 1.
HOU1X;ЕДИНИЦЫ ЧАСОВ 1.
HOU1N;ДЕСЯТКИ ЧАСОВ 1.
MIN2X;ЕДИНИЦЫ МИНУТ 2.
MIN2N;ДЕСЯТКИ МИНУТ 2.
HOU2X;ЕДИНИЦЫ ЧАСОВ 2.
HOU2N;ДЕСЯТКИ ЧАСОВ 2.
COUZ;СЧЕТЧИК ЗАПИСИ.
COUE;СЧЕТЧИК СЧИТЫВАНИЯ.
COYC;СЧЕТЧИК УСТАНОВКИ ДНЕЙ ПРОСМОТРА.
LSB1X;СОХРАНЕННОЕ МАКСИМАЛЬНОЕ 1 ДАТЧИКА.
LSB1N;СОХРАНЕННОЕ МИНИМАЛЬНОЕ 1 ДАТЧИКА.
LSB2X;СОХРАНЕННОЕ МАКСИМАЛЬНОЕ 2 ДАТЧИКА.
LSB2N;СОХРАНЕННОЕ МИНИМАЛЬНОЕ 2 ДАТЧИКА.
DST1X;СОХРАНЕННОЕ МАКСИМАЛЬНОЕ ДЕСЯТЫХ 1 ДАТЧИКА.
DST1N;СОХРАНЕННОЕ МИНИМАЛЬНОЕ ДЕСЯТЫХ 1 ДАТЧИКА.
DST2X;СОХРАНЕННОЕ МАКСИМАЛЬНОЕ ДЕСЯТЫХ 2 ДАТЧИКА.
DST2N;СОХРАНЕННОЕ МИНИМАЛЬНОЕ ДЕСЯТЫХ 2 ДАТЧИКА.
ENDC
R1EQU60H;РЕГИСТРЫ ИНДИКАЦИИ.
R2EQU61H;
R3EQU62H;
R4EQU63H;
R5EQU64H;
R6EQU65H;
R7EQU66H;
R8EQU67H;
R9EQU68H;
R10EQU69H;
R11EQU6AH;
R12EQU6BH;
R13EQU6CH;
R14EQU6DH;
R15EQU6EH;
R16EQU6FH;
HOUZ1XEQU70H;РЕГИСТРЫ ДЛЯ ЗАПИСИ/СЧИТЫВАНИЯ, ЧАСЫ ДВОИЧНЫЕ 1 MAX.
MINZ1XEQU71H;МИНУТЫ ДВОИЧНЫЕ 1 MAX.
LSBZ1XEQU72H;СОХРАНЕННОЕ МАКСИМАЛЬНОЕ 1 ДАТЧИКА.
DSTZ1XEQU73H;СОХРАНЕННОЕ МАКСИМАЛЬНОЕ ДЕСЯТЫХ 1 ДАТЧИКА.
HOUZ1NEQU74H;ЧАСЫ ДВОИЧНЫЕ 1 MIN.
MINZ1NEQU75H;МИНУТЫ ДВОИЧНЫЕ 1 MIN.
LSBZ1NEQU76H;СОХРАНЕННОЕ МИНИМАЛЬНОЕ 1 ДАТЧИКА.
DSTZ1NEQU77H;СОХРАНЕННОЕ МИНИМАЛЬНОЕ ДЕСЯТЫХ 1 ДАТЧИКА.
HOUZ2XEQU78H;РЕГИСТРЫ ЗАПИСИ/СЧИТЫВАНИЯ, ЧАСЫ ДВОИЧНЫЕ 2 MAX.
MINZ2XEQU79H;МИНУТЫ ДВОИЧНЫЕ 2 MAX.
LSBZ2XEQU7AH;СОХРАНЕННОЕ МАКСИМАЛЬНОЕ 2 ДАТЧИКА.
DSTZ2XEQU7BH;СОХРАНЕННОЕ МАКСИМАЛЬНОЕ ДЕСЯТЫХ 2 ДАТЧИКА.
HOUZ2NEQU7CH;ЧАСЫ ДВОИЧНЫЕ 2 MIN.
MINZ2NEQU7DH;МИНУТЫ ДВОИЧНЫЕ 2 MIN.
LSBZ2NEQU7EH;СОХРАНЕННОЕ МИНИМАЛЬНОЕ 2 ДАТЧИКА.
DSTZ2NEQU7FH;СОХРАНЕННОЕ МИНИМАЛЬНОЕ ДЕСЯТЫХ 2 ДАТЧИКА.
;==============================================
; ОПРЕДЕЛЕНИЕ БИТОВ СОСТОЯНИЯ РЕГИСТРОВ ФЛАГОВ.
;==============================================
;FLAG
;0-> ЗНАК 1 МАКС.
;1-> ЗНАК 1 МИН.
;2-> КНОПКИ "УСТАНОВКА -".
;3-> КНОПКИ "УСТАНОВКА +".
;4-> КНОПКИ "РЕЖИМ".
;5-> КНОПКИ "РАЗРЯД".
;6-> ЧЕРЕДОВАНИЯ КУРСОРА И ИНДИКАЦИИ.
;7-> ДЕЛИТЕЛЬ НА 2 (1 CEK).
;FLAG1
;0-> УСТАНОВКИ.
;1-> ПРОСМОТРА ТЕМПЕРАТУРЫ: 1>2, 0>1.
;2-> ЗАПРЕТ ИНДИКАЦИИ.
;3-> ЗНАКА. 1-МИНУС.
;4-> НАЧАЛЬНАЯ ПАУЗА 1.
;5-> НОЛЬ, КНОПКИ "ПРОСМОТР 1-2".
;6-> НАЧАЛЬНАЯ ПАУЗА 2.
;FLAG2;ФЛАГ ИНДИКАЦИИ.
;0-> ТЕКУЩИЕ ДАТА, ВРЕМЯ, ТЕМПЕРАТУРА.
;1-> УСТАНОВКА ЧАСОВ, ДАТЫ.
;2-> РЕЖИМ ПРОСМОТРА ТЕМПЕРАТУРЫ.
;3-> ЗНАК 2 МАКС.
;4-> ЗНАК 2 МИН.
;5-> ФЛАГ ВЫПОЛНЕННОЙ УСТАНОВКИ МИНУС.
;6-> УСТАНОВКИ СЧЕТЧИКА ДНЕЙ ПРОСМОТРА.
;=======================================
DS2EQU0;ВЫХОД DS2.
DS1EQU4;ВЫХОД DS1.
RSEQU2;КОМАНДА/ДАННЫЕ.
EEQU3;СИНХРОНИЗАЦИЯ.
YCPLEQU6;УСТАНОВКА ПЛЮС.
YCMIEQU5;УСТАНОВКА МИНУС.
PAZEQU1;РАЗРЯД.
PEJEQU0;РЕЖИМ.
HOLEQU5;СБРОС.
;=======================================
; 1. ПУСК.
;======================
ORG 0
GOTOINIT
ORG 4
GOTOPRER
;=========================================
; 2. ПЕРЕВОД ДОЛЕЙ ГРАДУСА С ОКРУГЛЕНИЕМ.
;=========================================
DESATI
ADDWFPCL,1;
RETLW.0;0
RETLW.1;1
RETLW.1;2
RETLW.2;3
RETLW.3;4
RETLW.3;5
RETLW.4;6
RETLW.4;7
RETLW.5;8
RETLW.6;9
RETLW.6;10
RETLW.7;11
RETLW.7;12
RETLW.8;13
RETLW.9;14
RETLW.9;15
;============================
; 3. ЗАГРУЗКА ЧИСЕЛ В МЕСЯЦЕ.
;============================
DAYMON
ADDWF PCL,F ;
NOP ;0
RETLW .32 ;1-ЯНВАРЬ
RETLW .29 ;2-ФЕВРАЛЬ
RETLW .32 ;3-МАРТ
RETLW .31 ;4-АПРЕЛЬ
RETLW .32 ;5-МАЙ
RETLW .31 ;6-ИЮНЬ
RETLW .32 ;7-ИЮЛЬ
RETLW .32 ;8-АВГУСТ
RETLW .31 ;9-СЕНТЯБРЬ
RETLW .32 ;10-ОКТЯБРЬ
RETLW .31 ;11-НОЯБРЬ
RETLW .32 ;12-ДЕКАБРЬ
;=======================================
; 4. ВЫБОР РЕЖИМА ИНДИКАЦИИ.
;=======================================
VUBOR
BTFSSPORTB,PEJ;ЕСЛИ КНОПКА НАЖАТА,
RETURN;ТО ВЫБОРА НЕТ.
BCFFLAG,4;СБРОС ФЛАГА РЕЖИМА.
MOVFWREID;ПО НОМЕРУ
ADDWFPCL,1;ВЫБИРАЕМ ИНДИКАЦИЮ.
GOTOINDT;ТЕКУЩАЯ.
GOTOINDYC;УСТАНОВКА ДАТЫ, ЧАСОВ.
GOTOINPRO;ПРОСМОТР.
INDT
CALLREGIN;ВОССТАНОВИМ РЕГИСТРЫ.
BTFSCFLAG2,0;ЕСЛИ УСТАНОВКИ СДЕЛАНЫ РАНЕЕ,
RETURN;ТО ВЕРНЕМСЯ.
BCFFLAG2,1;СБРОСИМ: УСТАНОВКУ ЧАСОВ,
BCFFLAG2,2;ПРОСМОТР,
BCFFLAG1,0;ОБЩУЮ УСТАНОВКУ,
BCFFLAG2,6;СЧЕТЧИКА ДНЕЙ,
BCFFLAG2,5;ВЫПОЛНЕННОЙ УСТАНОВКИ.
CALLZHAKCOX;ВОССТАНОВИМ ЗНАЧЕНИЯ ИНДИКАЦИИ.
BSFFLAG2,0;УСТАНОВИМ ТЕКУЩУЮ ИНДИКАЦИЮ.
RETURN
INDYC
CALLREGIN;ВОССТАНОВИМ ЗНАЧЕНИЯ ДАТЫ.
BTFSCFLAG2,1;ЕСЛИ УСТАНОВКИ СДЕЛАНЫ РАНЕЕ,
RETURN;ТО ВЕРНЕМСЯ.
BSFFLAG1,0;УСТАНОВКА.
BCFFLAG2,0;СБРОСИМ: ТЕКУЩУЮ ИНДИКАЦИЮ,
BCFFLAG2,2;ПРОСМОТР.
CLRFKYPC;ОБНУЛИМ КУРСОР.
BSFFLAG2,1;УСТАНОВКА ДАТЫ, ЧАСОВ.
RETURN
INPRO
BTFSCFLAG2,2;ЕСЛИ УСТАНОВКИ СДЕЛАНЫ РАНЕЕ,
GOTO$+6;ТО ПРОВЕРИМ КНОПКУ.
MOVLW.8;УСТАНОВИМ КУРСОР.
MOVWFKYPC;
BCFFLAG2,0;СБРОСИМ: ТЕКУЩУЮ ИНДИКАЦИЮ,
BCFFLAG2,1;УСТАНОВКУ ДАТЫ, ЧАСОВ.
BSFFLAG2,2;УСТАНОВИМ РЕЖИМ ПРОСМОТРА.
BTFSCFLAG1,5;ЕСЛИ КНОПКА ПРОСМОТРА 1-2 БЫЛА НАЖАТА РАНЕЕ,
GOTO$+5;ТО ИДЕМ НА УСТАНОВКУ ФЛАГА.
BTFSSPORTA,HOL;ЕСЛИ КНОПКА НАЖАТА,
BSFFLAG1,5;УСТАНОВИМ ФЛАГ КНОПКИ.
BTFSSPORTA,HOL;ПОКА КНОПКА НАЖАТА,
RETURN;УСТАНОВКИ НЕТ.
BTFSSFLAG1,5;ЕСЛИ КНОПКА ПРОСМОТРА 1-2 БЫЛА НАЖАТА РАНЕЕ,
RETURN;
BCFFLAG1,5;СБРОСИМ ФЛАГ КНОПКИ.
BTFSCFLAG1,1;
GOTO$+3;
BSFFLAG1,1;ИЗМЕНИМ СОСТОЯНИЕ ФЛАГА ПРОСМОТРА
RETURN
BCFFLAG1,1;НА ПРОТИВОПОЛОЖНОЕ.
RETURN
;=======================================
; 5. ВЫБОР РАЗРЯДА УСТАНОВКИ.
;=======================================
YCTAL
BTFSSPORTB,YCPL;ЕСЛИ КНОПКА ПЛЮС НАЖАТА,
RETURN;ТО ВЫБОРА НЕТ.
BCFFLAG,3;СБРОС ФЛАГА РЕЖИМА.
BTFSCFLAG2,2;ПРИ ПРОСМОТРЕ
RETURN;КНОПКА ПЛЮС НЕ РАБОТАЕТ.
BCFFLAG,2;СБРОС ФЛАГА РЕЖИМА.
BCFFLAG1,2;ИНДИКАЦИЯ РАЗРЕШЕНА.
MOVFWKYPC;ПО КУРСОРУ
ADDWFPCL,1;НАХОДИМ РАЗРЯД УСТАНОВКИ.
GOTOYC0;ДЕСЯТКИ ЧАСОВ.
GOTOYC1;ЕДИНИЦЫ ЧАСОВ.
GOTOYC2;ДЕСЯТКИ МИНУТ.
GOTOYC3;ЕДИНИЦЫ МИНУТ.
GOTOYC4;ДЕСЯТКИ ДНЕЙ.
GOTOYC5;ЕДИНИЦЫ ДНЕЙ.
GOTOYC6;ДЕСЯТКИ МЕСЯЦА.
GOTOYC7;ЕДИНИЦЫ МЕСЯЦА.
YCTAM
BTFSCFLAG2,1;ЕСЛИ УСТАНОВКА ДАТЫ, ЧАСОВ,
RETURN;ТО ВЫБОРА НЕТ.
BTFSSPORTB,YCMI;ЕСЛИ КНОПКА МИНУС НАЖАТА,
RETURN;ТО ВЫБОРА НЕТ.
BCFFLAG,2;
BCFFLAG1,2;ИНДИКАЦИЯ РАЗРЕШЕНА.
GOTOYC8M;ЕДИНИЦЫ ДНЕЙ ПРОСМОТРА.
;=========================================
; 6. ИНДИКАЦИЯ КУРСОРА.
;=========================================
JEKYC
MOVLW.14;РАЗРЕШАЕМ МИГАНИЕ КУРСОРА.
CALL JEKOM;ЗАПИШЕМ КОМАНДУ.
CALLJEKYK;НА ВЫБОР МИГАЮЩЕГО РАЗРЯДА.
CALL JEKOM;ЗАПИШЕМ КОМАНДУ.
BSFFLAG,6;ВЫПОЛНЕНА ИНДИКАЦИЯ КУРСОРА.
RETURN
JEKYK
MOVFWKYPC;РЕГИСТР КУРСОРА - В РАБОЧИЙ.
ADDWFPCL,1;
RETLW0x85;ДЕСЯТКИ ЧАСОВ.
RETLW0x86;ЕДИНИЦЫ ЧАСОВ.
RETLW0x88;ДЕСЯТКИ МИНУТ.
RETLW0x89;ЕДИНИЦЫ МИНУТ.
RETLW0xC5;ДЕСЯТКИ ДНЕЙ.
RETLW0xC6;ЕДИНИЦЫ ДНЕЙ.
RETLW0xC8;ДЕСЯТКИ МЕСЯЦА.
RETLW0xC9;ЕДИНИЦЫ МЕСЯЦА.
RETLW0x81;ЕДИНИЦЫ ДНЕЙ.
;======================================================
; 7. ТАБЛИЦЫ ПЕРЕВОДА ДЕСЯТКОВ В ДВОИЧНОЕ ЧИСЛО.
;======================================================
DEBIN
ADDWFPCL,1;
RETLW.0
RETLW.10
RETLW.20
RETLW.30
RETLW.40
RETLW.50
;===============================================
; 8. ВОССТАНОВЛЕНИЕ ЗНАКА ПОСЛЕ ПРОСМОТРА.
;===============================================
ZHAKCOX
MOVLW.251;ПО УМОЛЧАНИЮ ЗНАК ПЛЮС.
MOVWFSOT1X;
BTFSSFLAG,0;ЕСЛИ ИНАЧЕ,
GOTO$+3;ТО УСТАНОВИМ
MOVLW.253;МИНУС.
MOVWFSOT1X;
MOVLW.251;ПО УМОЛЧАНИЮ ЗНАК ПЛЮС.
MOVWFSOT1N;
BTFSSFLAG,1;ЕСЛИ ИНАЧЕ,
GOTO$+3;ТО УСТАНОВИМ
MOVLW.253;МИНУС.
MOVWFSOT1N;
MOVLW.251;ПО УМОЛЧАНИЮ ЗНАК ПЛЮС.
MOVWFSOT2X;
BTFSSFLAG2,3;ЕСЛИ ИНАЧЕ,
GOTO$+3;ТО УСТАНОВИМ
MOVLW.253;МИНУС.
MOVWFSOT2X;
MOVLW.251;ПО УМОЛЧАНИЮ ЗНАК ПЛЮС.
MOVWFSOT2N;
BTFSSFLAG2,4;ЕСЛИ ИНАЧЕ,
GOTO$+3;ТО УСТАНОВИМ
MOVLW.253;МИНУС.
MOVWFSOT2N;
RETURN
;=================================================
; 9. УСТАНОВКА КУРСОРА (ВЫБОР РАЗРЯДА УСТАНОВКИ).
;=================================================
KYPCY
BTFSCFLAG2,2;ЕСЛИ ИДЕТ ПРОСМОТР,
RETURN;УСТАНОВКА НЕ МЕНЯЕТСЯ.
BTFSSFLAG2,1;УСТАНОВКА ВОЗМОЖНА,
RETURN;ЕСЛИ ИНДИКАЦИЯ УСТАНОВКИ ЧАСОВ.
BTFSSPORTB,PAZ;ПРИ НАЖАТОЙ КНОПКЕ
RETURN;УСТАНОВКА НЕ МЕНЯЕТСЯ.
BCFFLAG,5;СБРОСИМ ФЛАГ.
INCFKYPC,1;ПРИБАВИМ ЕДИНИЦУ В КУРСОР.
MOVLW.8;НЕ БОЛЕЕ 7.
SUBWFKYPC,0;
SKPNC;
CLRFKYPC;ИНАЧЕ ОБНУЛИМ КУРСОР.
RETURN;
;=========================================
; 10. ИНИЦИАЛИЗАЦИЯ DS2.
;=========================================
INIDS2
CALLHYL2;ПОСЫЛ ИМПУЛЬСА ОБНУЛЕНИЯ.
MOVLW0xCC;ПРОПУСК НОМЕРА.
CALLPOSIL2;ПОШЛЕМ.
MOVLW0x4E;РАЗРЕШАЕМ ЗАПИСЬ УСТАНОВКИ 0,1 ГРАДУСА.
CALLPOSIL2;ПОШЛЕМ.
MOVLW0x7D;ВЕРХНИЙ ПРЕДЕЛ +125. МОЖНО ПОСТАВИТЬ ЛЮБОЕ ЗНАЧЕНИЕ.
CALLPOSIL2;ПОШЛЕМ.
MOVLW0x77;НИЖНИЙ ПРЕДЕЛ -55. ЛЮБОЙ.
CALLPOSIL2;ПОШЛЕМ.
MOVLW0x7F;КОНФИГУРАЦИЯ 11 = 0,1 ГРАДУС.
CALLPOSIL2;ПОШЛЕМ.
CALLHYL2;ПОСЫЛ ИМПУЛЬСА ОБНУЛЕНИЯ.
MOVLW0xCC;ПРОПУСК ПОСЫЛА НОМЕРА DS.
CALLPOSIL2;ПОШЛЕМ.
MOVLW0x44;РАЗРЕШАЕМ ПРЕОБРАЗОВАНИЕ.
CALLPOSIL2;ПОШЛЕМ.
MOVLW.3;ПАУЗА 0,75 СЕК.
MOVWFCOUN;МАКСИМАЛЬНО 750 МС.
SPLU
MOVLW .255
MOVWF TEMP
PLUS
MOVLW .255
ADDLW -1
BTFSS STATUS,2
GOTO $-2
DECFSZ TEMP,1
GOTO PLUS
DECFSZCOUN,1
GOTOSPLU
GOTOPRIEM2;НА ПРИЕМ ТЕМПЕРАТУРЫ.
HYL2
CALLWUX2;ВЫХОД НУЛЯ.
MOVLW.125;НУЛЕВОЙ ИМПУЛЬС
ADDLW-1;= 500 МКС.
BTFSSSTATUS,2;
GOTO$-2;
CALLWXO2;ВЫХОД ЕДИНИЦЫ.
MOVLW.125;ИМПУЛЬС =
ADDLW-1;500 МКС.
BTFSSSTATUS,2;
GOTO$-2;
RETURN
;=======================================
; 11. ИЗМЕНЕНИЕ ВХОДА НА ПРИЕМ/ПЕРЕДАЧУ.
;=======================================
WUX2
BCFPORTA,DS2;
BSFSTATUS,5;ПЕРЕХОДИМ В БАНК 1.
BCFTRISA^80H,DS2;НА ВЫХОД.
BCFSTATUS,5;ПЕРЕХОДИМ В БАНК 0.
RETURN
WXO2
BSFSTATUS,5;ПЕРЕХОДИМ В БАНК 1.
BSFTRISA^80H,DS2;НА ВХОД.
BCFSTATUS,5;ПЕРЕХОДИМ В БАНК 0.
RETURN
;====================================
; 12. ПРИЕМ 16 БИТ ОТ DS2.
;====================================
PRIEM2
CALLHYL2;ПОСЫЛ ИМПУЛЬСА ОБНУЛЕНИЯ.
MOVLW0xCC;ПРОПУСК НОМЕРА.
CALLPOSIL2;ПОСЫЛ.
MOVLW0xBE;ЧТЕНИЕ ТЕМПЕРАТУРЫ ИЗ БЛОКНОТА.
CALLPOSIL2;ПОСЫЛ.
BCFINTCON,7;ЗАПРЕТ ПРЕРЫВАНИЙ.
CALL PRIE2;НА ПРИЕМ.
MOVFWLSBH;ПЕРЕПИШЕМ ПРИНЯТЫЙ БАЙТ
MOVWFLSB;В МЛАДШИЙ РЕГИСТР.
BCFINTCON,7;ЗАПРЕТ ПРЕРЫВАНИЙ.
CALLPRIE2;И ПРИМЕМ СТАРШИЙ БАЙТ.
GOTOCXET2;НА ПЕРЕСЧЕТ.
PRIE2
MOVLW.8
MOVWFCOUN;ЗАПИШЕМ ЧИСЛО БИТ.
CLRFLSBH;ОБНУЛИМ РЕГИСТР ПРИЕМА.
PRI2
CALLWUX2;ВЫДАЕМ КОРОТКИЙ НОЛЬ И ЖДЕМ ОТКЛИКА.
CALLWXO2;НА ПРИЕМ.
MOVLW.2;ЗАДЕРЖКА
CALLX4;8 МКС.
MOVFWPORTA;ПЕРЕПИШЕМ
MOVWFTEMP;ЗНАЧЕНИЕ ПОРТА.
BTFSSTEMP,DS2;
BCFSTATUS,0;УСТАНОВИМ БИТ ПРИЕМА В НОЛЬ.
BTFSCTEMP,DS2;
BSFSTATUS,0;ИЛИ ЕДИНИЦУ.
RRFLSBH,1;ЗАПИШЕМ В РЕГИСТР.
MOVLW.12;ОБЩАЯ ПАУЗА 60 МКС.
CALLX4;
DECFSZCOUN,1;УМЕНЬШИМ СЧЕТЧИК.
GOTOPRI2;ПОВТОРИМ ПРИЕМ.
BSFINTCON,7;РАЗРЕШАЕМ ПРЕРЫВАНИЯ.
RETURN;ВЕРНЕМСЯ.
;==========================================
; 13. ПОСЫЛ КОМАНДЫ В DS2.
;==========================================
POSIL2
BCFINTCON,7;ЗАПРЕТ ПРЕРЫВАНИЙ.
MOVWFTEMP;ПЕРЕПИШЕМ ВО ВРЕМЕННЫЙ.
MOVLW.8;ЗАПИШЕМ ЧИСЛО БИТ.
MOVWFCOUN;
POSI2
RRFTEMP,1;ВЫТОЛКНЕМ МЛАДШИЙ БИТ.
BTFSSSTATUS,0;ЕСЛИ ОН НУЛЕВОЙ,
GOTOW0_2;ПОШЛЕМ ИМПУЛЬС НУЛЯ.
GOTOW1_2;ИЛИ ЕДИНИЦЫ.
POS2
DECFSZCOUN,1;УМЕНЬШАЕМ СЧЕТЧИК.
GOTOPOSI2;НА СЛЕДУЮЩИЙ БИТ.
BSFINTCON,7;РАЗРЕШАЕМ ПРЕРЫВАНИЯ.
RETURN;ВОЗВРАТ.
W0_2
CALLWUX2;УСТАНОВИМ ВЫХОД В НОЛЬ.
MOVLW.15;УДЕРЖИВАЕМ 60 МКС.
CALL X4;
CALLWXO2;НА ВХОД = 1 НА ВЫХОДЕ.
GOTOPOS2;ПОВТОРИМ.
W1_2
CALLWUX2;КОРОТКИЙ НУЛЕВОЙ ИМПУЛЬС.
CALLWXO2;НА ВХОД = 1 НА ВЫХОДЕ.
MOVLW.15;УДЕРЖИВАЕМ 60 МКС.
CALLX4;
GOTOPOS2;ПОВТОРИМ.
;==================================
; 14. ВЫДЕЛЕНИЕ 2.
;==================================
CXET2
BTFSCFLAG1,6;ЗАДЕРЖКА ПРИ ВКЛЮЧЕНИИ ВЫПОЛНЕНА.
GOTO$+3;
BSFFLAG1,6;ЗАДЕРЖКА ПРИ ВКЛЮЧЕНИИ.
RETURN;
BCFFLAG1,3;ПО УМОЛЧАНИЮ ЗНАК ПЛЮС.
BTFSCLSBH,3;ЕСЛИ ИНАЧЕ,
BSFFLAG1,3;ТО УСТАНОВИМ МИНУС.
BTFSSFLAG1,3;ЕСЛИ ЗНАК ПЛЮС,
GOTO$+7;ТО НЕ ИНВЕРТИРУЕМ.
COMFLSB,1;ПРОИНВЕРТИРУЕМ МЛАДШИЙ
COMFLSBH,1;И СТАРШИЙ РЕГИСТРЫ ПРИЕМА.
BCFSTATUS,0;
INCFLSB,1;ПРИБАВИМ ЕДИНИЦУ.
BTFSCSTATUS,0;ЕСЛИ ЕСТЬ ПЕРЕНОС,
INCFLSBH,1;ТО УВЕЛИЧИМ СТАРШИЙ РЕГИСТР.
MOVFWLSB;ВЫДЕЛИМ ДЕСЯТЫЕ.
ANDLWB'00001111';ЗАМАСКИРУЕМ.
CALLDESATI;ПЕРЕКОДИРУЕМ С ОКРУГЛЕНИЕМ.
MOVWFDST2;ЗАПИШЕМ В РЕГИСТР ДЕСЯТЫХ.
MOVLW.4;СДВИГОМ ВПРАВО НА 4 РАЗРЯДА
MOVWFCOUN;
BCFSTATUS,0;ВЫДЕЛИМ ЦЕЛУЮ ЧАСТЬ.
RRFLSBH,1;
RRFLSB,1;
DECFSZCOUN,1;
GOTO$-4;
MOVLW.251;ПО УМОЛЧАНИЮ ЗНАК ПЛЮС.
MOVWFSOT2;
BTFSSFLAG1,3;ЕСЛИ ИНАЧЕ,
GOTO$+3;ТО УСТАНОВИМ
MOVLW.253;МИНУС.
MOVWFSOT2;
;======================================================
; 15. ВЫБОР СРАВНЕНИЯ ПО СОХРАНЕННОМУ И ИЗМЕРЕННОМУ ЗНАКАМ 2.
;======================================================
MAXZ2
MOVFWSOT2;ЕСЛИ СОХРАНЕННЫЙ
SUBWFSOT2X,0;И ИЗМЕРЕННЫЙ ЗНАКИ РАВНЫ,
SKPZ;ТО ОПРЕДЕЛИМ ЗНАК.
GOTO$+5;
BTFSSFLAG1,3;ЕСЛИ ЗНАК ПОЛОЖИТЕЛЬНЫЙ,
GOTOCOPL2X;ТО СРАВНИМ НА ПРЕВЫШЕНИЕ.
BTFSCFLAG1,3;ЕСЛИ ЗНАК ОТРИЦАТЕЛЬНЫЙ,
GOTOCOMI2X;ТО СРАВНИМ НА УМЕНЬШЕНИЕ.
SKPNC;ЕСЛИ ИЗМЕРЕННЫЙ ЗНАК МЕНЬШЕ (+) СОХРАНЕННОГО,
GOTOCOXP2X;ТО СОХРАНИМ ИЗМЕРЕННОЕ ЗНАЧЕНИЕ.
MINZ2
MOVFWSOT2;ЕСЛИ СОХРАНЕННЫЙ
SUBWFSOT2N,0;И ИЗМЕРЕННЫЙ ЗНАКИ РАВНЫ,
SKPZ;ТО ОПРЕДЕЛИМ ЗНАК.
GOTO$+5;
BTFSCFLAG1,3;ЕСЛИ ЗНАК ОТРИЦАТЕЛЬНЫЙ,
GOTOCOPL2N;ТО СРАВНИМ НА ПРЕВЫШЕНИЕ.
BTFSSFLAG1,3;ЕСЛИ ЗНАК ПОЛОЖИТЕЛЬНЫЙ,
GOTOCOMI2N;ТО СРАВНИМ НА УМЕНЬШЕНИЕ.
SKPC;ЕСЛИ ИЗМЕРЕННЫЙ ЗНАК БОЛЬШЕ (-) СОХРАНЕННОГО,
GOTOCOXP2N;ТО СОХРАНИМ ИЗМЕРЕННОЕ ЗНАЧЕНИЕ.
GOTOBDIN2;НА ЗАПИСЬ ЗНАЧЕНИЙ В РЕГИСТРЫ ИНДИКАЦИИ.
;===================================
; 16. СРАВНЕНИЕ НА MAX 2.
;===================================
COPL2X
MOVFWLSB2X;ЕСЛИ СОХРАНЕННОЕ ЗНАЧЕНИЕ
SUBWFLSB,0;БОЛЬШЕ ИЗМЕРЕННОГО,
BTFSSSTATUS,0;ТО СОХРАНЕНИЯ НЕТ.
GOTOMINZ2;ПРОВЕРИМ НА МИНИМУМ.
BTFSSSTATUS,2;ЕСЛИ РАВЕНСТВО ЦЕЛЫХ,
GOTO$+5;
MOVFWDST2X;ТО ПРОВЕРИМ ДЕСЯТЫЕ.
SUBWFDST2,0;ЕСЛИ ИЗМЕРЕННОЕ БОЛЬШЕ
BTFSSSTATUS,0;ИЛИ РАВНО СОХРАНЕННОМУ, ТО СОХРАНИМ.
GOTOMINZ2;ЕСЛИ МЕНЬШЕ, ТО ПРОВЕРИМ НА МИНИМУМ.
COXP2X
BTFSSFLAG1,3;-0 НЕТ.
GOTO$+4;
TSTFLSB;
BZMINZ2;
MOVFWSOT2;СОХРАНИМ ЗНАК.
MOVWFSOT2X;
MOVFWLSB;СОХРАНИМ НОВОЕ ЗНАЧЕНИЕ
MOVWFLSB2X;ЦЕЛЫХ
MOVFWDST2;И ДЕСЯТЫХ.
MOVWFDST2X;
MOVFWMIN;СОХРАНИМ
MOVWFMIN2X;МИНУТЫ
MOVFWHOU;
MOVWFHOU2X;И ЧАСЫ.
BTFSCFLAG1,3;ПЕРЕПИШЕМ ЗНАК
BSFFLAG2,3;ВО ФЛАГ ХРАНЕНИЯ.
BTFSSFLAG1,3;
BCFFLAG2,3;
GOTOMINZ2;НА ПРОВЕРКУ ПО МИНИМУМУ.
COMI2X
MOVFWLSB2X;ЕСЛИ СОХРАНЕННОЕ ЗНАЧЕНИЕ
SUBWFLSB,0;РАВНО ИЗМЕРЕННОМУ,
BTFSCSTATUS,2;
GOTO$+3;ТО ПРОВЕРИМ ДЕСЯТЫЕ.
BTFSSSTATUS,0;ЕСЛИ БОЛЬШЕ,
GOTOCOXP2X;ТО СОХРАНИМ.
MOVFWDST2X;ПРОВЕРИМ ДЕСЯТЫЕ.
SUBWFDST2,0;ЕСЛИ СОХРАНЕННОЕ МЕНЬШЕ
BTFSCSTATUS,0;ИЛИ РАВНО ИЗМЕРЕННОМУ,
GOTOMINZ2;ТО ПРОВЕРИМ НА МИНИМУМ.
GOTOCOXP2X;ИЛИ СОХРАНИМ.
;===================================
; 17. СРАВНЕНИЕ НА MIN 2.
;===================================
COPL2N
MOVFWLSB2N;ЕСЛИ СОХРАНЕННОЕ ЗНАЧЕНИЕ
SUBWFLSB,0;БОЛЬШЕ ИЗМЕРЕННОГО,
BTFSSSTATUS,0;ТО СОХРАНЕНИЯ НЕТ.
GOTOBDIN2;ПЕРЕПИШЕМ.
BTFSSSTATUS,2;ЕСЛИ РАВЕНСТВО ЦЕЛЫХ,
GOTO$+5;
MOVFWDST2N;ТО ПРОВЕРИМ ДЕСЯТЫЕ.
SUBWFDST2,0;
BTFSSSTATUS,0;ЕСЛИ БОЛЬШЕ ИЛИ РАВНО, ТО СОХРАНИМ.
GOTOBDIN2;ПЕРЕПИШЕМ.
COXP2N
BTFSSFLAG1,3;-0 НЕТ.
GOTO$+4;
TSTFLSB;
BZBDIN2;
MOVFWSOT2;СОХРАНИМ ЗНАК.
MOVWFSOT2N;
MOVFWLSB;СОХРАНИМ НОВОЕ ЗНАЧЕНИЕ
MOVWFLSB2N;ЦЕЛЫХ
MOVFWDST2;И ДЕСЯТЫХ.
MOVWFDST2N;
MOVFWMIN;СОХРАНИМ
MOVWFMIN2N;МИНУТЫ
MOVFWHOU;
MOVWFHOU2N;И ЧАСЫ.
BTFSCFLAG1,3;ПЕРЕПИШЕМ ЗНАК
BSFFLAG2,4;ВО ФЛАГ ХРАНЕНИЯ.
BTFSSFLAG1,3;
BCFFLAG2,4;
GOTOBDIN2;ПЕРЕПИШЕМ.
COMI2N
MOVFWLSB2N;ЕСЛИ СОХРАНЕННОЕ ЗНАЧЕНИЕ
SUBWFLSB,0;МЕНЬШЕ ИЗМЕРЕННОГО,
BTFSCSTATUS,2;
GOTO$+3;
BTFSSSTATUS,0;ТО СОХРАНЕНИЯ НЕТ.
GOTOCOXP2N;ИНАЧЕ СОХРАНИМ.
MOVFWDST2N;ПРОВЕРИМ ДЕСЯТЫЕ.
SUBWFDST2,0;ЕСЛИ МЕНЬШЕ
BTFSCSTATUS,0;ИЛИ РАВНО,
GOTOBDIN2;
GOTOCOXP2N;ТО СОХРАНИМ.
;==================================
; 18. ЗАДЕРЖКА МКС, УМНОЖЕННАЯ НА 4.
;==================================
X4
ADDLW-1;
BTFSSSTATUS,2;
GOTO$-2;
RETURN;
;=========================================
; 19. ИНИЦИАЛИЗАЦИЯ DS1.
;=========================================
INIDS1
CALLHYL1;ПОСЫЛ ИМПУЛЬСА ОБНУЛЕНИЯ.
MOVLW0xCC;ПРОПУСК НОМЕРА.
CALLPOSIL1;ПОШЛЕМ.
MOVLW0x4E;РАЗРЕШАЕМ ЗАПИСЬ УСТАНОВКИ 0,1 ГРАДУСА.
CALLPOSIL1;ПОШЛЕМ.
MOVLW0x7D;ВЕРХНИЙ ПРЕДЕЛ +125. МОЖНО ПОСТАВИТЬ ЛЮБОЕ ЗНАЧЕНИЕ.
CALLPOSIL1;ПОШЛЕМ.
MOVLW0x77;НИЖНИЙ ПРЕДЕЛ -55. ЛЮБОЙ.
CALLPOSIL1;ПОШЛЕМ.
MOVLW0x7F;КОНФИГУРАЦИЯ 11 = 0,1 ГРАДУС.
CALLPOSIL1;ПОШЛЕМ.
CALLHYL1;ПОСЫЛ ИМПУЛЬСА ОБНУЛЕНИЯ.
MOVLW0xCC;ПРОПУСК ПОСЫЛА НОМЕРА DS.
CALLPOSIL1;ПОШЛЕМ.
MOVLW0x44;РАЗРЕШАЕМ ПРЕОБРАЗОВАНИЕ.
CALLPOSIL1;ПОШЛЕМ.
MOVLW.3;ПАУЗА 0,75 СЕК.
MOVWFCOUN;МАКСИМАЛЬНО 750 МС.
SPLU1
MOVLW .255
MOVWF TEMP
PLUS1
MOVLW .255
ADDLW -1
BTFSS STATUS,2
GOTO $-2
DECFSZ TEMP,1
GOTO PLUS1
DECFSZCOUN,1
GOTOSPLU1
GOTOPRIEM1;НА ПРИЕМ ТЕМПЕРАТУРЫ.
Подобные документы
Разработка малогабаритного автомобильного термометра на базе микроконтроллера и требования к нему. Проектирование функциональной схемы, работа измерителя. Выбор элементной базы. Схема включения усилителя. Архитектура и элементы микроконтроллера.
контрольная работа [841,4 K], добавлен 22.05.2015Функциональная спецификация, описание объекта, структура системы и ресурсов микроконтроллера. Ассемблирование, программирование микроконтроллера и разработка алгоритма работы устройства, описание выбора элементной базы и работы принципиальной схемы.
курсовая работа [2,2 M], добавлен 02.01.2010Порядок описания и разработки структурной и функциональной схемы микропроцессорной системы на основе микроконтроллера К1816ВЕ31. Обоснование выбора элементов, разработка принципиальной схемы данной системы, программы инициализации основных компонентов.
курсовая работа [260,4 K], добавлен 16.12.2010Разработка автоматической измерительной системы в виде электронного термометра и ее системы управления. Назначение, основные технические характеристики термометра. Описание работы электрической схемы. Особенности разработки и изготовления печатной платы.
курсовая работа [170,6 K], добавлен 12.09.2012Создание аналого-цифрового устройства для проведения лабораторных работ с использованием микроконтроллера. Разработка структурной и принципиальной схем. Выбор и описание элементной базы, используемого микроконтроллера. Программирование микроконтроллера.
дипломная работа [1,7 M], добавлен 19.07.2014Методика проектирования, разработки, практической апробации цифрового регулятора температуры на базе микросхемы-термометра DS1620, который совмещает температурный датчик, схему управления и АЦП в одном кристалле, и микроконтроллера фирмы Atmel AT90S2313.
курсовая работа [755,6 K], добавлен 19.06.2010Функциональная спецификация и преимущества термометрического датчика. Структурная схема микроконтроллера РIС16F84A. Алгоритм работы программы, описание функциональных узлов, выбор элементной базы и принципиальная схема терморегулятора для аквариума.
курсовая работа [4,7 M], добавлен 27.12.2009Принцип работы электрических термометров, преимущества использования. Структурная схема устройства, выбор элементной базы, средств индикации. Выбор микроконтроллера, разработка функциональной схемы устройства. Блок-схема алгоритма работы термометра.
курсовая работа [3,6 M], добавлен 23.05.2012Изучение цифрового термометра DS18B20: диапазон измерений, уникальный код, блок-схема, особенности функционирования. Устройство и назначение микроконтроллера PIC16F84, его технические характеристики. Описание алгоритма работы термометра-термостата.
контрольная работа [2,5 M], добавлен 20.12.2012Разработка аппаратных и программных средств для реализации цифрового термометра. Выбор способа измерения температуры. Функциональные возможности преобразователя DS18B20. Возможность использования LCD дисплея без подсветки и семисегментного индикатора.
курсовая работа [2,2 M], добавлен 15.01.2013