 |
 |
| |
Сводная таблица команд семейства PIC18XXXX| Мнемоника | Краткое описание | Циклов | 16-ти битный код | Изменяет флаги | Прим. | |
БАЙТ-ОРИЕНТИРОВАННЫЕ КОМАНДЫ
| | ADDWF f,d,a | Сложение W и f | 1 | 0010 01DA FFFF FFFF | C, DC, Z, OV, N | 1, 2, 6| ADDWFC f,d,a | Сложение W и f с использованием флага переноса | 1 | 0010 00DA FFFF FFFF | C, DC, Z, OV, N | 1, 2, 6| ANDWF f,d,a | Поразрядная операция И W и f | 1 | 0001 01DA FFFF FFFF | Z, N | 1, 2, 6| CLRF f,a | Очистка регистра f | 1 | 0110 101A FFFF FFFF | Z | 2, 6| COMF f,d,a | Инверсия содержимого регистра | 1 | 0001 11DA FFFF FFFF | N,Z | 1, 2, 6| CPFSEQ f,a | Операция сравнения f с W, пропуск след. команды если f=W | 1(2,3) | 0110 001A FFFF FFFF | Нет | 4, 6| CPFSGT f,a | Операция сравнения f с W, пропуск след. команды если f>W | 1(2,3) | 0110 010A FFFF FFFF | Нет | 4, 6| CPFSLT f,a | Операция сравнения f с W, пропуск след. команды если f<W | 1(2,3) | 0110 000A FFFF FFFF | Нет | 4, 6| DCFSNZ f,d,a | Уменьшение значения регистра f, пропуск следующей инструкции если результат не равен нулю | 1(2,3) | 0100 11DA FFFF FFFF | Нет | 1, 2, 3, 4, 6| DECF f,d,a | Уменьшение значения регистра f | 1 | 0000 01DA FFFF FFFF | C, DC, Z, OV, N | 1, 2, 3, 4, 6| DECFSZ f,d,a | Уменьшение значения регистра f, пропуск следующей инструкции если результат равен нулю | 1(2,3) | 0010 11DA FFFF FFFF | Нет | 1, 2, 3, 4, 6| INCF f,d,a | Увеличение значения регистра f | 1 | 0010 10DA FFFF FFFF | C, DC, Z, OV, N | 1, 2, 3, 4, 6| INCFSZ f,d,a | Увеличение значения регистра f, пропуск следующей инструкции если результат равен нулю | 1(2,3) | 0011 11DA FFFF FFFF | Нет | 1, 2, 3, 4, 6| INFSNZ f,d,a | Увеличение значения регистра f, пропуск следующей инструкции если результат не равен нулю | 1(2,3) | 0100 10DA FFFF FFFF | Нет | 1, 2, 3, 4, 6| IORWF f,d,a | Поразрядная операция ИЛИ W и f | 1 | 0001 00DA FFFF FFFF | Z, N | 1, 2, 6| MOVF f, d, a | Пересылка f | 1 | 0101 00DA FFFF FFFF | Z, N | 1, 6| MOVFF fs, fd | Пересылка из fs в fd | 2(3) | 1100 FFFF FFFF FFFFS 1111 FFFF FFFF FFFFD | Нет | | MOVWF f,a | Пересылка содержимого регистра W в регистр f | 1 | 0110 111A FFFF FFFF | Нет | 6| MULWF f,a | Умножение содержимого регистров W и f | 1 | 0000 001A FFFF FFFF | Нет | 6| NEGF f, a | перевод в обратную форму записи содержимого регистра f | 1 | 0110 110A FFFF FFFF | C, DC, Z, OV, N | 1, 2, 6| RLCF f, d, a | Сдвиг влево регистра f через перенос | 1 | 0011 01DA FFFF FFFF | C, N, Z | 6| RLNCF f, d, a | Сдвиг влево регистра f (без переноса) | 1 | 0100 01DA FFFF FFFF | N, Z | 6| RRCF f, d, a | Сдвиг вправо регистра f через перенос | 1 | 0011 00DA FFFF FFFF | C, N, Z | 6| RRNCF f, d, a | Сдвиг вправо регистра f (без переноса) | 1 | 0100 00DA FFFF FFFF | N, Z | 6| SETF f,a | Установка всех битов регистра f | 1 | 0110 100A FFFF FFFF | Нет | 6| SUBFWB f,d,a | Вычитание f из W c заемом | 1 | 0101 01DA FFFF FFFF | C, DC, Z, OV, N | 1, 2, 6| SUBWF f,d,a | Вычитание W из f | 1 | 0101 11DA FFFF FFFF | C, DC, Z, OV, N | 6| SUBWFB f,d,a | Вычитание W из f c заемом | 1 | 0101 10DA FFFF FFFF | C, DC, Z, OV, N | 1, 2, 6| SWAPF f, d, a | Обмен местами полу-байт регистра f | 1 | 0011 10DA FFFF FFFF | Нет | 4, 6| TSTFSZ f,a | тест f, пропуск если ноль | 1(2,3) | 1011 BBBA FFFF FFFF | нет | 1, 2, 6| XORWF f,d,a | Поразрядная операция исключающего ИЛИ W и f | 1 | 0001 10DA FFFF FFFF | Z, N | 1, 2, 6|
БИТ-ОРИЕНТИРОВАННЫЕ КОМАНДЫ
| | BCF f,d,a | Сброс бита в f | 1 | 1001 BBBA FFFF FFFF | Нет | 1, 2, 6| BSF f,d,a | Установка бита в f | 1 | 1000 BBBA FFFF FFFF | Нет | 1, 2, 6| BTFSC f,b,a | Пропуск следующей команды если бит сброшен | 1(2,3) | 1011 BBBA FFFF FFFF | Нет | 3, 4, 6| BTFSS f,b,a | Пропуск следующей команды если бит установлен | 1(2,3) | 1010 BBBA FFFF FFFF | Нет | 3, 4, 6| BTG f,b,a | Инвертирование бита в регистра f | 1 | 0111 BBBA FFFF FFFF | Нет | 1, 2, 6|
СИМВОЛЬНЫЕ КОМАНДЫ
| | ADDLW k | Сложение W и k | 1 | 0000 1111 KKKK KKKK | C, DC, Z, OV, N | | ANDLW k | Логическая операция И W и k | 1 | 0000 1011 KKKK KKKK | Z, N | | IORLW k | Логическая операция ИЛИ W и k | 1 | 0000 1001 KKKK KKKK | Z, N | | LFSR f,k | Загрузка регистра FSR | 2 | 1110 1110 00FF KKKK 1111 0000 KKKK KKKK | Нет | | MOVLB k | Пересылка литеры в регистр BSR | 1 | 0000 0001 KKKK KKKK | Нет | | MOVLW k | Пересылка литеры в регистр W | 1 | 0000 1110 KKKK KKKK | Нет | | MULLW k | Умножение константы и W | 1 | 0000 1101 KKKK KKKK | Нет | | RETLW k | Возврат прерывания с записью константы в регистр W | 2 | 0000 1100 KKKK KKKK | Нет | | SUBLW k | Вычитание W из константы | 1 | 0000 1000 KKKK KKKK | C, DC, Z, OV, N | | XORLW k | Логическая операция исключающего ИЛИ W и k | 1 | 0000 1010 KKKK KKKK | Z, N | |
ТАБЛИЧНЫЕ КОМАНДЫ
| | TBLRD (*; *+; *-; +*) | Чтение таблицы | 2 | 0000 0000 0000 10NN NN=0 * NN=1 *+
| Нет | | TBLWT (*; *+; *-; +*) | Запись в таблицу | 2 | 0000 0000 0000 00NN NN=0 * NN=1 *+
| Нет | |
КОМАНДЫ УПРАВЛЕНИЯ
| | BC n | Переход если установлен флаг переноса (CARRY) | 1(2) | 1110 0010 NNNN NNNN | Нет | | BN n | Переход если установлен флаг отрицательного результата (N) | 1(2) | 1110 0110 NNNN NNNN | Нет | | BNC n | Переход если сброшен флаг переноса (CARRY) | 1(2) | 1110 0011 NNNN NNNN | Нет | | BNN n | Переход если сброшен флаг отрицательного результата (N) | 1(2) | 1110 0111 NNNN NNNN | Нет | | BNOV n | Переход если сброшен флаг переполнения (OV) | 1(2) | 1110 0101 NNNN NNNN | Нет | | BNZ n | Переход если сброшен флаг нулевого результата (Z) | 1(2) | 1110 0001 NNNN NNNN | Нет | | BOV n | Переход если установлен флаг переполнения (OV) | 1(2) | 1110 0100 NNNN NNNN | Нет | | BRA n | Безусловный переход | 2 | 1101 0NNN NNNN NNNN | Нет | | BZ n | Переход если установлен флаг нулевого результата (Z) | 1(2) | 1110 0000 NNNN NNNN | Нет | | CALL k,s | Вызов подпрограммы | 2 | 1110 110S KKKK KKKK 1111 KKKK KKKK KKKK | Нет | | CLRWDT | Сброс сторожевого таймера (WDT) | 1 | 0000 0000 0000 0100 | TO, PD | | DAW | Десятичная коррекция регистра W | 1 | 0000 0000 0000 0111 | C | | GOTO k | Безусловный переход | 2 | 1110 1111 KKKK KKKK 1111 KKKK KKKK KKKK | Нет | | NOP | Нет операции | 1 | 0000 0000 0000 0000 | Нет | | NOP | Нет операции | 1 | 1111 XXXX XXXX XXXX XXXX | Нет | 4| POP | Извлечение из стека | 1 | 0000 0000 0000 0110 | Нет | | PUSH | Размещение в стеке | 1 | 0000 0000 0000 0101 | Нет | | RCALL n | Относительный вызов подпрограммы | 2 | 1101 1NNN NNNN NNNN | Нет | | RESET | Сброс | 1 | 0000 0000 1111 1111 | Команда влияет на все флаги | | RETFIE s | Возврат из прерывания | 2 | 0000 0000 0001 000S | GIE/GIEH, PEIE/GIEL | | RETURN s | Возврат из подпрограммы | 2 | 0000 0000 0001 001S | Нет | | SLEEP | Переход в режим SLEEP | 1 | 0000 0000 0000 0011 | TO, PD | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
Примечания:
-
При выполнении операции чтение - модификация - запись с портом ввода вывода
исходное значение считывается с выводов порта, а не из выходных защелок
-
При записи в TMR0 предделитель TMR0 сбрасывается, если он подключен к TMR0
-
Если условие истинно, или изменяется PC, команда выполняется за два цикла.
Вторая команда NOP
-
Некоторые команды имеют 2 16-ти разрядных слова. Если по каким-то причинам
счетчик команд попадет на 2-е слово команды, то оно будет выполнено как NOP.
-
Если производится запись во внутреннюю память, то следующая команда не
начнет выполнятся до тех пор пока не закончится цикл записи.
-
В ассемблере MASM по умолчанию d=1.
|
 |
|