Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
378
Добавлен:
21.05.2015
Размер:
7.55 Mб
Скачать
    1. Регистр статуса

В регистре статуса (SREG) хранится информация относительно результата большинства ранее выполненных арифметических или логических инструкций. Данная информация необходима для выполнения операций условия, которые управляют программным потоком. Обратите внимание, что регистр статуса обновляется после выполнения любой операции АЛУ в объеме, указанном в описании набора инструкций. Благодаря этому, во многих случаях исчезает необходимость использования специальных инструкций сравнения, что делает код программы более компактным, а его выполнение более быстрым.

Содержимое регистра статуса автоматически не запоминается при вызове процедур обработки прерывания и не восстанавливается при выходе из них. Данные действия необходимо выполнить программно.

Регистр статуса доступен в пространстве памяти ввода-вывода.

    1. Стек и указатель стека

Стек необходим для запоминания адресов возврата из процедур обработки прерывания и подпрограмм. Его также можно использовать для временного хранения данных. Регистр указателя стека (SP) постоянно указывает на вершину стека. Он реализован в виде двух 8-битных регистров, доступных в пространстве памяти ввода-вывода. Данные помещаются в стек и извлекаются из него посредством инструкций PUSH и POP. Увеличение стека происходит в направлении от старших ячеек памяти к младшим. Таким образом, при помещении данных в стек содержимое регистра SP уменьшается, а при извлечении данных - увеличивается. После сброса, SP автоматически инициализируется значением, которое равно максимальному адресу внутреннего SRAM. При необходимости изменения SP нужно учитывать, что помещаемый в него адрес должен лежать выше 0x2000, а само изменение нужно выполнить перед вызовом каких-либо подпрограмм или разрешением прерываний.

При вызове подпрограмм или при переходе по вектору прерываний адрес возврата автоматически помещается в стек. Адрес возврата может быть представлен двумя или тремя байтами, что зависит от размера памяти микроконтроллера. У МК с памятью программ 128 кбайт и менее адрес возврата двухбайтный, поэтому, указатель стека декрементируется/инкрементируется на два. У тех же микроконтроллеров, которые оснащены памятью программ размером более 128 кбайт, адрес возврата трехбайтный, а декрементирование/инкрементирование SP выполняется на три. Адрес возврата извлекается из стека при выходе из прерывания по инструкции RETI, а из подпрограммы по инструкции RET.

Если инструкцией PUSH в стек помещаются данные, то SP декрементируется на единицу. Аналогичным образом, при извлечении данных из стека инструкцией POP содержимое SP инкрементируется на единицу.

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

    1. Регистровый файл

Регистровый файл образован 32 8-битными регистрами общего назначения. Чтобы добиться требуемых быстродействия и гибкости, регистровый файл поддерживает следующие схемы ввода-вывода:

  1. Вывод одного 8-битного операнда и ввод одного 8-битного результата

  2. Вывод двух 8-битных операндов и ввод одного 8-битного результата

  3. Вывод двух 8-битных операндов и ввод одного 16-битного результата

  4. Вывод одного 16-битного операнда и ввод одного 16-битного результата

Рисунок 3.4. Рабочие регистры общего назначения ЦПУ AVR

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

Соседние файлы в папке Архитектура ЭВМ