МИКРОКОНТРОЛЛЕР AVR - МИКРОКОНТРОЛЛЕР AVR

Младшие модели AVR используют основные возможности этих команд, чтобы производить доступ к данным в пространстве регистров общего назначения с помощью индексного регистра Z. Это значит, что можно создавать таблицы в РОН, хотя при этом не обеспечиваются все возможности, доступные в старших моделях AVR.

Стек в старших моделях AVR реализуется с помощью команд «push» и «pop», выполняющих операции с регистрами общего назначения (команды 36.15 и 36.16). Вас это может удивить, но я избегаю использования этих команд. Вместо них я предпочитаю применять команды «ld» и «st», реализующие индексную адресацию с предекрементом и постинкрементом, так как с их помощью можно обеспечить более простой доступ к данным. При этом стек микроконтроллеров AVR служит только для сохранения содержимого программного счетчика во время выполнения подпрограмм или обработчиков прерываний.

Последняя из команд пересылки данных - это команда загрузки из памяти программ «lpm» (команда 36.17). Она служит для загрузки данных из таблиц, хранящихся в памяти программ. Хотя ее применение кажется довольно очевидным, есть одна вещь, которую следует опасаться при обращении к памяти программ. В этой команде младший бит индексного регистра Z используется для указания байта, который будет читаться (старший или младший), тогда как оставшиеся 14 бит используются для указания адреса слова (рис. 36.1). Хотя большинство таблиц может создаваться с использованием словарной организации: читаем младший байт, увеличиваем содержимое Z на 1, читаем старший байт и т.д., имеются некоторые случаи, когда это невозможно. Например, если вы имеете таблицу с нечетным числом элементов, следует позаботиться, чтобы следующие команды размещались в памяти, начиная с четных адресов, Иначе в зависимости от программного обеспечения, генерирующего объектный код, эти команды могут быть размещены так, что границы слов окажутся посередине команды.

Go to Top