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

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

Различные типы сдвигов отличаются между собой тем, как заполняются освобождающиеся биты. В логических сдвигах «lsl», «lsr», заполнение всегда происходит нулями. При арифметическом сдвиге вправо «asr» знаковый разряд (бит 7) остается неизменным, что важно, когда сдвиг используется для деления числа со знаком на числа, являющиеся степенями двойки.

Рис. 36.4. Команды AVR Shift/Rotate

Последние три команды в этой группе скорее относятся к командам управления процессором и должны быть хорошо нам знакомы, так как они есть но всех типах микроконтроллеров и многих микропроцессорах. Первая из них — это команда «пор» (команда 36.69), работа которой стоп, очевидна, что чем меньше мы будем о нем говорить, тем лучше.

Команда «wdr» (команда 36.70) сбрасывает в нулевое состояние сторожевой таймер (watchdog timer) прежде, чем он получит возможность перезапустить микроконтроллер. Далее мы вернемся к рассмотрению работы сторожевого таймера в AVR.

Команда «sleep» (команда 36.71) переводит AVR в состояние ожидания с пониженным 'энергопотреблением, при котором работа микроконтроллера останавливается. Он остается в этом состоянии до поступления сигнала прерывания или запуска, которые снова переводят его в рабочее состояние. Если бит SM и регистре управления процессора MCUCR сброшен в 0. то внешние тактовые сигналы продолжают поступать, так что внутренние запросы прерывания от таймера или сторожевого устройства могут «разбудить» микроконтроллер так же, как и внешний сигнал прерывания. В документации на AVR написано, что команда «sleep» выполняется за три цикла. Эти три цикла тратятся на выполнение самой команды «sleep», а также на загрузку и выполнение следующей команды.

Go to Top