Здравствуйте. Подскажите как правильно вычислить знак значения температуры для датчика ДВ2ТС-А.
В описании сказано что :
Значение температуры в градусах Цельсия, считанное из регистра с адресом 202h, вычисляется следующим образом:
Т = 0,01•(256•HIGH_BYTE + LOW_BYTE)
Обратите внимание, что значение температуры может быть отрицательным, используйте знаковое представление числа!
У меня HIGH_BYTE = 251 LOW_BYTE =174 , должно получится отрицательное значение , датчик в холодильной камере.Как правильно сделать пересчет ?
Протокол работы ДВ2ТС-А
Модератор: Админ
-
- Сообщения: 2
- Зарегистрирован: Пн июл 16, 2018 1:26 pm
Re: Протокол работы ДВ2ТС-А
Знаковое представление числа это:
int16_t (stdint.h) в C
или
SmallInt в Delphi.
т.е.
16 бит и старший бит это знак.
Т.е. в Вашем случае это -1106 или -11.06 град. Цельсия.
int16_t (stdint.h) в C
или
SmallInt в Delphi.
т.е.
16 бит и старший бит это знак.
Т.е. в Вашем случае это -1106 или -11.06 град. Цельсия.
-
- Сообщения: 2
- Зарегистрирован: Пн июл 16, 2018 1:26 pm
Re: Протокол работы ДВ2ТС-А
Может кому пригодится ....
Дополнительный код
В дополнительном коде, также как и прямом, первый разряд отводится для представления знака числа. Прямой код используется для представления положительных чисел, а дополнительный – для представления отрицательных. Поэтому, если в первом разряде находится 1, то мы имеем дело с дополнительным кодом и с отрицательным числом.
Все остальные разряды числа в дополнительном коде сначала инвертируются, т.е. заменяются противоположными (0 на 1, а 1 на 0). Например, если 1 0001100 – это прямой код числа, то при формировании его дополнительного кода, сначала надо заменить нули на единицы, а единицы на нули, кроме первого разряда. Получаем 1 1110011. Но это еще не окончательный вид дополнительного кода числа.
Далее следует прибавить единицу к получившемуся инверсией числу:
1 1110011 + 1 = 1 1110100
В итоге и получается число, которое принято называть дополнительным кодом числа.
Дополнительный код
В дополнительном коде, также как и прямом, первый разряд отводится для представления знака числа. Прямой код используется для представления положительных чисел, а дополнительный – для представления отрицательных. Поэтому, если в первом разряде находится 1, то мы имеем дело с дополнительным кодом и с отрицательным числом.
Все остальные разряды числа в дополнительном коде сначала инвертируются, т.е. заменяются противоположными (0 на 1, а 1 на 0). Например, если 1 0001100 – это прямой код числа, то при формировании его дополнительного кода, сначала надо заменить нули на единицы, а единицы на нули, кроме первого разряда. Получаем 1 1110011. Но это еще не окончательный вид дополнительного кода числа.
Далее следует прибавить единицу к получившемуся инверсией числу:
1 1110011 + 1 = 1 1110100
В итоге и получается число, которое принято называть дополнительным кодом числа.