ВУЗ:
Составители:
АЛУ поддерживает арифметические и логические операции как
между регистрами, так и между регистром и константой. Также оно
выполняет однооперандные операции (например, декремент). Из-за того,
что практические все инструкции имеют 16-битный формат (1 слово), вся
FLASH-память программ организована как 4К×16 бит (вместо 8К×8),
поэтому одна команда занимает одну ячейку памяти и считывается за один
такт.
В этом МК есть 32 регистра быстрого доступа (R0…R31) – general-
purpose working registers – которые Вы будете использовать при обработке
данных для хранения временных переменных (при отключении питания
содержимое ОЗУ теряется) и выполнения над ними различных операций. За
1 цикл = 1 такту (обычно) производится чтение в АЛУ операндов,
выполнение нужной операции и сохранение результата. 6 из этих регистров
(R26…R31) могут использоваться объединенными по 2, т.е. как три 16-
разрядных регистра X, Y и Z, которые используются для косвенной
адресации пространства данных (Data Space). Один из них используется
для выборки элементов-констант из таблицы с
автоинкрементом/декрементом адреса. Регистры быстрого доступа
являются первыми 32 регистрами пространства данных (адреса 00h…1Fh).
Все байт-ориентированные команды могут использовать в качестве
операндов любые из этих регистров. ОДНАКО исключение составляют 6
«константных» команд: операции с константой и регистром (SBCI, SUBI,
CPI, ANDI и ORI) и команда загрузки регистра константой (LDI). Эти
инструкции могут выполняться только над второй половиной регистров
(R16…R31).
Пространство памяти ввода/вывода (I/O memory space) содержит 64
ячейки – регистры управления (Control Registers), регистры
таймеров/счетчиков, АЦП, UART и другие регистры для работы с
периферией МК. Все I/O регистры (порты) и регистры для работы с
периферией размещаются в пространстве данных ввода-вывода. Обычно
доступ к этим регистрам производится прямой адресацией (адреса
$00…$3F), например:
in R0, $3F ; прочитать в регистр R0 содержимое SREG
В этом случае обращение производится по командам работы с регистрами
ввода/вывода - IN или OUT . Символ ‘$’ обозначает, что число после него в
шестнадцатиричной системе счисления.
Однако регистры ввода-вывода можно адресовать и как обычные
файловые регистры, в этом случае к их адресу необходимо прибавить $20.
Это объясняется тем, что регистры быстрого доступа и регистры ввода-
вывода принадлежат одному пространству – пространству данных – и
имеют в нем сквозную нумерацию адресов:
Поэтому ту же команду (R0 ← SREG) можно произвести и так:
mov R0, $5F
Рис.4.2. Регистры быстрого доступа AVR
Страницы
- « первая
- ‹ предыдущая
- …
- 25
- 26
- 27
- 28
- 29
- …
- следующая ›
- последняя »
