Цитата(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 легко позволяет почти все проверить и измерить, если не лениться.