Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Микроконтроллеры (MCU) и микропроцессоры (MPU) > Умножение и деление в AVR


Автор: Коляй 26.11.2005, 21:21
Уважаемые программисты. Подскажите как покультурнее организовать умножение, а лучше деление в программе на ассемблере для AT90S2313. Точность не нужна, просто это регулировка от переменного резистора. Чило изначально 32-х разрядное, располагается в 4-х регистрах, потом идёт три раза сдвиг вправо каждого регистра. Если оставить один раз сдвиг вправо, получается "максимум", а если ещё два сдвига добавить - "минимум". Надо что бы эти "мин" и "макс" задавались переменником. Переменник изменяет 16-и разрядное число "захват таймера 1". Как тут лучше сделать?
Спасибо.

Автор: Alex1984 27.11.2005, 00:43
Подобное уже обсуждалось
Зайди по поводу деления и умножения на Atmel.ru

Автор: Гость_Александр 28.11.2005, 01:36
2005 11 28
AVR200: Multiply and Divide Routines
http://www.atmel.com/dyn/resources/prod_documents/AVR200.zip
http://www.atmel.com/dyn/resources/prod_documents/DOC0936.PDF

Divide Routines
http://www.atmel.com/dyn/resources/prod_documents/DOC1973.PDF

32bit/32bit Unsigned Division
http://elm-chan.org/docs/avrlib/div32.txt

"...Точность не нужна, просто это регулировка от переменного резистора.
...Надо что бы эти "мин" и "макс" задавались переменником. Переменник изменяет 16-и разрядное число "захват таймера 1". "
-Я ничего не понял, об чем речь.

Автор: Коляй 28.11.2005, 22:59
И это не удивительно, я же не программист. 32-х разрядное число разделить надо на 16-и разрядное. Делимое находится в r16,r17,r18,r19 , а делитель в r24,r25. Спасибо за ссылки, буду почитать.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)