НАБОР КОМАНД PIC МИКРОКОНТРОЛЛЕРОВ СЕМЕЙСТВА — PIC16С5X / PIC18XXXX / PIC14000 / PIC16CXXX / PIC17CXXX

НАБОР КОМАНД PIC МИКРОКОНТРОЛЛЕРОВ СЕМЕЙСТВА PIC16С5X / PIC18XXXX / PIC14000 / PIC16CXXX / PIC17CXXX

НАБОР КОМАНД PIC МИКРОКОНТРОЛЛЕРОВ СЕМЕЙСТВА PIC16С5X

Мнемоника Краткое описание Циклов 12-ти битный код Изменяет флаги Прим.
БАЙТ-ОРИЕНТИРОВАННЫЕ КОМАНДЫ
ADDWF f,d Сложение W и f 1 0001 11DF FFFF C, DC, Z 1, 2, 4
ANDWF f,d Поразрядная операция «И» W и f 1 0001 01DF FFFF Z 2, 4
CLRF f Очистка регистра f 1 0000 011F FFFF Z 4
CLRW Очистка регистра W 1 0000 0100 0000 Z
COMF f,d Инвертирование битов регистра f 1 0010 01DF FFFF Z
DECF f,d Уменьшение значения регистра f 1 0000 11DF FFFF Z 2, 4
DECFSZ f,d Уменьшение значения регистра f, пропуск следующей инструкции если результат равен нулю. 1(2) 0010 11DF FFFF нет 2, 4
INCF f,d Увеличение значения регистра f на 1 1 0010 10DF FFFF Z 2, 4
INCFSZ f,d Увеличение значения регистра f, пропуск следующей инструкции если результат равен нулю. 1(2) 0011 11DF FFFF нет 2, 4
IORLW k Логическая операция включающего ИЛИ с символом и W 1 1101 KKKK KKKK Z 2, 4
IORWF f,d Логическая операция включающего ИЛИ W и f 1 0001 00DF FFFF Z
MOVF f,d Пересылка содержимого регистра f 1 0000 00DF FFFF Z 2, 4
MOVWF f Пересылка содержимого регистра W в регистр f 1 0000 001F FFFF нет 1, 4
NOP Пустая команда 1 0000 0000 0000 нет
RLF f,d Циклический сдвиг влево через флаг переноса 1 0011 01DF FFFF C 2, 4
RRF f,d Циклический сдвига вправо через флаг переноса 1 0011 00DF FFFF C 2, 4
SUBWF f,d Вычитание W из f 1 0000 10DF FFFF C, DC, Z 1, 2, 4
SWAPF f,d Обмен местами полу-байт регистра f 1 0011 10DF FFFF нет 2, 4
XORWF f,d Логическая операция исключающего ИЛИ с W и f 1 0001 10DF FFFF Z 2, 4
БИТ-ОРИЕНТИРОВАННЫЕ КОМАНДЫ
BCF f,d Очистка бита в f 1 0100 BBBF FFFF нет 2, 4
BSF f,b Установка бита в f 1 0101 BBBF FFFF нет 2, 4
BTFSC f,b Проверка на равенство бита нулю, пропускаем след. команду если да. 1(2) 0110 BBBF FFFF нет
BTFSS f,b Проверка на равенство бита 1, пропускаем след. команду если да. 1(2) 0111 BBBF FFFF Нет
СИМВОЛЬНЫЕ КОМАНДЫ И КОМАНДЫ ВЕТВЛЕНИЯ
ANDLW k Логическая операция «И» с символом и W 1 1110 KKKK KKKK Z
CALL k Вызов процедуры 2 1001 KKKK KKKK нет 1
CLRWDT Сброс Сторожевого Таймера (WDT) 1 0000 0000 0100 TO, PD
GOTO k Безусловный переход 2 101K KKKK KKKK нет
MOVLW k Пересылка литеры в регистр W 1 1100 KKKK KKKK нет
OPTION Загрузка данных в регистр OPTION 1 0000 0000 0010 нет
RETLW k Возврат с литерой в W 2 1000 KKKK KKKK нет
SLEEP Переход в режим «сна» 1 0000 0000 0011 TO, PD
TRIS f Загрузка данных в регистр TRIS 1 0000 0000 0FFF нет 3
XORLW k Логическая операция исключающего ИЛИ с символом и W 1 1111 KKKK KKKK Z

