МИКРОКОНТРОЛЛЕР AVR - Страница 95

МИКРОКОНТРОЛЛЕР AVR - МИКРОКОНТРОЛЛЕР AVR

Команды сдвигов и циклических сдвигов «Isl», «Isr», «rol», «ror» и «asr» (команды 36.64, 36.65, 36.66, 36.67 и 36.68) полезны как для выполнения сдвигов данных в процессе их ввода или вывода, так и для проверки значения определенного бита в РОН без необходимости выполнения 8 отдельных операций тестирования битов. С помощью циклического сдвига можно произвести индивидуальную проверку любого бита в заданном месте байта.

Если вы интересуетесь, в чем состоит различие между командами обычного («shift») и циклического («rotate») сдвига, то я советую представить себе операцию «rotate» как вращение колеса, на котором расположена последовательность блоков, содержащих по одному биту. Такое расположение битов показано на рис. 36.4, где также показан флаг переноса, который занимает одну из позиций на колесе. Колесо может повернуться в любую позицию, при этом данные перемещаются, но не теряются Команда циклического сдвига помещает выдвигаемый бит в флаг переноса, а старое значение флага продвигается дальше, Это означает, что флаг переноса является одним из блоков на колесе, содержащем 9 бит.

В командах обычного сдвига «shift» биты можно представить выстроенными в один ряд на уступе (рис. 36.4). Когда вы сдвигаете блоки, один из них падает с уступа и теряется. Вы можете затем сдвигать биты в обратном направлении, но данные уже будут потеряны. В этом состоит основное отличие этих операций от циклического сдвига, при котором не имеет значения, как часто и в каком направлении производятся сдвиги - данные никогда не будут потеряны.

Go to Top