
- •Архітектура мікроконтролерів avr. Функціональне призначення їх складових блоків
- •3 Структура памяті даних в мк авр, програмні способи доступу до памяті різних видів
- •5. Методы адресации операндов в командах Ассемблера avr-контроллера
- •8. Опосередкована адресація даних з переддекрементом в мікроконтроллерах avr
- •9. Програмний доступ до пам’яті програм в мікроконтроллерх avr. Навести програмні приклади ефективної дії такого доступу до даних.
- •13. Косвенная адресация с постинкрементом
- •Косвенная адресация данных с постинкрементом
- •14. Регістри управління паралельними портами
3 Структура памяті даних в мк авр, програмні способи доступу до памяті різних видів
Память данных микроконтроллеров AVR представляет собой отдельное адресное пространство с адресами от $0000 до $FFFF. To есть максимальный объем адресуемой памяти составляет 64 Кбайта. Однако большинство микроконтроллеров имеет гораздо меньшую память. В таких микроконтроллерах часть адресов не используется. Структура же памяти всегда одинакова. Оперативная память микроконтроллеров AVR делится на три области.
$0000—$001F — область памяти, совмещенная с регистрами общего назначения (РОН).
$0020—$005F — область памяти, совмещенная с регистрами ввода—вывода (РВВ).
$0060—$FFFF — не совмещенная ни с чем область памяти.
Эта последняя область предназначена просто для хранения данных. Эту область в свою очередь можно разделить на область внутреннего ОЗУ ($0060—RAMEND) и область внешнего ОЗУ (RAMEND+1—
$FFFF).
Под DAMEND понимается адрес последней ячейки внутреннего ОЗУ конкретного микроконтроллера.
44444444444444444
Система команд
Система команд микроконтроллеров AVR весьма развита и насчитывает в различных моделях от 90 до 133 различных инструкций. Большинство команд занимает только 1 ячейку памяти (16 бит). Большинство команд выполняется за 1 такт.
Всё множество команд микроконтроллеров AVR можно разбить на несколько групп:
команды логических операций;
команды арифметических операций и команды сдвига;
команды операции с битами;
команды пересылки данных;
команды передачи управления;
команды управления системой.
Управление периферийными устройствами осуществляется через адресное пространство данных. Для удобства существуют «сокращённые команды» IN/OUT
5. Методы адресации операндов в командах Ассемблера avr-контроллера
В AVR-микроконтроллере существует три области памяти, каждая со своей системой адресации, начинающаяся с нулевого адреса до конечного:
1. ПЗУ – постоянное запоминающее устройство, предназначенное для хранения машинных кодов управляющих программ. Сюда загружаются объектные hex-файлы, создаваемые пакетом AVR Studio. Ассемблерные команды не могут обращаться к ячейкам памяти ПЗУ.
2. EEPROM – энергонезависимое ОЗУ. Ассемблерные команды позволяют обращаться к ячейкам памяти EEPROM.
3. ОЗУ. Ячейки памяти ОЗУ используются во всех ассемблерных командах. Эта область состоит из 3-х подобластей, которые имеют последовательную сквозную адресацию.
3.1. Первая подобласть состоит из 32 регистров, которые имеют двоякую адресацию: по имени регистра (R0-R31) или по ее числовому адресу ( или от до ). Они используются для оперативного хранения результатов промежуточных вычислений.
3.2. Следующей подобластью ОЗУ являются регистры ввода/вывода, предназначенные для обмена информацией с периферийными устройствами (таймеры, компараторы, АЦП, порты дискретного ввода/вывода информации). Регистры ввода/вывода также как и регистры имеют двойную адресацию: по имени регистра ввода/вывода и по его числовому адресу. Числовой адрес регистра ввода/вывода также имеет двойное представление. Если регистр ввода/вывода используется в командах in или out, то адреса регистров ввода/вывода находятся в диапазоне с по или с по . Эти команды принадлежат к группе команд передачи данных. Если к регистрам ввода/вывода обращаются другие команды языка ассемблера, то используется адресация в диапазоне от до или от до .
Содержимое регистров и регистров ввода/вывода, определенное их именами, мы можем наблюдать в окне «Workspace». В этом окне приведена также двойная числовая адресация регистров ввода/вывода. Содержимое регистров и регистров ввода/вывода, определенное их числовыми адресами, мы можем наблюдать в окнах Memory, Register, I/O.
3.3. Область «Data». В этой области расположены ячейки памяти ОЗУ, которые используются для оперативного хранения результатов промежуточных операций. Эти ячейки имеют лишь числовую адресацию. Адрес младшей ячейки этой области или , размер этой области определяется типом контроллера.
При работе в пакете AVR Studio при установке курсора на любую ячейку памяти ОЗУ появляется всплывающая «подсказка», в которой расположено 4 элемента, разделенных знаком двоеточие. Слева от двоеточия стоит адрес ячейки памяти в 16-ой системе исчисления, а справа – содержимое ячейки памяти в 16-ой, 10-ой, 2-ой системах исчисления.
6. Прямая регистровая адресация с одним регистром Rd, При этом способе адресации данные находятся в регистре d(Rd), адрес которого содержится непосредственно в команде (рис. 1.4, а). Примером команд, использующих этот метод адресации, являются команды для
Рис. 1.4. Прямая регистровая адресация одного {а) и двух (б) регистров общего назначения работы со стеком (PUSH, POP), обмена тетрадами в регистре (SWAP), ряд команд арифметических и логических операций.
Прямая регистровая адресация с двумя регистрами Rd и Rr. Данный способ адресации применяется в командах, которые используют два регистра общего назначения: d(Rd) и r(Rr) (рис. 1.4, б). Этот вид адресации используют команды пересылки данных из регистра в регистр и большинство команд арифметических операций, ряд команд логических операций. При этих операциях результат операции сохраняется в регистре d (Rd).
Прямая адресация регистра ввода;вывода. Данный вид адресации используют для выполнения обмена между регистром ввода;вывода, расположенным в адресном пространстве ввода;вывода, и одним из регистров общего назначения по командам ESf и OUT
lds reg,number
sts reg,number
Эти команды работают с регистром (reg) и ячейкой памяти с номером (number). Команда lds грузит (load) значение из памяти в регистр, а команда sts соответственно устанавливает (set) значение регистра в память.
7. Опосередкована адресація даних в мікроконтролерах AVR . Програмні задачі, при вирішенні яких опосередкована адресація найефективніша. Навести програмні приклади, які це демонструють.
Звернення направлене до комірки пам’яті адреса якої знаходиться в індексному регістрі.
В ролі цих регістрів використовують:
R26 R27 } X
R28 R29 } Y
R30 R31 } Z
Приклад :
clr R31 ; // скидання в 0 }
ldi R30, 060h; // 060h } ініціалізація Z
LD R1 , Z;
Есть четыре типа косвенной адресации:
а) Без явного операнда, используя регистр Z: LPM
б) С явным указанием индексного регистра и регистра-получателя: LD Rn,i, где i - X,Y или Z
в) С явным указанием индексного регистра, регистра-получателя и смещения: LD Rn,i+q, где i - Y или Z, q - значение смещения относительно адреса в i
г) С предекрементом или постинкрементом индексного регистра: LD Rn,X+