Регистр состояния SREG микроконтроллеров AVR
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

 

Регистр состояния содержит флаги условий микроконтроллеров AVR и располагается в области ввода/вывода по адресу $3F (адрес SRAM – $5F). После подачи сигнала сброса он инициализируется нулями.

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

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

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

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

-разряд 3 (V) – флаг переполнения при вычислениях в дополнительных кодах (Two's complement Overflow); поддерживает арифметику дополнительных кодов (арифметика кодов с дополнением до двух); устанавливается, если при выполнении соответствующей операции происходит переполнение, в противном случае – сбрасывается;

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

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

-разряд 6 (Т) – флаг копирования (Transfer or Copy); предназначен для свободного применения программистом (например, в качестве буфера);

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

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

 

Память SRAM микроконтроллеров AVR предназначена для хранения тех данных, которые не помещаются в рабочих регистрах, а также для организации программного стека. Данные обычно сохраняют в SRAM, начиная с первых адресов, а стеку соответствуют верхние адреса.

Если объема внутренней памяти SRAM недостаточно, то в некоторых микроконтроллерах AVR его можно увеличить до 64 Кбайт посредством подключения внешних блоков памяти. Для этого в регистре MCUCR (адрес в области ввода/вывода – $35, адрес в SRAM – $55) следует установить в лог. 1 разряд SRE (разряд 7). После установки этого разряда порты А и С будут выступать в качестве шины адреса и шины данных, а выводы 7 и 6 порта D – в качестве управляющих сигналов чтения /RD и, соответственно, записи /WR для внешней памяти SRAM), независимо от того, какие направления передачи данных установлены для этих портов в соответствующих регистрах направления передачи данных.

Стек

 

Стек – это особая область памяти данных, используемая процессором для временного хранения адресов возврата из подпрограмм, промежуточных результатов вычислений и др. В микроконтроллерах PIC и некоторых микроконтроллерах AVR стек реализован аппаратно – для этого выделено отдельное запоминающее устройство фиксированного объема в несколько (или несколько десятков) байт. Для микроконтроллеров AVR компиляторы языка С (например, при обращении к подпрограммам) могут также создавать один или более стеков программно, начиная с верхних адресов области SRAM.

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

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

Память программ

 

Память программ как в микроконтроллерах AVR, так и в микроконтроллерах PIC реализована по технологии Flash–EPROM, которая подразумевает программирование пользователем и вытирание электрическим способом. Размер этой памяти варьируется в зависимости от микроконтроллера и обычно составляет несколько Кбайт командных слов.

Флэш–память является энергонезависимой, то есть, сохраняет записанную в нее информацию даже после отключения питания микроконтроллера. Несмотря на то, что память этого типа – программируемая, для записи в нее используются только внешние аппаратные средства, поэтому с точки зрения программиста можно сказать, что память программ доступна только для чтения.

Адресация команд в памяти программ реализуется с помощью специального регистра – счетчика команд, разрядность которого определяет допустимый размер этой памяти. Разрядность ячеек памяти программ, в зависимости от типа микроконтроллера, может составлять 14…16 бит.

Кроме того, следует отметить, что в микроконтроллерах PIC в первых ячейках памяти программ (начиная с адреса 0x0000) содержатся векторы (адреса перехода) сброса и прерываний.

Дата: 2019-05-28, просмотров: 220.