Читайте также: |
|
Выполняя программу, микроконтроллер обрабатывает команду за командой. Команда задает выполняемую операцию и содержит сведения об участвовавших в ней операндах. После приема команды происходит ее расшифровка и выполнение, в ходе которого микроконтроллер получает необходимые данные из памяти или внешних устройств. Ячейки памяти и внешние порты имеют номера, называемые адресами, которыми они обозначаются в программе.
Таким образом по однонаправленной адресной шине посылаются адреса, определяя объект, с которым будет обмен по шине данных (двунаправленной). По шине управления в разных направлениях передаются управляющие сигналы.
Микроконтроллеры семейства MCS-51 построены по Гарвардской архитектуре. Это означает, что память данных и память программ в этих микросхемах разделены и имеют отдельное адресное пространство. В этих микроконтроллерах имеется пять адресных пространств:память программ, внешняя память данных три для внутренней памяти. Такое построение памяти позволяет удвоить доступное адресное пространство. Кроме того, такое построение памяти позволяет в ряде случаев увеличить быстродействие микросхем.
Память состоит из ячеек, каждой из которых присваивается свой адрес. Совокупность адресов, которые могут быть сформированы процессором, образует адресное пространство микроконтроллера. Адреса памяти могут занимать все адресное пространство или его часть, а линейно организованная память независимо от ее технической реализации может быть представлена набором регистров (ячеек), число которых M, а разрядность –N. Свои адреса имеют и внешние устройства. Процессор при обмене данными всегда должен выбрать только одну из ячеек памяти или одно внешнее устройство. Такой выбор осуществляется схемами декодирования адреса. При управлении памятью и внешними устройствами процессор должен вначале сформировать нужный адрес, который затем декорируется.
Применяется несколько способов формирования адресов.
При прямой адресации код адреса содержится в команде, подлежащей выполнению. Прямая адресация удобна, но удлиняет команды (увеличивает их разрядность), т. к. при больших емкостях памяти разрядности адресов достаточно велики. В случае прямой регистровой адресации, когда операнд находится в одном из внутренних регистров процессора, адрес является мало разрядным, поскольку число таких регистров мало. В этом случае прямая адресация проявляет все свои достоинства.
При косвенной адресации в команде явно или неявно указывается адрес регистра процессора, содержащий сведения об адресе операнда. Команда сохраняет компактность, но для ее выполнения требуется предварительная настройка – загрузка сведений в регистр косвенного адреса (индексный регистр). Косвенная адресация удобна при обработке списков, когда настройка производится однократно, а очередной адрес получается модификацией предыдущего (изменением его на единицу). В зависимости от действий, которые производятся над содержимым индексного регистра при формировании адреса различают несколько видов косвенной адресации:
- простая, когда обращение к ячейке памяти осуществляется по адресу, находящемся в индексном регистре, т. е. никаких действий над его содержимым не проводится;
- относительной, когда адрес суммированием содержимого индексного регистра и числа, задаваемого в команде. Существуют и другие разновидности косвенной адресации.
- при непосредственной адресации в команде содержится сам операнд.
Возможность использования различных видов адресации сокращает объем и время выполнения программ.
С помощью того или иного способа адресации формируется физический адресный код, поступающий на шину адреса для выбора ячейки памяти или внешнего устройства с которых в данный момент взаимодействует процессор.
Адресация может быть абсолютной или неабсолютной. При абсолютной адресации обратиться к ячейке памяти или внешнему устройству можно только по одному единственному адресу. При неабсолютной адресации для ячейки памяти или внешнего устройства выделяется некоторая
зона адресов. Число таких зон, естественно, будет меньше, чем число отдельных адресов, поэтому для указания зоны потребуется меньшая разрядность адреса.
Структура внутренней памяти рассматриваемого микроконтроллера представлена на рис. 2.
Рис. 2. Структура внутренней памяти MCS-51
Внутренняя память данных всегда адресуется байтом, что подразумевает 256 байт адресного пространства. Однако фактически можно обращаться к 384-м байтам. Прямая адресация ячейки с адресом свыше 7Fh осуществляет доступ к области регистров специальных функций, а косвенная - к верхней области внутренней памяти данных. Т.о. эти две области занимают одно и то же адресное пространство, хотя и разделены физически. Все байты в нижней 128-байтной половине внутренней памяти данных могут адресоваться как прямо, так и косвенно.
Первые 32 байта в нижней области внутреннего ОЗУ сгруппированы в 4 банка по 8 регистров. Инструкции программы могут оперировать с ними как с регистрами общего назначения R0-R7. Два бита регистра PSW определяют, какой из банков используется в текущий момент. Это позволяет более эффективно использовать память программ, поскольку регистровые инструкции короче, чем прямая адресация. Переключение регистровых банков эффективно заменяет операции сохранения регистров в стеке на время обработки прерывания.
Следующие за регистровыми банками 16 байт образуют блок побитно адресуемого пространства. Набор инструкций MCS-51 содержит широкий набор операций над битами, а 128 бит (16 байт по 8) в этом блоке могут быть прямо адресованы. Битовые адреса имеют значения от 00h до 7Fh.
Для 16 адресов в пространстве SFR (регистры специальных функций) имеется возможность как битовой, так и байтовой адресации. Побитово-адресуемыми регистрами являются те, чей шестнадцатеричный адрес заканчивается на “0” или “8”. Битовые адреса в этой области располагаются со значения 80h по FFh.
Наиболее часто используемыми регистрами специальных функций являются:
- Аккумулятор (байтовый адрес 0E0h). Используется во всех арифметических и логических операциях в качестве операнда;
- Регистр B (байтовый адрес - 0F0h). Используется при операциях умножения и деления, а также как сверхоперативный регистр;
- Слово состояния программы PSW (байтовый адрес - 0D0h). Содержит информацию о состоянии программы;
- Указатель стека (байтовый адрес -081h). Используется для указания на вершину стека в операциях записи в стек и чтения из него. По аппаратному сбросу устанавливается в значение 07h (область стека в этом случае начинается с адреса 08h) и инкрементируется при каждой записи в стек. Запись в SP производится для предопределения положения стека во внутренней памяти данных микроконтроллера;
- Указатель данных DPTR (байтовые адреса 082h, 083h). Состоит из двух байт: старшего - DPH и младшего - DPL. Используется как 16-ти или 8-битовый указатель адреса при обращении к внешней памяти или выполнении команды перехода по косвенному адресу.
Система команд микроконтроллера предоставляет большие возможности обработки данных, обеспечивает реализацию логических, арифметических операций, а также управление в режиме реального времени.
Реализована побитная, потетрадная (4 бита), побайтовая (8 бит) и 16-разрядная обработка данных. Микросхемы семейства MCS-51 - это 8-разрядные микропроцессоры, а это означает, что ПЗУ, ОЗУ, регистры специального назначения, АЛУ и внешние шины имеют байтовую организацию.
Двухбайтовые данные используются только регистром-указателем (DPTR) и счетчиком команд (PC).
Все множество команд, выполняемых микроконтроллером, можно разбить на следующие группы:
● команды пересылки данных;
● команды арифметических операций;
● команды логических операций;
● команды операций с битами;
● команды передачи управления;
● команды управления системой (специальные команды).
Дата добавления: 2015-07-20; просмотров: 137 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Краткие теоретические сведения | | | Запись исходного текста программы на языке программирования ASM-51 |