
- •Конспект лекцій з дисципліни «мікропроцесорні системи»
- •1.1. Принципы построения цифровых систем управления
- •1.2. Развитие средств микропроцессорной техники
- •1.1. Принципы построения цифровых систем управления
- •1.2. Развитие средств микропроцессорной техники
- •2.1. Структура и основные части микропроцессорной системы
- •2.2. Типовая структурная схема цифровой мпс
- •2.3. Структурные схемы систем с Фон Неймановской и Гарвардской архитектурой
- •2.4. Обмен информацией между мпс и внешними устройствами
- •2.5. Классификация мпс
- •3.2. Функциональная схема и набор интерфейсных сигналов
- •3.3. Программная модель и система команд
- •3.4. Формат команды, способы адресации операндов
- •4.2. Арифметико-логическое устройство
- •4.3. Память микроконтроллеров семейства mcs-51
- •5.1. Параллельные порты ввода/вывода
- •5.2. Система прерываний mcs-51
- •5.1. Параллельные порты ввода/вывода
- •5.2. Система прерываний mcs-51
3.3. Программная модель и система команд
Программная модель показывает программно доступные части микропроцессора и микропроцессорной системы. Программная модель позволяет программисту проще ориентироваться в структуре микропроцессорной системы, не отвлекая его внимания на ненужные при программировании детали. На рис. 3.1 приведен пример программной модели микропроцессорной системы на основе 8-разрядного микропроцессора. На схеме показан микропроцессор и его программно доступные части: АЛУ, аккумулятор (А), регистр флагов (F), регистры общего назначения (B,C,D,E,H,L), программный счетчик (PC), регистр указатель стека (SP). Подробно описаны биты регистра флагов: S – бит знака (повторяет старший бит аккумулятора), Z – флаг нулевого результата (устанавливается, если в аккумуляторе 0), AC – флаг вспомогательного переноса (из младшей тетрады в старшую), P – флаг четности, CY – флаг переноса (из старшего значащего бита). На схеме показаны также память(M) и порты ввода/вывода(I/O).
Рис. 3.1. Программная модель микропроцессорной системы
Микропроцессор это программно-управляемое устройство, все действия в нем выполняются с помощью команд. Системой команд называется совокупность всех элементарных команд, выполняемых микропроцессором.
Команды из системы команд микропроцессора принято делить на группы. Для большинства микропроцессоров можно выделить шесть основных групп команд: передача данных, арифметические операции, логические операции, операции сдвига, операции передачи управления и управление микропроцессором.
Группа команд передачи данных загружает регистры микропроцессора данными из ячеек памяти, сохраняет содержимое регистров в памяти, переносит данные из одного регистра в другой или из одной ячейки памяти в другую. К этой же группе обычно относятся команды загрузки данных в стек и извлечение данных из стека.
Арифметические команды такие как команды сложения, вычитания, умножения и деления выполняют двоичные арифметические операции над целыми двоичными операндами. Не все микропроцессоры поддерживают все четыре функции. Например, многие микроконтроллеры обеспечивают только команды сложения и вычитания и вынуждают программистов писать короткие программы чтобы выполнить умножение или деление. Многие микропроцессоры включают команды инкремента и декремента двоичных чисел.
Инкрементом называется увеличение содержимого регистра или ячейки памяти на единицу. Декремент, соответственно, уменьшение содержимого регистра или ячейки памяти на единицу.
Микропроцессоры которые поддерживают форматы десятичных чисел имеют специальные инструкции для выполнения арифметических операция с двоично-десятичными числами. Некоторые микропроцессоры имеют непосредственные команды сложения и вычитания двоично-десятичных чисел, однако большинство используют для сложения обычные команды двоичного сложения с последующей операцией коррекции результата. Очень часто необходимо выполнять арифметические операции над многоразрядными двоичными числами, то есть числами разрядность которых больше разрядности микропроцессора. В этом случае используются операции сложения и вычитания использующие флаг переноса.
Группа логических команд выполняет булевы операции И, ИЛИ, исключающее ИЛИ над битами операндов. Эти операции дают микропроцессору возможность устанавливать, сбрасывать, инвертировать или проверять отдельные биты или группы битов в ячейках памяти, регистрах или портах ввода/вывода. Команда И позволяет сбрасывать выбранные биты слова в нуль. Второй операнд тогда должен содержать набор битов, называемых маской, который содержит нуль в каждой позиции, которая должна быть сброшена в нуль, и единицу в каждой позиции, которая должна остаться неизменной. Подобные маски могут быть созданы для команд ИЛИ для установки выбранных битов в единицу и для команды исключающее ИЛИ для инвертирования выбранных битов. Многие устройства ввода/вывода имеют специальный регистр состояния, в битах которого отражается способность устройства выполнять операции. Команда И может выделить отдельные биты в регистре состояния, чтобы определить находятся они в состоянии нуля или единицы.
Команды сдвига и вращения сдвигают биты операнда вправо или влево. Это может быть использовано для выделения битов или совмещения нескольких битов в операнде, для перевода данных из параллельной в последовательную форму, для выполнения операций умножения и деления на числа, равные степеням двойки. Операция логического сдвига сдвигает биты вправо или влево на один бит, свободный бит замещается нулем. Для чисел без знака это эквивалентно делению или умножению на два. Команда арифметического сдвига вправо выполняет деление на два над двоичными числами в дополнительном коде, путем сохранения старшего знакового бита в то время как операнд сдвигается на один бит вправо. Некоторые микропроцессоры позволяют выполнять операции многократных сдвигов за одну команду. Команды циклических сдвигов (вращений) выполняют операцию сдвига с заполнением освобождающегося бита битом, выдвигаемым из начала или конца операнда. Используются также операции циклических сдвигов через бит переноса. В этих операциях бит переноса выступает как дополнительный бит операнда.
Нормальный порядок выполнения команд в программе это последовательное их выполнение в направлении возрастания адресов. Чтобы изменить этот порядок используются специальные команды ветвлений (передачи управления). Эти команды прерывают обычный порядок выполнения команд и позволяют перейти в произвольное место программы, обеспечивая тем самым программирование разветвляющихся и циклических алгоритмов. В систему команд микропроцессора обычно включают команды безусловных и условных переходов. Команды безусловных переходов могут передавать управление в любое место памяти путем загрузки программного счетчика новым адресом команды. Команды условных переходов перед выполнением перезагрузки командного счетчика проверяют состояние флагового регистра микропроцессора. Если проверяемое условие истинно, то осуществляется переход, в противном случае программа продолжает обычное выполнение. В современных микропроцессорах, кроме того, есть специальные команды организации циклов. В этих командах один из регистров микропроцессора используется в качестве счетчика и при каждом прохождении цикла декрементируется, а при достижении нулевого состояния цикл прекращается. Для поддержки модульного программирования в систему команд вводятся команды работы с подпрограммами. Команды перехода к подпрограммам обычно записывают текущее состояние программного счетчика в стек, чтобы сохранить адрес команды следующей за командой вызова. Команда возврата из подпрограммы извлекает из стека сохраненный адрес и загружает его в программный счетчик. Тем самым осуществляется возврат к прерванной программе.
Команды управления микропроцессором позволяют изменять режимы работы микропроцессора.