Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МП МПС Лабораторная работа 1 память UART.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
263 Кб
Скачать
☆

Регистр состояния srеg микроконтроллеров аvr

Регистр состояния содержит флаги условий микроконтроллеров АVR и располагается в области ввода/вывода по адресу $ЗF (адрес SRАМ — $5F). После подачи сигнала сброса он инициализируется нулями.

В микроконтроллерах АVR для обозначения результата выполнения операций используются восемь различных флагов:

разряд О (С) — флаг переноса (Саггу); указывает на переполнение (перенос) после выполнения арифметической или логической операции;

разряд 1 (2) — нулевой флаг (Zего); всегда устанавливается, если результат арифметической или логической операции равен нулю; сбрасывается, если результат операции не равен нулю;

разряд 2 (N) — флаг отрицательного результата (Negative); указывает на отрицательный результат после выполнения арифметической или логической операции;

разряд 3 (V) — флаг переполнения при вычислениях в дополнительных кодах (Тwo’s соmр1еmепt Overflow); поддерживает арифметику дополнительных кодов (арифметика кодов с дополнением до двух); устанавливается, если при выполнении соответствующей операции происходит переполнение, в противном случае — сбрасывается;

разряд 4 (S) — флаг знака (Sign); S = NV — связь флагов N и V с помощью операции "Исключающее ИЛИ"; флаг знака может применять­ся для определения фактического результата арифметической операции;

разряд 5 (Н) — флаг половинного переноса (На№ Сапу); указывает на переполнение в младшем полубайте (разряды 0...3 байта данных); устанавливается, когда происходит перенос из младшего полубайта в старший, в противном случае — сбрасывается;

разряд 6 (Т) — флаг копирования (Half Carry); предназначен для сво­бодного применения программистом (например, в качестве буфера);

разряд 7 (I) — общее разрешение прерываний (Global Interrupt); если прерывания, как таковые, должны быть разрешены, то должен быть установ­лен разряд 7 регистра состояния (в лог. 1).

Внутренняя и внешняя память srам микроконтроллеров аvr

Память SRАМ микроконтроллеров АVR предназначена для хранения тех дан­ных, которые не помещаются в рабочих регистрах, а также для организации программного стека (см. следующий подраздел). Данные обычно сохраняют в SRАМ, начиная с первых адресов, а стеку соответствуют верхние адреса.

Стек

Стек — это особая область памяти данных, используемая процессором для временного хранения адресов возврата из подпрограмм, промежуточных результатов вычислений и др. В микроконтроллерах РIС и некоторых микроконтролле­рах АVR стек реализован аппаратно — для этого выделено отдельное запоми­нающее устройство фиксированного объема в несколько (или несколько десятков) байт. Для микроконтроллеров АVR компиляторы языка С (например, при обра­щении к подпрограммам) могут также создавать один или более стеков программ­но, начиная с верхних адресов области SRАМ.

Стек действует по принципу LIFO — "Last in, First Out", что означает "по­следним вошел, первым вышел". Это означает, что новые данные вначале поме­щаются на вершину (первый уровень) стека, а затем, с поступлением следующих данных, "проталкиваются" на его нижние уровни. Извлечение из стека происходит в обратном порядке: вначале считываются данные, помещенные последними на вершину, после чего данные, размещенные на нижних уровнях, как бы "вытал­киваются" на один уровень вверх. Ячейка памяти, которая является в данный мо­мент вершиной стека, адресуется указателем стека (для АVR — регистровой па­рой SPL, SPH).

Поскольку область памяти данных, отводимая для программного стека, огра­ничивается только объемом памяти SRАМ, при написании программ следует сле­дить за тем, чтобы стек не становился слишком большим, затирая полезные данные.