Мнемоника | Описание | Циклы | Флаги | Прим. |
Байт-ориентированные команды | ||||
ADDWF f,d | Сложение W с f | 1 | C,DC,Z | 1,2 |
ANDWF f,d | Логическое "И" W с f | 1 | Z | 1,2 |
CLRF f | Сброс регистра f | 1 | Z | 2 |
CLRW | Сброс регистра W | 1 | Z | - |
COMF f,d | Инверсия регистра f | 1 | Z | 1,2 |
DECF f,d | Декремент регистра f | 1 | Z | 1,2 |
DECFSZ f,d | Декремент f, пропустить команду, если 0 | 1(2) | Z | 1,2,3 |
INCF f,d | Инкремент регистра f | 1 | Z | 1,2 |
INCFSZ f,d | Инкремент f, пропустить команду, если 0 | 1(2) | Z | 1,2,3 |
IORWF f,d | Логическое "ИЛИ" W c f | 1 | Z | 1,2 |
MOVF f,d | Пересылка регистра F | 1 | Z | 1,2 |
MOVWF f | Пересылка W в F | 1 | - | |
NOP | Холостая команда | 1 | - | |
RLF f,d | Вращение f влево через перенос | 1 | C | 1,2 |
RRF f,d | Вращение f вправо через перенос | 1 | C | 1,2 |
SUBWF f,d | Вычитание W из f | 1 | C,DC,Z | 1,2 |
SWAPF f,d | Обмен местами тетрад в f | 1 | 1,2 | |
XORWF f,d | Исключающее "ИЛИ" W и f | 1 | Z | 1,2 |
Операции с константами и управляющими регистрами | ||||
ADDLW k | Сложение константы с W | 1 | C,DC,Z | - |
ANDLW k | Логическое "И" константы и W | 1 | Z | - |
IORLW k | Логическое "ИЛИ" константы и W | 1 | Z | - |
SUBLW k | Вычитание W из константы | |||
MOVLW k | Пересылка константы в W | 1 | - | |
XORLW k | Исключающее "ИЛИ" константы и W | 1 | Z | - |
OPTIONS | Загрузка OPTIONS регистра | 1 | 4 | |
TRIS f | Загрузка TRIS регистра | 1 | 4 | |
Бит-ориентированные команды | ||||
BCF f,b | Сброс бита b в регистре f | 1 | 1,2 | |
BSF f,b | Установка бита b в регистре f | 1 | 1,2 | |
BTFSC f,b | Пропустить команду, если бит b=0 | 1(2) | 3 | |
BTFSS f,b | Пропустить команду, если бит b=1 | 1(2) | 3 | |
Переходы | ||||
CALL k | Вызов подпрограммы | 2 | - | |
CLRWDT (k) | Сброс Watchdog таймера | 1 | /TO,/PD | - |
GOTO k | Переход по адресу | 2 | - | |
RETLW k | Возврат из подпрограммы с загрузкой константы в W | 2 | - | |
RETFIE | Возврат из прерывания | 2 | - | |
RETURN | Возврат из подпрограммы | 2 | - | |
SLEEP | Переход в режим SLEEP | 1 | /TO,/PD | - |
Мнемоники специальных инструкций | ||||
Мнемоника | Описание | Эквивалентные операции |
Флаги | Прим. |
ADDCF f,d | Добавить бит C к регистру | BTFSC STATUS,0 INCF f,d |
Z | |
ADDDCF f,d | Добавить бит DC к регистру | BTFSC STATUS,1 INCF f,d |
Z | |
B k | Переход | GOTO k | - | |
BC k | Переход если C=1 | BTFSC STATUS,0 GOTO k |
- | |
BDC k | Переход если DC=1 | BTFSC STATUS,1 GOTO k |
- | |
BNC k | Переход если C=0 | BTFSS STATUS,0 GOTO k |
- | |
BNDC k | Переход если DC=0 | BTFSS STATUS,1 GOTO k |
- | |
BNZ k | Переход если не ноль | BTFSS STATUS,2 GOTO k |
- | |
BZ k | Переход если ноль | BTFSC STATUS,2 GOTO k |
- | |
CLRC | Очистить бит C | BCF STATUS,0 - |
||
CLRDC | Очистить бит DC | BCF STATUS,1 |
- | |
CLRZ | Очистить бит Z | BCF STATUS,2 |
- | |
LCALL k | ||||
LGOTO k | ||||
MOVFW f | Пересылка регистра в W | MOVF f,0 | Z | |
NEGF f,d | Изменение знака регистра | COMF f,1 INCF f,d Z |
||
SETC | Установить бит C | BSF STATUS,0 |
- | |
SETDC | Установить бит DC | BSF STATUS,1 |
- | |
SETZ | Установить бит Z | BSF STATUS,2 |
- | |
SKPC | Пропустить если C=1 | BTFSS STATUS,0 |
- | |
SKPDC | Пропустить если DC=1 | BTFSS STATUS,1 |
- | |
SKPNC | Пропустить если C=0 | BTFSC STATUS,0 |
- | |
SKPNDC | Пропустить если DC=0 | BTFSC STATUS,1 |
- | |
SKPNZ | Пропустить если не ноль | BTFSC STATUS,2 |
- | |
SKPZ | Пропустить если ноль | BTFSS STATUS,2 |
- | |
SUBCF f,d | Вычесть бит C из регистра | BTFSC STATUS,0 DECF f,d |
Z | |
SUBDCF f,d | Вычесть бит DC из регистр | BTFSC STATUS,1 DECF f,d |
Z | |
TSTF f | Проверка регистра | MOVF f,1 | Z |
f - адрес регистра (0x00 - 0x7f)
d - выбор приемника для результата (d=0: результат сохраняется в W; d=1: результат сохраняется в регистр f. По умолчанию d=1.)
b - адрес бита (0 - 7) в регистре
k - символьное поле, константа, метка.
Примечание 1: Когда модифицируется регистр ввода/вывода, например MOVF 6,1, значение, используемое для модификации считывается непосредственно с ножек кристалла. Если значение защелки вывода для ножки, запрограммированной на вывод равно "1", но внешний сигнал на этом выводе "0" из-за "навала" снаружи, то будет считываться "0".
Примечание 2: Если операндом этой команды является регистр TMR0 (и, если допустимо, d=1), то делитель, если он подключен к Timer0, будет обнулен.
Примечание 3: Если изменяется Program Counter (PC) или выполняется заданное условие, то команда требует два цикла. Второй цикл выполняется как NOP.
Примечание 4: Команды TRIS и OPTION помещены в перечень команд для совместимости с семейством PIC16C5X. Их использование не рекомендуется. В PIC16C84 регистры TRIS и OPTION доступны для чтения и записи как обычные регистры с номером. Предупреждаем, что эти команды могут не поддерживаться в дальнейших разработках PIC16CXX.