Белов, А.В. Микроконтроллеры AVR: от азов программирования до создания практических устройств

276 Микроконтроллеры AVR от азов программирования... В строке 126 нашей программы (листинг 5.17) к содержимому реги ­ стровой пары R30:R31 прибавляется единица. По сути, в данном случае мы добавляем константу к содержимому регистровой пары Z. Ц> _________________________________________________________ Сравнение двух РОН. Команда имеет два параметра. Оба параме ­ тра — это имена регистров общего назначения. Команда не изменяет содержимого самих регистров. Она просто производит их сравнение. По результатам сравнения устанавливаются флаги в регистре SREG. После команды сравнения обычно применяется одна из команд условного пере ­ хода. ГОІ _________________________________________________________ Циклический сдвиг содержимого регистра влево через признак переноса. Это еще один оператор сдвига. В данном случае сдвиг битов производится по кругу, как показано на рис. 5.15. В этот круг включена ячейка признака переноса С. .db Рис. 5.15. Схема выполнения операции циклического сдвига влево Директива описания данных. Эта директива так же, как и уже извест ­ ная нам директива dw предназначена для описания данных, помещаемых в память программ или в EEPROM. Директива db , в отличие от dw , описывает не двухбайтовые слова данных, а отдельные байты. Значения, которые нужно поместить в память, записываются справа после опера ­ тора db через запятую. Каждое такое значение не должно превышать 255 (максимальное число, которое можно записать при помощи одного байта). Если данных очень много, для их записи можно применять несколько операторов db, расположенных непосредственно друг за другом. Однако при этом нужно учитывать один важный момент. Сколько бы значений ни было записано в правой части директивы db, она всегда записывает четное их количество. Это связано с указателем текущего адреса в сег ­ менте cseg. Указатель работает с основной адресацией и должен переместиться на целое количество ячеек памяти в соответствии с этой адресацией. А в этой адресации каждая ячейка вмещает в себя два байта данных. Поэтому в том случае, если программист все же укажет нечетное количе ­ ство параметров, то директива db в конце припишет еще один, который будет равен нулю. Поэтому, если вам необходимо записать в память боль ­

RkJQdWJsaXNoZXIy MTExODQxMg==