В данной статье представлена система команд для микроконтроллеров семейства PIC14000/PIC16CXXX. Она будем полезна тем кто работает с этими микроконтроллерами не так давно и не помнит всех команд. В приведенной таблице можно видеть мнемонику каждой команды, краткое описание, цикл, 14-ти битный код и какие флаги изменяются при выполнении команды.

БАЙТ-ОРИЕНТИРОВАННЫЕ КОМАНДЫ

Мнемоника Краткое описание Циклов 14-ти битный код Изменяет флаги Прим.
ADDWF f,d Сложение W и f 1 00 0111 DFFF FFFF C, DC, Z 1, 2
ANDWF f,d Поразрядная операция «И» W и f 1 00 0101 DFFF FFFF Z 1, 2
CLRF f Очистка регистра f 1 00 0001 1FFF FFFF Z 2
CLRW Очистка регистра W 1 00 0001 0000 0011 Z
COMF f,d Инвертирование битов регистра f 1 00 1001 DFFF FFFF Z 1, 2
DECF f,d Уменьшение значения регистра f 1 00 0011 DFFF FFFF Z 1, 2
DECFSZ f,d Уменьшение значения регистра f, пропуск следующей инструкции если результат равен нулю. 1(2) 00 1011 DFFF FFFF нет 1,2,3
INCF f,d Увеличение значения регистра f на 1 1 00 1010 DFFF FFFF Z 1, 2
INCFSZ f,d Увеличение значения регистра f, пропуск следующей инструкции если результат равен нулю. 1(2) 00 1111 DFFF FFFF нет 1,2,3
IORWF f,d Логическая операция включающего ИЛИ W и f 1 00 0100 DFFF FFFF Z 1, 2
MOVF f,d Пересылка содержимого регистра f 1 00 1000 DFFF FFFF Z 1, 2
MOVWF f Пересылка содержимого регистра W в регистр f 1 00 0000 1FFF FFFF нет
NOP Пустая команда 1 00 0000 0XX0 0000 нет
RLF f,d Циклический сдвиг влево через флаг переноса 1 00 1101 DFFF FFFF C 1, 2
RRF f,d Циклический сдвига вправо через флаг переноса 1 00 1100 DFFF FFFF C 1, 2
SUBWF f,d Вычитание W из f 1 00 0010 DFFF FFFF C, DC, Z
SWAPF f,d Обмен местами полу-байт регистра f 1 00 1110 DFFF FFFF нет
TRIS f Загрузка регистра TRIS 1 00 0000 0110 0FFF нет
XORWF f,d Логическая операция исключающего ИЛИ с W и f 1 00 0110 DFFF FFFF Z

БИТ-ОРИЕНТИРОВАННЫЕ КОМАНДЫ

Мнемоника Краткое описание Циклов 14-ти битный код Изменяет флаги Прим.
BCF f,d Очистка бита в f 1 01 00BB BFFF FFFF нет 1, 2
BSF f,b Установка бита в f 1 01 01BB BFFF FFFF нет 1, 2
BTFSC f,b Проверка на равенство бита нулю, пропускаем след. команду если да. 1(2) 01 10BB BFFF FFFF нет 3
BTFSS f,b Проверка на равенство бита 1, пропускаем след. команду если да. 1(2) 01 11BB BFFF FFFF нет 3

СИМВОЛЬНЫЕ КОМАНДЫ И КОМАНДЫ ВЕТВЛЕНИЯ

Мнемоника Краткое описание Циклов 14-ти битный код Изменяет флаги Прим.
ADDLW k Сложение литеры и W 1 11 111X KKKK KKKK C, DC, Z
ANDLW k Логическая операция «И» с символом и W 1 11 1001 KKKK KKKK Z
CALL k Вызов процедуры 2 10 0KKK KKKK KKKK нет
CLRWDT Сброс Сторожевого Таймера (WDT) 1 00 0000 0110 0100 TO, PD
GOTO k Безусловный переход 2 10 1KKK KKKK KKKK нет
IORLW k Логическая операция включающего ИЛИ с символом и W 1 11 1000 KKKK KKKK Z
MOVLW k Пересылка литеры в регистр W 1 11 00XX KKKK KKKK нет
OPTION Загрузка данных в регистр OPTION 1 00 0000 0110 0010 нет
RETFIE Возврат управления после прерывания 2 00 0000 0000 1001 нет
RETLW k Возврат с литерой в W 2 11 01XX KKKK KKKK нет
RETURN Возврат из процедуры 2 00 0000 0000 1000 нет
SLEEP Переход в режим «сна» 1 00 0000 0110 0011 TO, PD
SUBLW k Вычитание W из литеры 1 11 110X KKKK KKKK C, DC, Z
XORLW k Логическая операция исключающего ИЛИ с символом и W 1 11 1010 KKKK KKKK Z

Примечания:

  1. Когда регистр ввода вывода используется для модификации самого себя (MOVF PORTB, 1), то для записи будут использоваться значения 0/1 непосредственно с ножек микроконтролера, а не значение записаное в выходную защелку порта. (См. схему устройства ноги ввода вывода из даташита.) Например если в защелку записана единица, а порт сконфигурен на ввод данных и снаружи на этом выводе логический 0, то в PORTB будет записан 0! Смысл в том, что выход защелки отделен от ножки контроллера тристабильным буфером и на вход считывается именно нога контроллера, которая за буфером. Поэтому вроде писали в порт 1, а читается 0, вот он то и пишется обратно.
  2. Если команда оперирует с регистром TMR0(и при этом d=1), тогда предделитель обнуляется (если он относится к модулю Timer 0)
  3. Если изменяется Программный Счетчик (PC) или условие истинно, тогда команда выполняется за 2 командных цикла. Второй командный цикл исполняется как команда NOP (Пустая операция).

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Подтвердите, что Вы не бот — выберите человечка с поднятой рукой: