приветствую создателей курса и благодарю за доступ к информации! понимаю, что это уже никто не исправит, но, возможно, будут следующие версии и было бы неплохо дать расшифровку сокращений имен регистров итд, дабы закрепить понимание их роли в общем процессе. |
Архитектура однокристального микроконтроллера
Память программ
В зависимости от модификации, различные типы БИС МК-51 имеют разное распределение внутренней и внешней памяти программ (см.табл. 14.1)), оставляя неизменной максимально допустимую общую емкость в 64 Кбайт. Память программ адресуется с помощью 16-разрядной адресной шины с использованием счетчика команд (program counter -PC), который вырабатывает 16-разрядные адреса. Она имеет байтовую организацию и доступна только для чтения.
Обращение к внутренней или внешней памяти программ происходит автоматически с применением аппаратных средств МК. При этом в зависимости от состояния управляющего входа DEMA микроконтроллера вся память трактуется либо как только внешняя (при DEMA = 0), либо как внутренняя, занимающая младшие адреса адресного пространства, и внешняя, занимающая адреса от старшего адреса внутренней памяти 8000h до максимально допустимого FFFFh. С точки зрения программиста имеется только один массив памяти программ емкостью 64 Кбайт.
По сигналу сброса, поступающему на вход Reset, в микроконтроллере выполняются следующие действия:
-
Устанавливаются в ноль программный счетчик PC и все регистры специальных функций, кроме защелок портов P0-P3, указателя стека SP и регистра SBuf последовательного порта, что приводит к:
- Указатель стека (SP) устанавливается в состояние SP = 07. SP указывает на верхнюю занятую ячейку стека. При обращении к стеку на запись сначала значение SP увеличивается на 1, а затем производится запись во внутреннюю память данных по адресу, хранящемуся в SP. Считывание из стека производится по адресу, хранящемуся в SP, после чего значение SP уменьшается на 1. Таким образом, стек располагается в начальный момент начиная с адреса 8. Его положение в памяти можно переопределить, записав в SP другое число.
- Защелки всех линий портов P0-P3 устанавливаются в 1, настраивая их на ввод информации.
- В регистр SBuf последовательного порта и в ОЗУ записываются случайные значения.
Система команд
Микроконтроллер имеет достаточно простую систему из 111 команд, допускающую только следующие режимы адресации:
- прямая к памяти данных (память данных или регистры специальных функций);
- косвенная к памяти данных (допустима только с использованием регистров R0 и R1 рабочего банка регистров);
- прямая к регистрам;
- непосредственная;
- прямая к битам (в битовой памяти или в регистрах специальных функций, адреса которых кратны восьми, то есть заканчиваются на 000b).
Система команд микроконтроллера МК-51 приведена в табл. 14.3.
Спецификой данной системы команд является отсутствие ортогональности, иными словами, операции, которые можно проводить с некоторыми регистрами и режимами адресации, не всегда допустимы с другими регистрами и режимами адресации. Наглядным примером этому служит то, что косвенная адресация возможна с использованием только регистров R0 и R1. Также часть команд можно выполнять только через специальный регистр-аккумулятор. Поэтому при программировании следует обращать особое внимание на то, с какими регистрами и режимами адресации может работать та или иная команда.
Примечания
- Режимы адресации:
- Dir - прямая (регистры специальных функций или память данных);
- INd - косвенная (допустима только относительно регистров R0 и R1 ; в символической записи команды обозначается @R0 или @R1 соответственно);
- Reg - прямая к регистрам;
- Imm - непосредственная (в символической записи команды начинается с # );
- bit - прямоадресуемый бит (в битовой памяти или регистрах специальных функций);
- C - битовый аккумулятор (бит CY в регистре состояния PSW );
- запись "byte" в графе "Мнемоника" означает, что операнд в этом поле может адресоваться с помощью любого режима адресации из указанных в графе "Режимы адресации";
- командах, допускающих прямую, но не регистровую адресацию, может указываться регистр общего назначения, однако при трансляции команды в машинное представление его номер будет в этом случае представлен не трех-, а 8-разрядным двоичным кодом, соответствующим прямому адресу этого регистра в памяти данных; некоторые Ассемблеры требуют для таких команд указания в явном виде номера регистра в виде прямого адреса ячейки памяти данных.
- Действия:
- инструкции MUL AB производится перемножение содержимого аккумулятора A и дополнительного аккумулятора B. Старшие разряды произведения помещаются в аккумулятор A, а младшие - в регистр B.
- инструкции DIV AB содержимое аккумулятора A нацело делится на содержимое регистра B. Частное помещается в аккумулятор A, а остаток - в регистр B. Операнды рассматриваются как целые числа без знака.
- & - конъюнкция.
- v- дизъюнкция.
- "исключающее ИЛИ".
- - логическое "НЕ".
- ЦСЛ - циклический сдвиг влево.
- ЦСП - циклический сдвиг вправо.
- операциях сдвига через С участвует 9-разрядный регистр (8разрядный аккумулятор и бит переноса С).
- <=> - обмен местами операндов.
- инструкции XCHD A,@Ri осуществляется обмен только младших тетрад операндов.
- инструкциях переходов:
- безусловных переходов adr показывает, что в команде кодируется абсолютный адрес памяти программ, по которо му осуществляется переход;
- для условных переходов rel показывает, что в команде кодируется относительный адрес памяти программ, по которому осуществляется переход при выполнении указанного условия;
- всех командах перехода при записи программы на ассемблере адрес перехода может быть задан меткой целевой команды.
- Некоторые Ассемблеры для инструкции вызова подпрограммы и инструкции безусловного перехода требуют от программиста явного указания длины генерируемого адреса перехода, то есть записи в программе инструкций ACALL, LCALL, AJMP, LJMP, SJMP, и не воспринимают инструкции CALL, JMP. Другие Ассемблеры самостоятельно генерируют инструкции, имеющие необходимую длину поля адреса в зависимости от места расположения адреса перехода, и поэтому допускают использование инструкций CALLи JMP.