[an error occurred while processing this directive] [an error occurred while processing this directive]
Пару лет назад я писал ltoa для XA-S3 через деление,
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено Black Eagle 01 февраля 2002 г. 20:17
В ответ на: Давайте я напишу эту функцию с использованием DIV, а Вы - без. Посмотрим, у кого быстрее работать будет :-) отправлено Mik 01 февраля 2002 г. 20:00

...заодно наткнулся на то, что DIV 32/16 в XA некорректно отрабатывает переполнение, т.е. портит остаток, который, собственно, и используется в процедурах перевода bin<->bcd. Написал телегу в Philips, они пробурчали, что да, мол, похоже, разберемся, через год выпустили новую ревизию кристалла со старым глюком... Но тем не менее, через DIV (когда он быстрый и ёмкий) обычно получается быстрее всего.

Кстати, через Х*65536/100000 с последующими умножениями на 10 я тоже писал аналогичные функции на АСМе, получалось также вполне недурственно. Все зависит от возможностей конкретного MCU - в AVR, скорее всего, самым эффективным методом будет вычитание степеней десятки с одновременным тупым поразрядным инкрементированием ASCII-результата.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru