Регулярный вопрос :) Как по быстрому поменять порядок бит в байте - т.е D0<=>D7, D1<=>D6 и т.д.?
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
Отправлено
VVT
13 февраля 2004 г. 11:38
Составить ответ
|||
Конференция
|||
Архив
Ответы
Через таблицу полубайтную.
—
ВН
(13.02.2004 13:28, 1480 байт)
Если важна скорость, то перекодировать целеком байт будет быстрее, если нужен компромис размер кода и быстродействия, то, согласен, полубыйт - оптимальное решение.
—
bzx
(13.02.2004 13:39,
пустое
)
Самый быстрый способ табличный. Понятно, что потребуется память 256 байт для таблици перекодировки + 2 слова кода для обращения к таблице. Скорость от 2 машинных тактов (в зависимоти для кагоко ядра ты делаеш).
—
bzx
(13.02.2004 13:14,
пустое
)
Ответ: две инструкции одна за другой: сдвиг влево, сдвиг вправо. Повторять 8 раз.
—
Mebius
(13.02.2004 12:39,
пустое
)
Ответ: Забыл добавить: естественно через бит переноса
—
Mebius
(13.02.2004 12:43,
пустое
)
Так и сделано было, перед тем, как захотелось то же, но быстрее :(
—
VVT
(13.02.2004 12:47,
пустое
)
Ответ: Наверно глупая идея: SPI эмулировать программно и по мере поступления бит задвигать их в нужном порядке
—
Mebius
(13.02.2004 13:07,
пустое
)
Ответ: Чего й то глупая, не везде есть аппаратный SPI
—
Mim
(13.02.2004 13:14,
пустое
)
Ответ: Так у него-то я так понял есть. или нет?
—
Mebius
(13.02.2004 13:16,
пустое
)
Ответ: Почти как у чёрного орла
—
Mebius
(13.02.2004 13:09,
пустое
)
Ответ:
—
VVT
(13.02.2004 13:18, 459 байт)
Так если памяти много,то чем таблица не устраивает?
—
FOXik
(13.02.2004 13:21,
пустое
)
Так все равно не хватает :(
—
VVT
(13.02.2004 14:11,
пустое
)
Тогда...
—
FOXik
(13.02.2004 14:23, 95 байт)
Я найду. Какой-то самсунговсий проц (не помню имени) это за 1 такт делает. Каманда на это специальная есть =)))
—
ShiphT
(13.02.2004 15:01,
пустое
)
идея BLACKEAGLE: нужно два 8 битных порта I/O...соединяем их проводочками и....:)))
—
Romario
(13.02.2004 12:17,
пустое
)
:)
—
VVT
(13.02.2004 12:22,
пустое
)
на асме 17х17 получается
—
FOXik
(13.02.2004 12:05, 339 байт)
Если менять порядокбит в байте на уровне компиляции, то биты вкл/выкл используя операцию сдвига << (макроассемблер)
—
bzx
(13.02.2004 11:53, 195 байт)
Нет, тут на ходу - байт для SPI, где старший бит вначале, выплевывается через UART, где первым выходит младший.
—
VVT
(13.02.2004 12:01,
пустое
)
а дедушка мне говорил, что первым выходит старт
—
Pit
(13.02.2004 12:07,
пустое
)
это 51 уарт, он мгоёт
—
=mse=
(13.02.2004 12:09,
пустое
)
Ответ: Если действительно по-быстрому, то только по таблице
—
Alex11
(13.02.2004 11:40,
пустое
)
А если чуть медленее - ну не хочется таблицы. Хотя на полубайтовую можно и решиться...
—
VVT
(13.02.2004 11:43,
пустое
)
Перейти к списку ответов
|||
Конференция
|||
Архив
|||
Главная страница
|||
Содержание
|||
Без кадра
E-mail:
info@telesys.ru