52
5 Система команд микроконтроллеров AVR
5.1 Регистры состояния
Регистровый файл, блок регистров ввода/вывода и память данных обра-
зуют единое адресное пространство, что дает возможность при программирова-
нии обращаться к 32 оперативным регистрам и к регистрам ввода/вывода как к
ячейкам памяти, используя команды доступа к RAM (в том числе и с косвенной
адресацией). Младшие 32 адреса ($0–$1F) соответствуют оперативным реги-
страм. Следующие 64 адреса ($20–$5F) зарезервированы
для регистров вво-
да/вывода. Внутренняя RAM начинается с адреса $60 (знак $ указывает на
шестнадцатеричную систему счисления) [1].
Все математические операции в контроллерах AVR, как и в МК51, вы-
полняются через аккумулятор. Выполнять арифметико-логические
операции и
операции сдвига непосредственно над содержимым ячеек памяти нельзя, как и
нельзя записать константу или очистить содержимое ячейки памяти. Система
команд AVR позволяет лишь выполнять операции обмена и пересылки данных
между ячейками RAM и оперативными регистрами. Операции сложения, вычи-
тания, умножения числа А на B происходят с использованием заранее опреде-
ленных регистров, в которых, например, число А расположено в регистре R1,
число B – в регистре R2, а расположение результата будет зависеть от выбран-
ной математической операции. Следовательно, для удобства работы и увеличе-
ния производительности требуется расширенная
система команд пересылки
данных и адресации ячеек памяти. Достоинством системы команд AVR можно
считать разнообразные режимы адресации ячеек памяти. Кроме прямой адреса-
ции имеются следующие режимы: косвенная, косвенная с постинкрементом,
косвенная с предекрементом и косвенная со смещением.
Регистры ввода/вывода располагаются в
так называемом адресном про-
странстве ввода/вывода размером 64 байт. Их можно разделить на две группы:
служебные регистры микроконтроллера и регистры, относящиеся к периферий-
ным устройствам (в том числе порты ввода/вывода). Подробное описание дан-
ных регистров происходит одновременно с изучением конкретного периферий-
ного узла.
Среди регистров ввода/вывода есть регистр, используемый наиболее ча-
сто в процессе выполнения программы. Это регистр статуса SREG. Он распола-
гается по адресу $3F и содержит набор флагов (табл. 5.1), показывающих теку-
53
щее состояние микроконтроллера. Большинство
флагов автоматически уста-
навливаются в соответствии с результатом выполнения команд. Все разряды
SREG доступны как для записи, так и для чтения. После сброса микроконтрол-
лера регистр обнулен.
Таблица 5.1 – Разряды регистра состояния SREG
Do'stlaringiz bilan baham: