Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Rol register ; Циклический сдвиг влево



При арифметическом сдвиге все биты регистра сдвигаются вправо, при (том бит 7 не изменяется, а бит 0 загружается в флаг переноса (С). Как и флаг нуля, этот флаг расположен в регистре SREG. При логическом сдвиге вправо все биты регистра сдвигаются вправо, а 7-й бит сбрасывается в 0. Циклический сдвиг право осуществляется через флаг переноса, т.е. значение флага переноса заносится в 7-й бит, а 0-й бит исходного содержимого регистра загружается в флаг переноса. Все описанные операции проиллюстрированы на Рис. 8.

При изменении узора необходимо исключить появление на краях строки битов, установленных в 1, так как это приведет к несвоевременному включению краевых СИД, и требуемый узор будет нарушен. Из этого следует, что подойдут только команды lsl или lsr. Воспользуемся командой lsl, сдвигающей узор влево.

1. Нельзя применять команды сдвига lsl, lsr непосредственно к регистру PortB,поэтому потребуется считать текущее состояние светодиодов в регистр temp сдвинуть temp, а затем записать его обратно в PortB.

2. Перед пересылкой регистра temp в PortB проверяем, не вышли ли мы за границу строки (не был ли это уже восьмой сдвиг), и, если это так, сбросить PortB в исходное состояние (все выходы, кроме РВ0, выключены)

3. Возникновение этой ситуации можно контролировать, отслеживая состояние флага переноса, который установится в 1 при сдвиге единичного бита за пределы строки.

Для этого используется команда:





Дата публикования: 2015-02-03; Прочитано: 530 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...