реклама на сайте
подробности

 
 
> Перестановка бит в байте, получить зеркальное отображение
bbill
сообщение Nov 6 2008, 11:28
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 76
Регистрация: 21-10-05
Пользователь №: 9 941



Появилась необходимость (из-за разводки) перевернуть байт:
было 0b76543210
стало 0b01234567

Можно тупо bld/bst, но хотелось бы покороче. Кто сталкивался с подобной задачей.

P.S. В поиске нашел только обсуждение о перестановке двух бит.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
CDT
сообщение Nov 6 2008, 14:32
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 303
Регистрация: 3-03-05
Пользователь №: 3 044



Цитата(bbill @ Nov 6 2008, 14:28) *
Появилась необходимость (из-за разводки) перевернуть байт:
было 0b76543210
стало 0b01234567

А если подумать и посчитать?
Код
;==============================================
;РАЗВОРОТ БАЙТА  7-0 в 0-7
;stable - время выполнения не зависит от данных

;---------------------------------------------------------------
; 16 words 18 clk stable (минус rjmp или ret)

M31:    bst    rTmp,0
    bld    rTmpH,7

    bst    rTmp,1
    bld    rTmpH,6

    bst    rTmp,2
    bld    rTmpH,5

    bst    rTmp,3
    bld    rTmpH,4

    bst    rTmp,4
    bld    rTmpH,3

    bst    rTmp,5
    bld    rTmpH,2

    bst    rTmp,6
    bld    rTmpH,1

    bst    rTmp,7
    bld    rTmpH,0
        rjmp M31


;-------------------------------------------------------------
; 5 words 42 clk stable (минус rjmp или ret)
M21:       ldi    rCnt,8
l1:        rol    rTmp
            ror    rTmpH
            dec    rCnt
            brne    l1
      rjmp    M21


;--------------------------------------------------------------
; 4 word's 32 clk stable
    ldi    rTmpH,1
M1:    lsr    rTmp
    rol    rTmpH
    brcc    M1


Выбирайте, что дороже: код, время и стабильность времени выполнения или время копирования одинаковых строк кода в редакторе.
AVR Studio легко позволяет почти все проверить и измерить, если не лениться.smile.gif


--------------------
Опыт - чудесная вещь: легко использовать, можно продать, трудно пропить.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- bbill   Перестановка бит в байте   Nov 6 2008, 11:28
- - =GM=   1) Если есть два свободных порта, переставить пров...   Nov 6 2008, 11:33
- - Maik-vs   Цитата(bbill @ Nov 6 2008, 14:28) Появила...   Nov 6 2008, 11:39
- - Сергей С.   Цитата(bbill @ Nov 6 2008, 16:28) Появила...   Nov 6 2008, 11:50
- - Vlad219i   Цитата(bbill @ Nov 6 2008, 15:28) Можно т...   Nov 6 2008, 12:45
- - МП41   Эх, не хватает однако подобной аппаратной команды....   Nov 6 2008, 13:08
- - _Pasha   Кодrol tmp1 ror tmp2 ;........rept 8 раз А в чем п...   Nov 6 2008, 14:42
- - bbill   Спасибо Maik-vs. И короче, и главное быстрее. А ещ...   Nov 6 2008, 14:46
|- - Maik-vs   Цитата(bbill @ Nov 6 2008, 17:46) Спасибо...   Nov 7 2008, 12:42
- - Aleksandr Baranov   Bit Order   Nov 6 2008, 16:03
- - zombi   И всетаки мне кажется если скорость важнее то лучш...   Nov 7 2008, 14:22
- - ARV   вот на телесистемах была пару раз ветка по этой те...   Nov 7 2008, 15:45
- - singlskv   Цитата(ARV @ Nov 7 2008, 18:45) вот на те...   Nov 7 2008, 21:39
- - ARV   Цитата(singlskv @ Nov 8 2008, 00:39) НЕ В...   Nov 7 2008, 21:45
- - Qwertty   Цитата(singlskv @ Nov 8 2008, 00:39) на P...   Nov 8 2008, 05:27
|- - _Pasha   Цитата(Qwertty @ Nov 8 2008, 08:27) А для...   Nov 8 2008, 07:10
- - ae_   Цитата(singlskv @ Nov 8 2008, 06:39) НЕ В...   Nov 8 2008, 10:43
- - singlskv   Цитата(ae_ @ Nov 8 2008, 13:43) 12 тактов...   Nov 8 2008, 20:22
- - Qwertty   Цитата(singlskv @ Nov 8 2008, 23:22) Увы,...   Nov 8 2008, 22:42
- - ae_   Цитата(Qwertty @ Nov 9 2008, 07:42) Идет ...   Nov 9 2008, 00:47
- - singlskv   Цитата(Qwertty @ Nov 9 2008, 01:42) Идет ...   Nov 9 2008, 08:24


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd June 2025 - 04:57
Рейтинг@Mail.ru


Страница сгенерированна за 0.01396 секунд с 7
ELECTRONIX ©2004-2016