Система команд микроконтроллера

Микроконтроллер имеет 255 команд: пересылки данных, арифметических операций, логических операций, передачи управления, операций с битами. По формату команды могут быть одно-, двух- и трехбайтовыми.

Команда ADD A, «байт-источник» [3].

Эта команда (сложение) складывает содержимое аккумулятора А с содержимым байта-источника, оставляя результат в аккумуляторе. Для команды сложения разрешены следующие способы адресации байта-источника:

1) регистровый (в качестве операнда используются регистры R0-R7);

2) косвенно-регистровый (@ — префикс косвенной адресации, в качестве регистров-указателей памяти могут использоваться R0 и R1);

3) прямой (указывается прямой адрес байта РПД или регистра специальных функций);

4) непосредственный (# — префикс непосредственных данных).


Команда LCALL «ad16».

Команда «длинный вызов» вызывает подпрограмму, находящуюся по указанному адресу. К счетчику команд РС прибавляется 3 для получения адреса следующей команды и после этого полученный 16-битовый результат помещается в стек (сначала следует младший байт, за ним — старший), а содержимое указателя стека SP увеличивается на 2.

Затем старший и младший байты счетчика команд загружаются соответственно вторым и третьим байтом команды LCALL. Выполнение программы продолжается командой, находящейся по полученному адресу. Подпрограмма может начинаться в любом месте памяти программ объемом до 64 Кбайт. Команда на флаги не влияет.

Команда RET.

Команда «возврат из подпрограммы» последовательно выгружает старший и младший байты счетчика команд из стека, уменьшая указатель стека на 2. Выполнение основной программы продолжается по адресу команды, следующей за АCALL или LCALL. На флаги эта команда не влияет.

Команда RETI.

Команда «возврат из прерывания» выгружает старший и младший байты счетчика команд из стека, уменьшая указатель стека на 2. Устанавливает логику прерываний, разрешая прием других прерываний с уровнем приоритета, равным уровню приоритета только что обработанного прерывания. Слово состояния программы PSW не восстанавливается автоматически.

Выполнение основной программы продолжается с команды, следующей за командой, на которой произошел переход к обнаружению запроса на прерывание. Если при выполнении команды RETI обнаружено прерывание с таким же или меньшим уровнем приоритета, то одна команда основной программы успевает выполниться до обработки такого прерывания.



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: