- •Программируемые цифровые устройства (часть 1) содержание
- •1 Микропроцессор. Основные сведения
- •Основные характеристики мп
- •1.2 Архитектура микропроцессора. Основные понятия
- •1.2.2 Состав типичного микроконтроллера
- •1.3 Структура мп устройства.
- •1.3.1 Мп с микропрограммным управлением (микропрограммируемая архитектура)
- •Структурная схема устройства микропрограммного управления
- •Структура микро эвм с микропрограммным управлением
- •1.4 Запоминающие устройства.
- •1.4.1 Оперативное запоминающее устройство
- •Статическое озу на биполярных и полевых транзисторах
- •1.4.2 Постоянные зу
- •Однократно программируемое пзу
- •1.5 Команды, форматы команд, система команд
- •1.6 Принцип работы микропроцессора.
- •1.6.1 Модель программирования микропроцессора.
- •1.7 Способы адресации
- •1.8 Основы программирования. Ассемблер.
- •1.9 Организация передачи информации в мпс. Интерфейс.
- •2 Архитектура 8- разрядных микроконтроллеров.
- •2.1 Последовательные интерфейсы микропроцессорных систем
- •2.1.1 Последовательный интерфейс rs-232c
- •2.1.2 Шина 1-Wire
- •Формат команды 1-Wire протокола
- •2.1.3 Интерфейс can4
- •Топология сети can.
- •Data frame стандарта can 2.0a.
- •Побитовый арбитраж на шине can.
- •2.2 Организация портов ввода/вывода
- •2.3 Таймеры и процессоры событий
- •2.4 Ввод/вывод аналоговых сигналов
- •Структурная схема типового модуля ацп
- •Цап на основе таймера в режиме шим
- •2.5 Контроллеры последовательного ввода/вывода
- •2.5.1 Модуль последовательного обмена uart
- •Упрощенная структура модуля uart.
- •2.5.2 Последовательный периферийный интерфейс spi
- •2.5.3 Синхронный последовательный интерфейс i2c
- •Временные диаграммы шины i2c
- •Взаимосинхронизация на шине i2c
- •2.6 Минимизация потребления энергии
- •2.7 Повышение надежности работы мк
- •2.7.1 Мониторинг напряжения питания мк
- •Временные диаграммы работы схемы por
- •Переход мк в состояние сброса по сигналам схемы por и модуля пониженного напряжения питания
- •2.7.2 Сторожевой таймер
- •Структурная схема сторожевого таймера
- •Принцип действия сторожевого таймера
- •3 Периферийные устройства
- •3.1 Генератор и схема начального сброса
- •3.2 Кнопки и датчики
- •3.3 Подключение светодиодных индикаторов
- •3.4 Подключение жидкокристаллических индикаторов
- •3.5 Комбинированное использование портов
- •3.6 Подключение реле и электромагнитных исполнительных устройств
- •3.7 Подключение мк к компьютеру через последовательный порт
- •3.8 Подключение интегрального датчика температуры с интерфейсом 1- Wire
- •4 Микроконтроллеры с архитектурой mcs-51
- •4.1 Особенности архитектуры mcs-51
- •4.2 Структура микроконтроллеров mcs-51
- •4.2.1 Внутренняя структура mcs-51
- •Структура микроконтроллера mcs-51
- •4.2.2 Организация памяти и программно доступные ресурсы
- •Организация памяти в микроконтроллерах семейства 8051
- •4.2.3 Система команд и методы адресации
- •4.3 Современные мк с архитектурой mcs-51
- •5 Микроконтроллеры с risc- архитектурой
- •5.2 Однокристальные risc- контроллеры avr
- •5.2.1 Способы адресации в микроконтроллерах avr
- •5.3 Микроконтроллеры семейства msp430
- •5.3.1 Архитектура
- •5.3.2 Система тактирования
- •5.3.3 Встроенная эмуляция
- •5.3.4 Адресное пространство
- •5.4 Сравнение микроконтроллеров различных семейств
- •6 Разработка систем на бис программируемых цифровых устройств
- •6.1 Основы проектирования систем на микроконтроллерах и плис
- •6.2 Технология разработки микропроцессорных контроллеров
- •6.2.1 Основные этапы цикла разработки микропроцессорного контроллера
- •Литература
5.2.1 Способы адресации в микроконтроллерах avr
Ключевым моментом к пониманию функций, выполняемых каждой командой, помимо кода операции являются используемые командой способы адресации данных (операндов).
Микроконтроллеры AVR применяют разнообразные способы адресации данных. По количеству и способам адресации они превосходят возможности микроконтроллеров MCS-51. Можно осуществить доступ к любой области памяти данных (регистрам общего назначения, регистрам ввода/вывода, памяти SRAM), а также Flash-памяти программ и энергонезависимой памяти данных EEPROM. При этом часто к одному и тому же объекту можно обратиться разными способами, используя для этого соответствующий вид адресации. Рассмотрим их подробнее.
Прямая регистровая адресация с одним регистром Rd. При этом способе адресации данные находятся в регистре d(Rd), адрес которого содержится непосредственно в команде (рис.). Примером команд, использующих этот метод адресации, являются команды для работы со стеком (PUSH, POP), обмена тетрадами в регистре (SWAP), ряд команд арифметических и логических операций.
Рис. – Прямая регистровая адресация одного регистра общего назначения
Прямая регистровая адресация с двумя регистрами Rd и Rr. Этот способ адресации применяется в командах, которые используют два регистра общего назначения: d(Rd) и r(Rr) (рис. 1.4, б). Этот вид адресации используют команды пересылки данных из регистра в регистр и большинство команд арифметических операций, ряд команд логических операций. При этих операциях результат операции сохраняется в регистре d (Rd).
Рис. – Прямая регистровая адресация двух регистров общего назначения
Прямая адресация регистра ввода/вывода. Данный вид адресации используют для выполнения обмена между регистром ввода/вывода, расположенным в адресном пространстве ввода/вывода, и одним из регистров общего назначения по командам IN и OUT (рис.).
Рис. – Прямая адресация регистра ввода/вывода
Прямая адресация памяти данных. Данный способ адресации применяется при обращении к любой ячейке адресного пространства SRAM. Имеются всего две команды: LDS и STS, каждая длиной в два слова (32 разряда). Первое слово содержит код операции и адрес регистра общего назначения, второе - 16-разрядный адрес ячейки, к которой направлено обращение (рис.).
Рис. – Прямая адресация памяти данных
Косвенная адресация памяти данных. При косвенной адресации обращение направлено к ячейке памяти, адрес которой находится в 16-разрядном индексном регистре X, Y или Z (рис.). В роли этих регистров выступают пары регистров: R26, R27 (регистр X), R28, R29 (регистр Y) и R30, R31 (регистр Z).
Рис. – Косвенная адресация памяти данных
Косвенная адресация памяти данных со смещением. При этом способе адрес ячейки памяти определяется путем суммирования содержимого индексного регистра Y или Z с 6-разрядным смещением, задаваемым в команде (рис.). Этот способ адресации используют команды LDD (пересылка байта из ячейки памяти SRAM в регистр Rd) и STD (пересылка байта из регистра Rr в ячейку SRAM).
Рис. – Косвенная адресация памяти данных со смещением
Косвенная адресация памяти данных с преддекрементом. При этом способе адресации содержимое индексного регистра X, Y или Z сначала уменьшается на 1, а затем производится обращение к памяти по полученному адресу (рис.). Этот способ адресации используют команды LD (пересылка байта данных из памяти в регистр Rd) и ST (пересылка байта данных из регистра Rr в память), всего шесть команд – по две для каждого регистра.
Рис. – Косвенная адресация с преддекрементом
Косвенная адресация памяти данных с постинкрементом. При этом способе адресации содержимое индексного регистра X, Y или Z сначала используется в качестве адреса обращения к памяти данных, а затем увеличивается на 1 (рис.). Этот способ адресации используют команды LD (пересылка байта данных из памяти в регистр Rd) и ST (пересылка байта данных из регистра Rr в память), всего шесть команд – по две для каждого регистра.
Рис. – Косвенная адресация с постинкрементом
Косвенная адресация памяти программ. Микроконтроллеры AVR позволяют обратиться к ячейкам памяти программ для считывания констант, а в моделях семейства Mega – и для записи данных во Flash-память программ, используя механизм косвенной адресации через регистр Z. При этом старшие 15 разрядов регистра определяют адрес слова, а младший нулевой разряд – младший или старший байт слова. Если младший разряд адреса равен 0, выбирается младший байт, в противном случае выбирается старший байт (рис.). Данный вид адресации используют команды считывания из ячейки памяти в регистр R0 (LPM) и записи в память из регистров R1:R0 (SPM).
Рис. – Косвенная адресация констант в памяти программ
Кроме простой косвенной адресации при чтении константы в регистр Rd можно применить косвенную адресацию с постинкрементом (команда LPM Rd, Z+). Помимо команд, связанных с передачей данных, косвенная адресация может быть использована в командах косвенного перехода по адресу в регистре Z (IJMP) и косвенного вызова подпрограммы через регистр Z (1СALL) (рис.).
Рис. – Косвенная адресация памяти программ
Относительная адресация памяти программ. При этом способе адрес вычисляют путем сложения содержимого программного счетчика PC и константы k, задаваемой в команде (рис.). Относительную адресацию используют команды относительного перехода (RJMP) и относительного вызова подпрограммы (RCALL), многочисленная группа команд условных переходов.
Рис. – Относительная адресация памяти программ
Непосредственная адресация. Данный вид адресации подразумевает указание одного из операндов (константы К) непосредственно в команде. Непосредственная адресация используется командой пересылки константы в регистр LDI, а также некоторыми командами арифметических и логических операций.
Битовая адресация. Этот вид адресации позволяет указать один из восьми битов любого из 32 регистров общего назначения или первой половины регистров ввода/вывода с номерами 0-31, а также регистра SREG. Для этого нужно указать имя регистра общего назначения Ri (i = 0...31) либо имя регистра ввода/вывода Pi (i = 0…31), либо имя SREG и номер бита b (b = 0.. .7). Командами SBI и CBI осуществляется установка в 1 и сброс в 0 указанного бита регистра ввода/вывода, командами BLD, BST – обмен значениями бита Т из регистра SREG и адресованного бита из регистра общего назначения. Помимо этого есть группа команд битовых операций, обеспечивающая установку и сброс битов регистра состояния SREG. При записи мнемоники команд допускается использование символических (штатных) имен регистров ввода/вывода и имен битов. Существует группа команд условного перехода, где в качестве условия используется либо значение бита в регистре общего назначения (SBRC, SBRS), либо значение бита в регистре ввода/вывода (SBIC, SBIS).