Примечания:

  1. 9-й бит счетчика команд будет установлен в 0 любой инструкцией, которая производит запись в регистр PC, кроме команды GOTO. (Просмотрите документацию по конкретному микроконтроллеру, раздел Память / Косвенная адресация данных / Регистры INDF и FSR (Memory Section/indirect Data Addressing, INDF and FSR Registers)
  2. Когда регистр ввода вывода используется для модификации самого себя (MOVF PORTB, 1), то для записи будут использоваться значения 0/1 непосредственно с ножек микроконтролера, а не значение записаное в выходную защелку порта. (См. схему устройства ноги ввода вывода из даташита.) Например если в защелку записана единица, а порт сконфигурен на ввод данных и снаружи на этом выводе логический 0, то в PORTB будет записан 0! Смысл в том, что выход защелки отделен от ножки контроллера тристабильным буфером и на вход считывается именно нога контроллера, которая за буфером. Поэтому вроде писали в порт 1, а читается 0, вот он то и пишется обратно.
  3. Инструкция TRIS f, где f=5,6, или 7 пишет значение аккумулятора W регистр управления тристабильным состоянием выходов защелок портов PORTA , B или C соответственно. 1 переводит выход в высокоимпендансное состояние и отключает от ноги выход защелки. Смысл весь в том что входной защелки у контроллера нет и нога читается прямо в шину. А на выход есть защелка у которой есть регистр управления состоянием выхода TRIS. Поэтому если выход защелки включен, то что пишем на вывод, то и читается взад, а если выход в Z состоянии, то что мы там писали на вывод не важно, все равно защелка от ноги оторвана, а взад читается то, что на ноге, а там может быть все что угодно.
  4. Если команда оперирует с регистром TMR0(и при этом d=1), тогда предделитель обнуляется (если он относится к модулю Timer 0)

 

НАБОР КОМАНД 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

Примечания:

  1. При выполнении операции чтение — модификация — запись с портом ввода вывода исходное значение считывается с выводов порта, а не из выходных защелок
  2. При записи в TMR0 предделитель TMR0 сбрасывается, если он подключен к TMR0
  3. Если условие истинно, или изменяется PC, команда выполняется за два цикла. Вторая команда NOP
  4. Некоторые команды имеют 2 16-ти разрядных слова. Если по каким-то причинам счетчик команд попадет на 2-е слово команды, то оно будет выполнено как NOP.
  5. Если производится запись во внутреннюю память, то следующая команда не начнет выполнятся до тех пор пока не закончится цикл записи.
  6. В ассемблере MASM по умолчанию d=1.

 

НАБОР КОМАНД PIC МИКРОКОНТРОЛЛЕРОВ СЕМЕЙСТВА PIC14000/PIC16CXXX

Мнемоника Описание Циклы Флаги Прим.
Байт-ориентированные команды
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,0INCF f,d Z
ADDDCF f,d Добавить бит DC к регистру BTFSC STATUS,1INCF f,d Z
B k Переход GOTO k
BC k Переход если C=1 BTFSC STATUS,0GOTO k
BDC k Переход если DC=1 BTFSC STATUS,1GOTO k
BNC k Переход если C=0 BTFSS STATUS,0GOTO k
BNDC k Переход если DC=0 BTFSS STATUS,1GOTO k
BNZ k Переход если не ноль BTFSSSTATUS,2GOTO k
BZ k Переход если ноль BTFSC STATUS,2GOTO k
CLRC Очистить бит C BCFSTATUS,0 —
CLRDC Очистить бит DC BCFSTATUS,1
CLRZ Очистить бит Z BCFSTATUS,2
LCALL k
LGOTO k
MOVFW f Пересылка регистра в W MOVF f,0 Z
NEGF f,d Изменение знака регистра COMF f,1INCF f,d Z
SETC Установить бит C BSFSTATUS,0
SETDC Установить бит DC BSFSTATUS,1
SETZ Установить бит Z BSFSTATUS,2
SKPC Пропустить если C=1 BTFSSSTATUS,0
SKPDC Пропустить если DC=1 BTFSSSTATUS,1
SKPNC Пропустить если C=0 BTFSCSTATUS,0
SKPNDC Пропустить если DC=0 BTFSCSTATUS,1
SKPNZ Пропустить если не ноль BTFSCSTATUS,2
SKPZ Пропустить если ноль BTFSSSTATUS,2
SUBCF f,d Вычесть бит C из регистра BTFSCSTATUS,0DECF f,d Z
SUBDCF f,d Вычесть бит DC из регистр BTFSCSTATUS,1DECF 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.

 

НАБОР КОМАНД PIC МИКРОКОНТРОЛЛЕРОВ СЕМЕЙСТВА PIC17CXXX

Мнемоника Краткое описание Циклов 16-ти битный код Изменяет флаги Прим.
БАЙТ-ОРИЕНТИРОВАННЫЕ КОМАНДЫ
ANDWF f,d Сложение WREG и f 1 0000 111D FFFF FFFF OV, C, DC, Z
ADDWFC f,d Прибавление WREG и Carry bit( Бита переноса) к f 1 0001 000D FFFF FFFF OV, C, DC, Z
ANDWF f,d Поразрядная операция «И» c WREG и f 1 0000 101D FFFF FFFF Z
CLRF f,s Очистка регистра f 1 0010 100S FFFF FFFF нет 3
COMF f,d Инвертирование битов регистра f 1 0001 001D FFFF FFFF Z
CPFSEQ f Операция сравнения f с WREG, пропуск след. комманды если f=WREG 1(2) 0011 0001 FFFF FFFF нет 6, 8
CPFSGT f Операция сравнения f с WREG, пропуск след. комманды если f>WREG 1(2) 0011 0010 FFFF FFFF нет 2, 6, 8
CPFSLT f Операция сравнения f с WREG, пропуск след. комманды если f<WREG 1(2) 0011 0000 FFFF FFFF нет 2, 6, 8
DAW f,s Десятичная коррекция регистра WREG 1 0010 111S FFFF FFFF C 3
DCFSNZ f,d Уменьшение значения регистра f, пропуск следующей инструкции если результат не равен нулю. 1(2) 0010 011D FFFF FFFF нет 6, 8
DECF f,d Уменьшение значения регистра f 1 0000 011D FFFF FFFF OV, C, DC, Z
DECFSZ f,d Уменьшение значения регистра f, пропуск следующей инструкции если результат равен нулю. 1(2) 0001 011D FFFF FFFF нет 6, 8
INCF f,d Увеличение значения регистра f на 1 1 0001 010D FFFF FFFF OV, C, DC, Z
INCFSZ f,d Увеличение значения регистра f, пропуск следующей инструкции если результат равен нулю. 1(2) 0001 111D FFFF FFFF нет 6, 8
INFSNZ f,d Увеличение значения регистра f, пропуск следующей инструкции если результат не равен нулю. 1(2) 0010 010D FFFF FFFF нет 6, 8
IORWF f,d Логическая операция включающего ИЛИ WREG и f 1 0000 100D FFFF FFFF Z
MOVFP f,p Пересылка содержимого регистра f в p 1 011P PPPP FFFF FFFF нет
MOVPF p,f Пересылка содержимого регистра p в f 1 010P PPPP FFFF FFFF Z
MOVWF f Пересылка содержимого регистра WREG в регистр f 1 0000 0001 FFFF FFFF нет
MULWF f Перемножение WREG с f 1 0011 0100 FFFF FFFF нет 9
NEGW f,s Изменить знак WREG 1 0010 110S FFFF FFFF OV, C, DC, Z 1, 3
NOP Пустая команда 1 0000 0000 0000 0000 нет
RLCF f,d Циклический сдвиг влево через флаг переноса 1 0001 101D FFFF FFFF C
RLNCF f,d Циклический сдвиг влево (без переноса) 1 0010 001D FFFF FFFF нет
RRCF f,d Циклический сдвига вправо через флаг переноса 1 0001 100D FFFF FFFF C
RRNCF f,d Циклический сдвига вправо (без флага переноса) 1 0010 000D FFFF FFFF нет
SETF f,s Установка всех битов f в 1 1 0010 101S FFFF FFFF нет 3
SUBWF f,d Вычитание WREG из f 1 0000 010D FFFF FFFF OV, C, DC, Z 1
SUBWFB f,d Вычитание W из f с заемом 1 0000 001D FFFF FFFF OV, C, DC, Z 1
SWAPF f,d Обмен местами полу-байт регистра f 1 0001 110D FFFF FFFF нет
TABLRD t,i,f Чтение таблицы 2 (3 тактов, если f=PCL) 1010 10TI FFFF FFFF нет 7
TABLWT t,i,f Табличная запись 2 (и больше если происходит запись во встроенную EEPROM ) 1010 11TI FFFF FFFF нет 5
TLRD t,f Считывание Защелки таблицы 1 1010 00TX FFFF FFFF нет
TLWT t,f Запись в Защелку таблицы 1 1010 01TX FFFF FFFF нет
TSTFSZ f Проверка f, пропуск след. ком. если 0. 1(2) 0011 0011 FFFF FFFF нет 6, 8
XORWF f,d Логическая операция исключающего ИЛИ с WREG и f 1 0000 110D FFFF FFFF Z
БИТ-ОРИЕНТИРОВАННЫЕ КОМАНДЫ
BCF f,b Очистка бита в f 1 1000 1BBB FFFF FFFF нет
BSF f,b Установка бита в f 1 1000 0BBB FFFF FFFF нет
BTFSC f,b Проверка на равенство бита нулю, пропускаем след. команду если да. 1(2) 1001 1BBB FFFF FFFF нет 6, 8
BTFSS f,b Проверка на равенство бита 1, пропускаем след. команду если да. 1(2) 1001 0BBB FFFF FFFF нет 6, 8
BTG f,b Инвертирование бита в регистра f 1 0011 1BBB FFFF FFFF нет
СИМВОЛЬНЫЕ КОМАНДЫ И КОМАНДЫ ВЕТВЛЕНИЯ
ADDLW k Сложение литеры и WREG 1 1011 0001 KKKK KKKK OV, C, DC, Z
ANDLW k Логическая операция «И» с символом и WREG 1 10011 0101 KKKK KKKK Z
CALL k Вызов процедуры 2 111K KKKK KKKK KKKK нет 7
CLRWDT Сброс Сторожевого Таймера (WDT) 1 0000 0000 0000 0100 TO, PD
GOTO k Безусловный переход 2 110K KKKK KKKK KKKK None 7
IORLW k Логическая операция включающего ИЛИ с символом и WREG 1 1011 0011 KKKK KKKK Z
LCALL k Вызов дальней процедуры 2 1011 0111 KKKK KKKK нет 4, 7
MOVLB k Пересылка литеры в младший полубайт регистра BSR 1 1011 1000 UUUU KKKK Нет
MOVLR k Пересылка литеры в старший полубайт регистра BSR 1 1011 101X KKKK UUUU Нет 9
MOVLW k Пересылка литеры в регистр WREG 1 1011 0000 KKKK KKKK нет
MULLW k Перемножение литеры с WREG 1 1011 1100 KKKK KKKK нет 9
RETFIE Возврат управления после прерывания 2 0000 0000 0000 0101 GLINTD 7
RETLW k Возврат с литерой в W 2 1011 0110 KKKK KKKK нет 7
RETURN Возврат из процедуры 2 0000 0000 0000 0010 нет 7
SLEEP Переход в режим «сна» 1 0000 0000 0000 0011 TO, PD
SUBLW k Вычитание W из литеры 1 1011 0010 KKKK KKKK OV, C, DC, Z
XORLW k Логическая операция исключающего ИЛИ с символом и W 1 1011 0100 KKKK KKKK Z

Примечания:

  1. Метод двоичного дополнения
  2. Беззнаковая операция
  3. Если s=’1′, изменяется только файл; Если s=’0′, тогда оба и WREG и file изменяются; Если нужно, что бы изменядся только Рабочий регистр (WREG), тогда необходимо сделать f = WREG.
  4. Во время выполнения LCALL, содержимое PCLATH загружается в MSb регистра PC и kkkk kkkk загружется в LSb регистра PC(PCL).
  5. Выполнение команды может занять несколько командных циклов при программировании EPROM, если табличный указатель относится ко внутренней EPROM. Выполнение команды завершается прерыванием. Когда команда используется для записи во внешнюю EPROM, выполнение команды занимает 2 командных цикла.
  6. Если условие истинно — команда выполняется за 2 командных цикла, если ложно — за 1 ком. цикл.
  7. Команда выполняется за 2 ком. цикла, кроме TABLRD с PCL (младший байт PC) которая выполняется за 3 ком. цикла.
  8. «пропускаем» — означает, что команда следующая за данной не выполняется, а выполняется команда, которая находится через одну от данной. Вместо следующей за данной командой выполняется команда NOP (Пустая операция).
  9. Эта команда отсутствует в микоконтроллере PIC17C42

Добавить комментарий