Белов, А.В. Микроконтроллеры AVR: от азов программирования до создания практических устройств
Шаг 5. Переходим непосредственно к разработке устройств и программ 221 (ОЫ 0000000). Для сдвига влево в единицу устанавливается младший разряд (0Ь00000001). 2. Вывести значение рабочего регистра в порт РВ. 3. Вызвать подпрограмму задержки. Задержка нужна для того, чтобы скорость «бега» огней была нормальная для глаз наблюдателя. Если бы не было задержки, то скорость «бега» была бы столь велика, что мы бы и не увидели движения огней. С точки зрения наблюдателя мерцание огней выглядело бы как слабое свечение всех светодиодов. 4. Сдвинуть содержимое рабочего регистра вправо (влево) на один раз ряд. 5. Проверить, не окончился ли полный цикл сдвига (8 шагов). 6. Если полный цикл сдвига не закончен, перейти к пункту 2 данного алгоритма. Это приведет к тому, что пункты 2,3,4, 5 и 6 повторятся 8 раз, и лишь затем завершится полный цикл сдвига. Программа на Ассемблере Возможный вариант программы приведен ниже (см. листинг 5.9). В программе встречается несколько новых операторов. Кроме того, мы будем иметь дело с новым для нас флагом. Этот флаг также является одним из разрядов регистра SREG и называется флагом переноса. Это полезно запомнить. Флаг переноса — это разряд, куда помещается бит переноса при выполнении операций сложения двух чисел или бит заема при опера циях вычитания. Содержимое флага переноса так же, как и содержимое флага нулевого результата Z, может служить условием для оператора условного перехода. Кроме своего основного предназначения, флаг переноса иногда выпол няет и вспомогательные функции. Например, он участвует во всех опе рациях сдвига в качестве дополнительного разряда. Теперь рассмотрим подробнее все новые операторы. Isr _________________________________________________________ Логический сдвиг вправо. Этот оператор имеет всего один параметр — имя регистра, содержимое которого сдвигается. Схематически данная операция выглядит следующим образом: 0 — > d7 — > d6 — > d5 — > d4 — > d3 — > d2 — > dl — > d0 — > С. To есть содержимое младшего разряда переносится в флаг переноса С, на его место поступает содержимое разряда 1, в разряд 1 попадает
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==