Система команд PIC-контроллеров серии PIC16C8X

Каждая команда представляет собой 14-разрядное слово, содержащее поле кода операции OPCODE и поле операндов. Система команд включает в себя команды работы с байтами, команды работы с битами, команды управления и операции с константами.



Для команд работы с байтами "f" обозначает регистр, с которым производится действие, а бит "d" определяет регистр назначения. При "d"=0 результат помещается в регистр W, при "d"=1 результат помещается в регистр "f", заданный в команде.

Для команд работы с битами "b" обозначает номер бита, участвющего в команде, а "f" - регистр, в котором этот бит расположен.

Для команд управления и операций с константами "k" обозначает 8- или 11-битовую константу или идентификатор.

Все команды выполняются в течение одного командного цикла, кроме следующих двух случаев:

  • Переход по проверке условия, если результат проверки условия - истина.
  • Изменение счетчика команд как результат выполнения команды.

В этих случаях команда выполняется за два цикла с выполнением второго цикла как NOP. Один командный цикл состоит из четырех периодов генератора. Таким образом, для генератора с частотой 4 МГц время выполнения команды составит 1 мкс. Если выполняется переход по проверке условия или в результате выполнения команды изменился счетчик команд, время выполнения этой команды при тактовой частоте 4 МГц составит 2 мкс.

Принятые обозначения f: Адрес регистра W: Рабочий регистр b: Номер бита в 8-ми разрядном регистре k: Константа x: Не используется. Ассемблер формирует код с х=0 d: Регистр назначения:
d=0 - результат в регистре W
d=1 - результат в регистре f.
По умолчанию d=1 label: Имя метки TOS: Вершина стека РС: Счетчик команд ТО: Тайм-аут PD: Выключение питания dest: Регистр назначения: рабочий регистр W или регистр, заданный в команде []: Необязательные параметры (): Содержание -->: Присвоение <>: Битовое поле О: Из набора

Обозначение Функция Циклы Код команды Биты состояния Примечания ADDLW Сложение константы и W 1 11 111x kkkk kkkk C, DC, Z   ADDWF Сложение W c f 1 00 0111 dfff ffff C, DC, Z 1, 2 ANDLW Логическое И константы и W 1 11 1001 kkkk kkkk Z   ANDWF Логическое И W и f 1 00 0101 dfff ffff Z 1, 2 BCF Сброс бита в регистре f 1 01 00bb bfff ffff   1, 2 BSF Установка бита в регистре f 1 01 01bb bfff ffff   1, 2 BTFSC Пропустить команду, если бит в f равен нулю 1 (2) 01 10bb bfff ffff   3 BTFSS Пропустить команду, если бит в f равен единице 1 (2) 01 11bb bfff ffff   3 CALL Вызов подпрограммы 2 10 0kkk kkkk kkkk     CLRF Сброс регистра f 1 00 0001 1fff ffff Z 2 CLRW Сброс регистра W 1 00 0001 0xxx xxxx Z   CLRWDT Сброс сторожевого таймера WDT 1 00 0000 0110 0100 __ __
TO, PD   COMF Инверсия регистра f 1 00 1001 dfff ffff Z 1, 2 DECF Декремент регистра f 1 00 0011 dfff ffff Z 1, 2 DECFSZ Декремент f, пропустить команду, если 0 1 (2) 00 1011 dfff ffff   1, 2, 3 GOTO Переход по адресу 2 10 1kkk kkkk kkkk     INCF Инкремент регистра f 1 00 1010 dfff ffff Z 1, 2 INCFSZ Инкремент f, пропустить команду, если 0 1 (2) 00 1111 dfff ffff   1, 2, 3 IORLW Логическое ИЛИ константы и W 1 11 1000 kkkk kkkk Z   IORWF Логическое ИЛИ W и f 1 00 0100 dfff ffff Z 1, 2 MOVF Пересылка регистра f 1 00 1000 dfff ffff Z 1, 2 MOVLW Пересылка константы в W 1 11 00xx kkkk kkkk     MOVWF Пересылка W в f 1 00 0000 1fff ffff     NOP Холостая команда 1 00 0000 0xx0 0000     OPTION Загрузка регистра OPTION 1 00 0000 0110 0010     RETFIE Возврат из прерывания 2 00 0000 0000 1001     RETLW Возврат из подпрограммы с загрузкой константы в W 2 11 01xx kkkk kkkk     RETURN Возврат из подпрограммы 2 00 0000 0000 1000     RLF Сдвиг f влево через перенос 1 00 1101 dfff ffff C 1, 2 RRF Сдвиг f вправо через перенос 1 00 1100 dfff ffff C 1, 2 SLEEP Переход в режим SLEEP 1 00 0000 0110 0011 __ __
TO, PD   SUBLW Вычитание W из константы 1 11 110x kkkk kkkk C, DC, Z   SUBWF Вычитание W из f 1 00 0010 dfff ffff C, DC, Z 1, 2 SWAPF Обмен местами тетрад вf 1 00 1110 dfff ffff   1, 2 TRIS Загрузка регистра TRIS 1 00 0000 0110 0fff     XORLW Исключающее ИЛИ константы и W 1 11 1010 kkkk kkkk Z   XORWF Исключающее ИЛИ W и f 1 00 0110 dfff ffff   1, 2

Примечание:

  • Если модифицируется регистр ввода/вывода (например, MOVF PORTB,1), то используется значение, считываемое с выводов. Например, если в выходной защелке порта, включенного на ввод, находится "1", а внешнее устройство формирует на этом выводе "0", то в этом разряде данных будет записан "0".
  • Если операндом команды является содержимое регистра TMRO (и, если допустимо, d=1), то предварительный делитель, если он подключен к TMRO, будет сброшен.
  • Если в результате выполнения команды изменяется счетчик команд, или выполняется переход по проверке условия, то команда выполняется за два цикла. Второй цикл выплняется как NOP.






  • Рекомендуемый контент




    Copyright © 2010-2017 housea.ru. Контакты: info@housea.ru При использовании материалов веб-сайта Домашнее Радио, гиперссылка на источник обязательна.