Лекция: Rol register ; Циклический сдвиг влево

 

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

 

 

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

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

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

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

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

 

еще рефераты
Еще работы по информатике