- •Программируемые цифровые устройства (часть 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 Основные этапы цикла разработки микропроцессорного контроллера
- •Литература
1.7 Способы адресации
Система адресации обеспечивает в МП устройствах доступ к операндам, хранящимся в устройствах памяти, внутренних программно- доступных регистрах и внешних устройствах через порты ввода/вывода. Длина формата команды (общее количество бит в коде команды) определяет скорость выполнения команды и зависит от способа адресации операндов. Способы адресации играют большую роль в организации управления ходом выполнения программы, во многом определяют скорость обработки информации. Существуют следующие основные способы адресации:
прямая,
косвенная,
непосредственная,
автоинкрементная (автодекрементная),
страничная,
индексная,
относительная
Прямая адресация – исполнительный адрес размещается в адресном поле команды. В этом способе непосредственно используется счетчик команд и аккумулятор МП. При прямой адресации содержимое счетчика команд передается на ША и из адресуемой ячейки выбирается очередная команда, поступающая в устройство управления МП. С помощью прямой адресации в АЛУ может вызываться и операнд. Для этого на ША передается адрес ячейки памяти, содержащийся в команде. При необходимости изменения последовательного порядка выполнения программы адресуется ячейка памяти, содержащая адрес условного или безусловного перехода. Команда, содержащая прямой адрес, занимает 2-3 ячейки памяти, что соответственно требует и 2-3 обращений к памяти. Еще одно обращение может потребоваться для непосредственного вызова операнда.
С использованием прямой адресации могут быть загружены только аккумулятор и регистры выделенные для хранения косвенного адреса (в МП типа К580, i - 8080 и 8085 это регистровая пара Н). В современных микроконтроллерах для косвенной адресации обычно используется несколько регистровых пар.
Пример: LDA 0A00 - эта команда загружает аккумулятор (регистр А) содержимым ячейки памяти 0А00. Формат этой команды:
-
3A
00
0A
Код операции LDA
Младший байт адреса
Старший байт адреса
Преимущества этого способа адресации – простота и наглядность, не требуется вычисление исполнительного адреса.
Недостаток – низкая скорость обработки информации, кроме того, во многих микропроцессорных системах для поля адреса в формате команды выделяется небольшое число битов, что ограничивает доступный для данного способа объем адресного пространства памяти.
Непосредственная адресация - данные включены в команду и собственно обращения к памяти при этом способе загрузки регистров не требуется. Команда вместо указания адреса операнда содержит этот операнд непосредственно. Непосредственная адресация используется при операциях с константами, исполнение команд с непосредственной адресацией отличается быстротой.
Пример: MVI C D3 - эта команда загружает регистр С значением D3 (число представлено в шестнадцатеричном коде, т.е. является 8- разрядным двоичным числом).
Косвенная адресация – адресное поле команды указывает не адрес операнда, а лишь адрес ячейки, в которой хранится косвенный адрес, по которому можно получить операнд. В МП косвенная адресация обычно является неявной регистровой. В этом случае команда предписывает выполнить операцию над операндом, адрес которого содержится в регистрах общего назначения (обычно для этого выделяются определенные регистры блока РОН). Так, команда MOV REG,M загружает любой регистр из ячейки памяти, адрес которой содержится в регистровой паре H,L. Команда LDAX загружает аккумулятор с использованием адреса, содержащегося в регистровой паре B или D (используя регистры B или D можно осуществить косвенную загрузку только аккумулятора).
Пример: MOV D,M - эта команда загружает регистр D из ячейки памяти, адрес которой содержится в регистрах H,L. Отметим, что логически для процессора ячейка памяти с адресом, содержащимся в регистрах H,L эквивалентна регистру с индексом М (ячейку памяти с этим адресом называют регистром М. Естественно, адрес этой ячейки памяти меняется с изменением содержимого регистров H,L, а сам "регистр М" физически находится вне процессора).
Преимущество косвенной адресации в том, что косвенный адрес операнда содержит больше битов, чем число битов в адресном поле команды, т.е. доступен больший объем адресного пространства памяти. Недостатком является увеличение времени для извлечения операнда по сравнению со способом прямой адресации.
Относительная индексная адресация (автоинкрементная и автодекрементная) – базовый исполнительный адрес вычисляется так же, как и при регистровой косвенной адресации, а следующие исполнительные адреса получаются увеличением или уменьшением текущего адреса операнда на определенную величину после каждой обработки адреса. Обычно такая адресация используется при обработке массивов данных. В этом случае список данных представляется как совокупность индексных операндов. Операнды с индексами помещаются в соседних ячейках памяти. Для организации доступа к этим ячейкам памяти используются индексные регистры аналогичные в данном случае счетчику команд. Для двумерного массива истинный адрес
ИА = [базовый адрес] + (содержимое индексных регистров)
Для перебора операндов с индексами осуществляется автоиндексация, т.е. добавление к содержимому регистров плюс или минус единицы. Разновидностью автоиндексации является стековая адресация. В этом случае автоиндексный регистр является указателем стека, а область памяти им адресуемая, – стеком. Принцип стековой адресации заключается в следующем: после каждой засылки в стек, содержимое указателя стека увеличивается, а после каждого изъятия из стека - уменьшается на единицу.
Относительная адресация – исполнительный адрес получается сложением адресного поля команды с содержимым базового регистра процессора. Это сложение производится в специальном сумматоре. Относительная адресация применяется в командах перехода.
Страничная адресация – память делится на ряд страниц одинаковой длины. Адресация страниц осуществляется по содержимому программного счетчика или регистра страниц. Адресация памяти внутри страниц производится адресом, который содержится в команде.
Обращение к подпрограммам. Ряд процедур в ЭВМ часто используется различными программами или одной и той же программой многократно. Такие процедуры могут быть стандартизированы и оформлены в виде подпрограмм.
В этом случае вся программа может быть представлена в виде объединения основной программы и подпрограмм. Обращение к подпрограмме происходит из основной программы.
Перед обращением к подпрограмме необходимо запомнить адрес возврата в основную программу. Адрес возврата обычно запоминается в первой ячейке выполняемой подпрограммы. При этом возврат осуществляется по команде безусловного перехода с косвенной адресацией по содержимому первого слова подпрограммы.
Наиболее эффективной адресацией при обращении к подпрограммам является стековая адресация. Адрес возврата записывается в вершину стека, а после выполнения подпрограммы выталкивается из стека и размещается в счетчике команд. Часто в стек вводится содержимое не только счетчика команд, но и всех регистров МП. При использовании стека характерной особенностью выхода из подпрограммы является использование безадресной команды ВОЗВРАТ. По этой команде процессор извлекает из памяти адрес, откуда произошел вызов подпрограммы, и переходит к команде, непосредственно следующей за этим адресом. Затем программа выполняется в обычном режиме.
Применение подпрограмм позволяет придать программе свойство структурированности. Функционально законченную процедуру удобно оформлять в виде подпрограммы даже если в основной программе она используется только один раз. Например, подпрограмма вывода кода управления семисегментным индикатором, подпрограмма генерации звукового сигнала и т.д. Из подпрограмм- библиотек удобно конструировать разнообразные программы.
Прерывания
Любой процессор имеет как минимум один вход прерывания. При поступлении сигнала прерывания, если прерывание разрешено, управление передается специальной процедуре обработки прерывания. Подпрограмма обработки прерывания завершается командой выхода из процедуры прерывания. По этой команде процессор возвращается к тому месту основной программы, где произошло прерывание. В результате применения процедуры прерывания достигается эффект независимости двух процессов. Машинное время микропроцессора распределяется между процессом выполнения основной программы и процессами обработки прерываний. Различают внутренние и внешние прерывания, вызванные одним из внутренних узлов микропроцессора или сигналом от внешнего устройства. Вектор прерывания – адрес в программной памяти, с которого начинается процедура обработки прерывания.