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

Арифметика с фиксированной запятой

Есть задача - представить чисто в формате 00ХХХХХХ ХХХХХХХХ, где первый байт - старшая часть, второй - младшая. Изначально имею просто код ацп (в единицах самой ацп), надо дальше арифметику делать. Как перевести в этот формат и считать в нем?????????

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


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

А наличие запятой чем-то диктуется (в смысле - нафига она вам вообще)? Не проще ли все считать целочисленно, и прямо в значениях кодов АЦП, а потом уже готовый результат смасштабировать и нарисовать десятичную точку в нужном разряде "искусственно"?

Например, код АЦп XXXX соответствует YYYY мВ = Y,YYY В ;).

Вообще без необходимости не усложняйте себе жизнь. А то бывает - человек начинает городить арифметику с плавающей запятой только потому, что у него данные за пределами микроконтроллера написаны в виде десятичных дробей.

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


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

я не против, но есть ТЗ. Я как инжУнер должен выдавать пакеты согласно этой бумажке. Мативировали это мне так: на том конце железяка загружена, поэтому мы ее так разгружаем, иниипет(пардон). Флоат не хотят (exp, Hb, Lb), т к на 1 байт больше. Вот теперь это мой геморой. :( если есть примеры прог, поделитесь, ну или хоть урлу на теорию киньте, буду крайне признателен (имхо сроки).

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


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

Вы не указали название микроконтроллера и, если АЦП не встроенное, то его название тоже.

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


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

float x=f(ADC); // перевели код АЦП в число, соотв. значению параметра

int y=(int)(x*k) // k - коэфф. масштабирования

Дальше можно выводить y наружу

 

Считать лучше именно во флоте, а преобразование формата сделать в конце, так точность больше получится

Изменено пользователем MrYuran

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


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

ну контроллер полностью соответствует ветке форума - ADuC841, ацп встроенная. А вот результат надо выводить (пример) намерял я 5,12 вольта, и отправил в старшем байте 5, младшем 12.Извращенный формат.

 

Я наверно буду считать во флоат, а потом попробую перевести в этот извращенный формат:( после адсп этот контроллер кажется таким неудобным....

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


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

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

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

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

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

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

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

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

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

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