|
Деление на дробь на ассемблере, Поделить число на коэффициент с плавающей запятой |
|
|
|
 |
Ответов
|
Dec 14 2010, 09:45
|

Профессионал
    
Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409

|
Цитата(Slavast @ Dec 14 2010, 09:43)  Столкнулся с математической проблемой. Необходимо полученное значение на АЦП поделить на 17.2, чтобы получить реальное входное напряжение. Но не знаю как разделить число на ассемблере, да еще и на дробное. Помогите с алгоритмом! Как подсказали перейдите от деления к умножению Надо разделить на 17,2. Попытаемся представить это число в виде 65536/x 17,2 = 65536/x x = 65536/17.2 = 3810 Теперь если взять любое входное значение, умножить на 3810 а потом отбросить два старших байта (что эквивалентно сдвигу на 16 вправо или делению на 65536) то получите то что Вам нужно. Не обзязательно брать 65536, можно любое число степень двойки (чем больше число тем выше точность). Суть метода в том чтобы уйти от операции деления к операции умножения с последующим сдвигом результата вправо. Умножение для любого процессора также как и сдвиг довольно простые и быстрые операции. Особенно если писать на ассемблере.
Сообщение отредактировал mempfis_ - Dec 14 2010, 09:53
|
|
|
|
|
Dec 14 2010, 11:06
|
Участник
  
Группа: Свой
Сообщений: 462
Регистрация: 2-04-07
Из: Иркутск
Пользователь №: 26 695

|
Цитата(mempfis_ @ Dec 14 2010, 17:45)  Как подсказали перейдите от деления к умножению Надо разделить на 17,2. Попытаемся представить это число в виде 65536/x 17,2 = 65536/x x = 65536/17.2 = 3810 ...умножить на 3810 а потом отбросить два старших байта... отбросить два младших байта... получим целое число в диапазоне 0...59, это из входного диапазона АЦП 0...1023. [telepat mode] предположу, что ТС нужно получить результат с дробной частью, типа 0...1023 -> 0...59.47 [/telepat mode]
|
|
|
|
|
Dec 14 2010, 11:49
|

Профессионал
    
Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409

|
Цитата(ae_ @ Dec 14 2010, 15:06)  отбросить два младших байта... получим целое число в диапазоне 0...59, это из входного диапазона АЦП 0...1023. [telepat mode] предположу, что ТС нужно получить результат с дробной частью, типа 0...1023 -> 0...59.47 [/telepat mode] АААААА!!!!! Обшибся!!!! Спасибо за поправку. Нужно отбросить два младших байта а не старших!!! Точнее сдвинуть результат на 16 бит вправо!!! Сам часто пользуюсь таким приёмом при работе с аналоговыми датчиками. Избавляет от исполдьзования громоздких П/П деления. IAR умный - сам понимает что при делении на 2**n оптимальным будет сдвиг а не div
|
|
|
|
Сообщений в этой теме
Slavast Деление на дробь на ассемблере Dec 14 2010, 05:43 kovigor Цитата(Slavast @ Dec 14 2010, 09:43) Помо... Dec 14 2010, 06:08 V_G Если имеется в виду деление на константу, до делит... Dec 14 2010, 06:23 МП41 Цитата(Slavast @ Dec 14 2010, 07:43) Стол... Dec 14 2010, 06:45 V_G Цитата(МП41 @ Dec 14 2010, 16:45) А как н... Dec 14 2010, 08:46  =GM= Если нужна дробная часть, то надо не отбрасывать д... Dec 14 2010, 11:33   Sergey_Aleksandrovi4 Цитата(=GM= @ Dec 14 2010, 17:33) Если ну... Dec 15 2010, 05:24    _Pasha Цитата(Sergey_Aleksandrovi4 @ Dec 15 2010, 12... Dec 15 2010, 06:07     Slavast Цитата(_Pasha @ Dec 15 2010, 12:07) Это ... Dec 15 2010, 08:44      ae_ Цитата(Slavast @ Dec 15 2010, 19:44) ...С... Dec 15 2010, 12:21    zombi Цитата(Sergey_Aleksandrovi4 @ Dec 15 2010, 11... Dec 15 2010, 12:51     Sergey_Aleksandrovi4 Цитата(zombi @ Dec 15 2010, 18:51) Мне ка... Dec 15 2010, 17:49 777777 Ёжики плакали, кололись, но продолжали писать на а... Dec 16 2010, 04:48 Slavast Цитата(777777 @ Dec 16 2010, 10:48) Ёжики... Dec 17 2010, 06:33  kovigor Цитата(Slavast @ Dec 17 2010, 12:33) Ребя... Dec 17 2010, 06:37  777777 Цитата(Slavast @ Dec 17 2010, 12:33) Ребя... Dec 17 2010, 10:33 Slavast Всем добрый день!
Уже 3-й день не могу перевес... Dec 24 2010, 04:05 Diusha Цитата(Slavast @ Dec 24 2010, 10:05) Поде... Dec 24 2010, 04:17  Slavast Цитата(Diusha @ Dec 24 2010, 10:17) Могу ... Dec 24 2010, 04:29   Diusha Цитата(Slavast @ Dec 24 2010, 10:29) Може... Dec 25 2010, 06:42 Tanya Цитата(Slavast @ Dec 24 2010, 10:05) Всем... Dec 24 2010, 07:04  Slavast Цитата(Tanya @ Dec 24 2010, 13:04) А если... Dec 24 2010, 07:56   rezident Цитата(Slavast @ Dec 24 2010, 15:56) И ка... Dec 24 2010, 08:18   Tanya Цитата(Slavast @ Dec 24 2010, 13:56) И ка... Dec 24 2010, 08:20 sergeeff Что-то мне сдается, что автор ветки не хочет совет... Dec 24 2010, 10:46 ILYAUL Цитата(sergeeff @ Dec 24 2010, 16:46) Что... Dec 24 2010, 12:09 sergeeff Чем две недели заси...ть себе и другим мозги, про... Dec 24 2010, 15:44 andrewkrot Есть такая книга - Гуртовцев, Гудыменко "Прог... Dec 25 2010, 13:42 kovigor Цитата(andrewkrot @ Dec 25 2010, 20:42) Е... Dec 25 2010, 14:42
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|