Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Прошу помочь с прогой на assemblere для DS18B20
Форум разработчиков электроники ELECTRONIX.ru > Аналоговая и цифровая техника, прикладная электроника > Метрология, датчики, измерительная техника
snort
Здравствуйте. Очень прошу помочь мне доработать программу на assemblere.
Имеется устройство часы-термометр, сделанные по схеме - http://www.atomlink.ru/~courier/ds1307/ds1307.htm
Только вместо AT89C4051 - AT89C51.
Нажмите для просмотра прикрепленного файла

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

В документации по DS18B20 написано, что для задания нижней и верхней уставок служат регистры TL м TH. И что после того, как DS18B20 выполнит температурное преобразование, температурное значение - сравнивается со значением, записанным в регистры TH и TL. Если измеренная температура ниже или равна TL или выше или равна TH, формируется условие Аварии, и устанавливается флаг Аварии в DS18B20.

Но вот как реализовать это программно в ассемблере знаний не хватает. Очень прошу помочь.

Исходник имеющейся проги - Нажмите для просмотра прикрепленного файла

Заранее спасибо.
kovigor
Цитата(snort @ May 20 2011, 18:37) *
Но вот как реализовать это программно в ассемблере знаний не хватает. Очень прошу помочь.


На ассемблере и не надо. Сделайте на Си. Скачайте CodeVision, с ним поставляется библиотека для работы с этим термометром. Документация тоже имеется. Хорошая. Так что ...
xemul
Цитата(snort @ May 20 2011, 19:37) *
Все работает хорошо, температура измеряется. Однако, хотелось бы реализовать следующую функцию. Чтобы при превышении заданной температуры, на определенный порт контроллера приходил сигнал.

DS18B20 не сможет выдать сигнал на какой-либо определенный порт контроллера. Флаг Alarm проверяется только опросом, и такая проверка осмыслена только при куче датчиков на шине.

ЗЫЖ за картинку зачот
Diko
Цитата(snort @ May 20 2011, 18:37) *
В документации по DS18B20 написано, что для задания нижней и верхней уставок служат регистры TL м TH. И что после того, как DS18B20 выполнит температурное преобразование, температурное значение - сравнивается со значением, записанным в регистры TH и TL. Если измеренная температура ниже или равна TL или выше или равна TH, формируется условие Аварии, и устанавливается флаг Аварии в DS18B20.


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

Подобную реализацию попробую помочь сделать (сегодня-завтра взгляну на это чудо).
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.