 |
 |
|
Сводная таблица команд семейства 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.
|
 |
|