Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции.doc
Скачиваний:
288
Добавлен:
20.06.2014
Размер:
1.06 Mб
Скачать
        1. Регистры общего назначения, регистр состояния и указатель стека микроконтроллера aTmega8535

          1. Регистры общего назначения

Множество регистров общего назначения в документации Atmel называется регистровым файлом. Число регистров общего назначения — 32. Разрядность — 8. Они обозначаются как R0 — R31. Каждый регистр ассоциируется с определенным адресом памяти данных: R0 — 0x00, R1 — 0x01, … R31 — 0x1F. Таким образом, регистровый файл занимает первые 32 байта адресного пространства, хотя физически эти регистры не являются ячейками памяти данных. Последние шесть регистров R26 – R31 составляют попарно три 16-разрядных регистра-указателя X, Y и Z, которые используются для косвенной адресации.

Для адресации регистра общего назначения требуется пять бит в коде команды. Это довольно много, особенно если учесть, что большинство команд AVR двухбайтные. В архитектуре x86 требуется всего три бита для адресации регистра, а команды там бывают намного длиннее. Поэтому для экономии места в коде некоторых команд отводится четыре бита под адрес регистра, и могут быть использованы только регистры старшей половины — r16-r31. Это, например, команда непосредственной загрузки регистра, ldi rd, k , где 16<=d<=31.

          1. Регистр состояния (sreg)

Регистр состояния фиксирует признаки выполнения арифметических и логических операций, которые затем могут быть использованы для организации потока управления командами условных переходов. Регистр состояния относится к числу регистров ввода-вывода.

Формат SREG:

  1. Бит 7 — I: Global Interrupt Enable, флаг разрешения прерываний. Установка в единицу приводит к общему разрешению прерываний. Конкретные прерывания управляются отдельными битами в соответствующих регистрах. Если флаг I сброшен, никакие прерывания не разрешены вне зависимости от установок конкретных прерываний. Флаг прерывания сбрасывается аппаратно при переходе к обработке прерывания и устанавливается командой RETI для разрешения последующих прерываний. I-флаг может быть также установлен и сброшен программно с помощью команд SEI и CLI.

  2. Бит 6 — T: Bit Copy Storage, бит загрузки-размещения, временный бит. Бит T используется командами BLD (Bit LoaD) и BST (Bit STore) как источник или назначение обрабатываемого бита.

  3. Бит 5 — H: Half Carry Flag, флаг полупереноса (переноса между тетрадами). Устанавливается при выполнении арифметических операций в случае переноса из младшей тетрады байта в старшую или заема из старшей тетрады. Полезен в двоично-десятичной арифметике.

  4. Бит 4 — S: Sign, флаг знака, позволяет представить результат арифметической операции над восьмиразрядными числами в виде девятиразрядного числа, являясь как раз девятым разрядом. S = N  V.

  5. Бит 3 — V: Two’s Complement Overflow Flag, флаг переполнения (при операциях над числами в дополнительном до двух коде), устанавливается, если результат арифметической операции выходит за пределы допустимого диапазона знаковых чисел: -128  127.

  6. Бит 2 — N: Negative Flag, флаг отрицательного результата, устанавливается, если старший разряд результата, бит 7, равен единице.

  7. Бит 1 — Z: Zero Flag, флаг нуля.

  8. Бит 0 — C: Carry Flag, флаг переноса.

Все флаги SREG порождают условия, по которым может быть произведен переход.