А там уже выдергивайте эти десятые как хотите, отдельно или в одну переменную, это уже как Вам удобнее...
А там уже выдергивайте эти десятые как хотите, отдельно или в одну переменную, это уже как Вам удобнее...
Там вроде не весь байт, а только младшие 4 бита отвечают за дробную часть.edm2007 писал(а):особенно на младший байт
Я исправил свое сообщение, так будет понятнее, я думаю. Спасибо, Мурик.edm2007 писал(а):Я показал как в ОТДЕЛЬНУЮ переменную забрать по маске из младшего байта температуры 4 младших бита (в которых содержатся десятые).
Да какие там секреты? У меня от народа секретов нет!edm2007 писал(а):Игорь, Ваша переменная забирает только целые, Вы ведь сначала убрали 4 бита десятых сдвигом , и только потом забрали значение. В результате десятые будут затерты. Вы десятые убили сдвигом T = Byte0 / 16. Оно конечно выводит с запятой, но только 15,0 - 16,0 - 17,0... Или у Вас там какой-то секрет ?Igor_67 писал(а):Да она (переменная) так и выводится - с десятыми! В протеусе сделай симуляцию с LCD, сам увидишь!
Ну это можно и поправитьedm2007 писал(а):Igor_67, как я понимаю там сдвинется только целая часть, не затронув дробную. Ну и обрезка Single... Интересно.Только вот +0,0 С / -0,0 С не очень смотрится...
Код: Выделить всё
Do
Debounce But5 , 0 , Knopka5 , Sub
1wreset
1wwrite &HCC ' Выдаем команду чтения ПЗУ
1wwrite &H44 ' Запуск измерения
Waitms 750 ' Ждем окончания преобразования
1wreset
1wwrite &HCC
1wwrite &HBE ' Команда чтения ОЗУ датчика
Byte0 = 1wread() ' Читаем нулевой байт
Byte1 = 1wread() ' Читаем первый байт
If Byte1 >= 248 Then ' Проверяем на отрицательную температуру.
Byte0 = &HFF - Byte0 ' 248 в десятичном - 11111000 в двоичном.
Byte1 = &HFF - Byte1 ' Если температура отрицательная - вычитаем из &HFF
Znak = "-"
Else
Znak = "+"
End If
T = Byte0 / 16
T2 = Byte1 * 16
T = T + T2
If T = 0.0 And Znak = "-" Then Znak = " "
If T = 0.0 And Znak = "+" Then Znak = " "
Call Gettime()
Cls
Locate 1 , 1
Lcd Hex(h) ; ":" ; Hex(m) ; ":" ; Hex(s) ; " " ; Znak ; T ; Chr(0) ; "C"
'Print #1 , Hex(h) ; ":" ; Hex(m) ; ":" ; Hex(s)
Waitms 250
LoopМиш, если не секрет, откуда "дровишки" ?(в смысле, такие подробные сведения о Proteus-e?). Может хоть сцылочку дашь?edm2007 писал(а):Я тут для одного товарища писал небольшую обучалку по симулятору совместно с баскомом. Если я Вас правильно понял, то держите: Proteus + Bascom AVR - Пошаговая отладка. Там просто simproteus.html браузером откройте, а картинки подгрузятся...
Игорь, да любопытство банальное. Кнопочек-то много, все потыкать надо.Igor_67 писал(а):Миш, если не секрет, откуда "дровишки" (в смысле, такие подробные сведения о Proteus-e?).
Ну для всяких термостатов и прочих наворотов конечно мало.Igor_67 писал(а):Не-е-е, две кнопки мало и неудобно очень, поэтому будет пять!
Кстати, это не проблемма. Делал себе таймер на 2313, использовал четаре разряда, кварц, и шесть(реально можно восемь) кнопок, ну и выход на реле. При этом ресет сохранён. портВ- сегменты, портД -всё остальное.edm2007 писал(а):там ног маловато а разрядов LED 6 штук
Вот этот свободный вывод( пусть он будет Int0) подключаешь к 6-ти разрядам через кнопки. А далле всё просто - Нажимаем кнопку подключённую к первому разряду и в прерывании проверяем-Select case rasrjad ; case1: incr H; case2: decr H , ну и т.д.edm2007 писал(а):- 6 на разряды....... 1 вывод только свободный