Перейти к содержанию
    

Прошу помочь с прогой на assemblere для DS18B20

Здравствуйте. Очень прошу помочь мне доработать программу на assemblere.

Имеется устройство часы-термометр, сделанные по схеме - http://www.atomlink.ru/~courier/ds1307/ds1307.htm

Только вместо AT89C4051 - AT89C51.

post-54570-1305905160_thumb.png

 

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

 

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

 

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

 

Исходник имеющейся проги - progg.zip

 

Заранее спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

На ассемблере и не надо. Сделайте на Си. Скачайте CodeVision, с ним поставляется библиотека для работы с этим термометром. Документация тоже имеется. Хорошая. Так что ...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

ЗЫЖ за картинку зачот

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

Подобную реализацию попробую помочь сделать (сегодня-завтра взгляну на это чудо).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...