Система команд микроконтроллера
Система команд семейства микроконтроллеров MCS-51 включает 111 команд, из них 49-однобайтовых, 45-двухбайтовых, 17-трехбайтовых. Большинство команд (64) выполняются за один машинный цикл (12 периодов OSC), 45 команд выполняются за два машинных цикла, а две однобайтные команды DIR и MUL выполняются за четыре машинных цикла. В двухбайтовых командах адрес приемника определяется первым, а источник - вторым байтом.
Все множество команд MCS-51 можно разбить на пять групп: передачи данных, арифметических операций, логических операций, операций над битами и передачи управления - примеры в /23/.
В процессе исполнения команды влияют на ряд флажков - признаков результата, входящих в состав PSW.
Набор команд MCS-51 поддерживает следующие режимы адресации.
Прямая адресация, при которой операнд определяется 8-битным адресом в инструкции. Прямая адресация используется только для внутренней памяти данных и регистров SFR. Прямая адресация осуществляется через прямой восьмибитный адрес direct. В командах direct может быть задан мнемоническим обозначением (MOV A,P1; здесь P1- имя порта) либо числом (INC 40H; команда увеличения на 1 ячейки с адресом 40H), либо символическим именем (MOV A,MEMORY).
Косвенная адресация, при которой инструкция адресует регистр, содержащий адрес операнда. Данный вид адресации используется для внешнего и верхней половины внутреннего ОЗУ. Для указания восьмибитовых адресов могут использоваться регистры R0 и R1 выбранного в данный момент регистрового банка (@Ri, i=0-1), например, MOVA,@R1 или указатель стека SP.
Для шестнадцатибитной адресации используется только регистр указателя данных DPTR.
Регистровая адресация, при которой регистры R0-R7 текущего регистрового банка могут быть адресованы через конкретные инструкции, содержащие 3-битовое поле, указывающее номер регистра в самой инструкции. Такая адресация эффективна с точки зрения объема кода, так как не содержит адреса байта.
Неявная адресация, при которой используются специальные регистры, например, операции с аккумулятором, DPTR и т.д. В этом случае адрес регистра не указывается, ибо возможность использования его заложена в код операции.
Непосредственная адресация, при которой операнд (константа) непосредственно указывается в программе за кодом операции, например:
MOV A,#15; загрузка в аккумулятор десятичного числа 15.
На языке Ассемблере числа могут быть представлены в двоичном, десятичном и шестнадцатиричном коде.
Индексная адресация, которая используется для доступа к программной памяти и только в режиме чтения. Например, в этом режиме осуществляется просмотр таблиц в памяти программ. 16-битовый регистр (программный счетчик или DPTR) указывает базовый адрес требуемой таблицы, а аккумулятор указывает на точку входа в нее. Адрес таблицы располагается в программной памяти и складывается из значения аккумулятора и регистра. Индексная адресация применяется при реализации условных переходов «по выбору», когда адрес инструкции перехода вычисляется как сумма базового указателя и аккумулятора.
12.5. Периферийные устройства микроконтроллера:
Дата добавления: 2021-12-14; просмотров: 257;