НАБОР КОМАНД PIC МИКРОКОНТРОЛЛЕРОВ СЕМЕЙСТВА 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.

  • Источник

    Оставить комментарий

    Вы можете использовать следующие теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>