Курсовая работа: Микроконтроллеры семейства AVR фирмы Atmel
♦ вывод одного 8-разрядного операнда и ввод одного 8-разрядного результата вычислений;
♦ вывод двух 8-разрядных операндов и ввод одного 8-разрядного результата вычислений;
♦ вывод двух 8-разрядных операндов и ввод одного 16-разрядного результата вычислении;
♦вывод одного 16-разрядного операнда и ввод одного 16-разрядного результата вычислений.
На рис. 4 показана структура 32 регистров общего назначения, используемых в качестве рабочих регистров микроконтроллера.
Рис. 4 - Файл регистров общего назначения микроконтроллеров AVR
Большинство инструкций, оперирующих файлов регистров, имеет прямой доступ ко всем его регистрам, и большинство из них выполняется за один такт.
Как показано на рис. 5, каждому регистру также соответствует адрес в пространстве памяти данных, где они занимают первые 32 ячейки. Хотя физически регистры не входят в SRAM, такая организация памяти обеспечивает большую гибкость при доступе к регистрам. Указатель косвенного доступа к памяти (один из регистров X, Y или Z) может быть установлен на любой регистр из файла.
2.3 X-регистр, Y-регистр и Z-регистр
Регистры R26-R31, кроме своего основного назначения, имеют дополнительную функцию. Эти регистры могут служить 16-битными указателями адреса для операций, использующих косвенную адресацию. Три косвенных регистра адреса X, Y, и Zопределены так, как это показано на рис. 5.
В разных командах, использующих косвенную адресацию, эти регистры могут быть использованы как источники постоянного адреса, как адресный регистр с автоматическим приращением адреса и как регистр с автоматическим уменьшением адреса.
Рис. 5 - Сдвоенные регистры X, Y, Z
Указатель стека
Стек, главным образом, используется:
♦ для временного хранения данных;
♦ для хранения локальных переменных;
♦ для хранения адреса выхода из подпрограммы или процедуры обработки прерывания.
Регистр указателя стека всегда указывает на его вершину.
Указатель стека указывает на стековую область в памяти данных (SRAM). В стеке, кроме прочего, сохраняются;
♦ адрес выхода из подпрограммы;
♦ адрес выхода из процедуры обработки прерывания.
Поэтому в любой программе адрес начала стека необходимо определить перед тем, как будет вызвана любая подпрограмма, и перед тем, как будут разрешены прерывания. Первоначально указатель стека должен быть установлен на адрес не ниже 0x60.
Указатель стека уменьшается на единицу, когда данные записываются в стек при помощи команды PUSH, и уменьшается на два, когда в стек записывается в адрес возврата из подпрограммы или процедуры обработки прерывания.
Указатель стека увеличивается на единицу, когда данные читаются из стека при помощи команды POP, и увеличивается на два, когда данные извлекаются из стека при выходе из подпрограммы (команда RET) или завершении процедуры обработки прерывания (команда RETI).
Указатель стека во всех микросхемах AVRвыполнен в виде двух 8-разрядных регистров ввода-вывода. Число фактически используемых разрядов для каждой модели микроконтроллеров разное. В некоторых моделях, в том числе и вATtiny2313, объём памяти данных настолько мал, что для указателя стека используется только младший из регистров указателя стека (SPL). Регистр SPHу них отсутствует. Ниже показана структура регистров указателя стека для микроконтроллера ATtiny2313.
Память ATtiny2313
Теперь рассмотрим различные виды памяти микроконтроллера ATtiny2313. Архитектура AVRсодержит два основных вида памяти: