snort 0 20 мая, 2011 Опубликовано 20 мая, 2011 · Жалоба Здравствуйте. Очень прошу помочь мне доработать программу на assemblere. Имеется устройство часы-термометр, сделанные по схеме - http://www.atomlink.ru/~courier/ds1307/ds1307.htm Только вместо AT89C4051 - AT89C51. Все работает хорошо, температура измеряется. Однако, хотелось бы реализовать следующую функцию. Чтобы при превышении заданной температуры, на определенный порт контроллера приходил сигнал. В документации по DS18B20 написано, что для задания нижней и верхней уставок служат регистры TL м TH. И что после того, как DS18B20 выполнит температурное преобразование, температурное значение - сравнивается со значением, записанным в регистры TH и TL. Если измеренная температура ниже или равна TL или выше или равна TH, формируется условие Аварии, и устанавливается флаг Аварии в DS18B20. Но вот как реализовать это программно в ассемблере знаний не хватает. Очень прошу помочь. Исходник имеющейся проги - progg.zip Заранее спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kovigor 5 21 мая, 2011 Опубликовано 21 мая, 2011 · Жалоба Но вот как реализовать это программно в ассемблере знаний не хватает. Очень прошу помочь. На ассемблере и не надо. Сделайте на Си. Скачайте CodeVision, с ним поставляется библиотека для работы с этим термометром. Документация тоже имеется. Хорошая. Так что ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xemul 0 21 мая, 2011 Опубликовано 21 мая, 2011 · Жалоба Все работает хорошо, температура измеряется. Однако, хотелось бы реализовать следующую функцию. Чтобы при превышении заданной температуры, на определенный порт контроллера приходил сигнал. DS18B20 не сможет выдать сигнал на какой-либо определенный порт контроллера. Флаг Alarm проверяется только опросом, и такая проверка осмыслена только при куче датчиков на шине. ЗЫЖ за картинку зачот Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Diko 0 24 мая, 2011 Опубликовано 24 мая, 2011 · Жалоба В документации по DS18B20 написано, что для задания нижней и верхней уставок служат регистры TL м TH. И что после того, как DS18B20 выполнит температурное преобразование, температурное значение - сравнивается со значением, записанным в регистры TH и TL. Если измеренная температура ниже или равна TL или выше или равна TH, формируется условие Аварии, и устанавливается флаг Аварии в DS18B20. Думаю, что это достаточно неправильный путь. Думаю будет вполне достаточно в проге после вычитывания температуры сравнить её с заданными порогами и выставить соответствующие биты на порты. (к слову сказать есть вопрос такого плана, а пороги Вы собираетесь использовать постоянные, или есть желание менять их в процесе эксплуатации Вашего девайса ?) Подобную реализацию попробую помочь сделать (сегодня-завтра взгляну на это чудо). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться