Система команд PIC-контроллеров серии PIC16C8X
Каждая команда контроллеров серии 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.
Источник: http://gaw.ruЧитайте далее: Проходной конденсатор - больше, чем просто конденсатор!, Как правильно выбрать величину индуктивности дросселя?, Самодельные радиаторы для полупроводниковых приборов, Улучшение приема FM радиовещания в некоторых видеокартах, Графическая среда для разработки программного обеспечения микроконтроллеров, Реализация последовательной асинхронной передачи данных в микроконтроллерах PIC, Программное дeкодирование DTMF по принципу АОН на базе микроконтроллера PIC16F628, Декодировка сигналов тонального набора номера, Что такое GPS?, Типоразмеры компонентов для монтажа на поверхность, Сетка телевизионных каналов, используемых в России., Пайка алюминия, Расчетные формулы при работе с проволокой, CAN 2.0 А, CAN интерфейс, CTN - Многоцветные скрученные нематики, Мой первый проект на PIC микроконтроллере, Индикатор опасности (катастроф), Сильноскрученный нематик (HTN),
|