Система команд PIC-контроллеров серии PIC16FXXX

    Каждая команда представляет собой 14-разрядное слово, содержащее поле кода операции OPCODE и поле операндов. Система команд включает в себя команды работы с байтами, команды работы с битами, команды управления и операции с константами.

    Для команд работы с байтами "f" обозначает регистр, с которым производится действие, а бит "d" определяет регистр назначения. При "d"=0 результат помещается в регистр W, при "d"=1 результат помещается в регистр "f", заданный в команде.

    Для команд работы с битами "b" обозначает номер бита, участвющего в команде, а "f" - регистр, в котором этот бит расположен.

    Для команд управления и операций с константами "k" обозначает 8- или 11-битовую константу или идентификатор.

    Все команды выполняются в течение одного командного цикла, кроме следующих двух случаев:

  • Переход по проверке условия, если результат проверки условия - истина.
  • Изменение счетчика команд как результат выполнения команды.

    В этих случаях команда выполняется за два цикла с выполнением второго цикла как NOP. Один командный цикл состоит из четырех периодов генератора. Таким образом, для генератора с частотой 4 МГц время выполнения команды составит 1 мкс. Если выполняется переход по проверке условия или в результате выполнения команды изменился счетчик команд, время выполнения этой команды при тактовой частоте 4 МГц составит 2 мкс.

Принятые обозначения

f: Адрес регистра
W: Рабочий регистр
b: Номер бита в 8-ми разрядном регистре
k: Константа
x: Не используется. Ассемблер формирует код с х=0
d: Регистр назначения:
d=0 - результат в регистре W
d=1 - результат в регистре f.
По умолчанию d=1
label: Имя метки
TOS: Вершина стека
РС: Счетчик команд
ТО: Тайм-аут
PD: Выключение питания
dest: Регистр назначения: рабочий регистр W или регистр, заданный в команде
[]: Необязательные параметры
(): Содержание
-->: Присвоение
<>: Битовое поле
О: Из набора

    
Microchip - AsterPicAsm Функция Циклы Код команды Биты состояния Примеp
ADDLW - ADD kkH Сложение константы и W 1 11 111x kkkk kkkk C, DC, Z  ADD 05H
ADDWF - ADD ff / ADD ff W Сложение W c f 1 00 0111 dfff ffff C, DC, Z  ADD 3C  /  ADD 3CW
ANDLW - AND kkH Логическое И константы и W 1 11 1001 kkkk kkkk Z  AND 05H
ANDWF - AND ff / AND ff W Логическое И W и f 1 00 0101 dfff ffff Z  AND 3C  /  AND 3CW
BCF - RES ff,b Сброс бита в регистре f 1 01 00bb bfff ffff    RES 01,7
BSF - SET ff,b Установка бита в регистре f 1 01 01bb bfff ffff    SET 01,7
BTFSC - JBR ff,b Пропустить команду, если бит в f равен нулю 1 (2) 01 10bb bfff ffff    JBR 2D,3
BTFSS - JBS ff,b Пропустить команду, если бит в f равен единице 1 (2) 01 11bb bfff ffff    JBS 2D,3
CALL - JSR kkkk Вызов подпрограммы 2 10 0kkk kkkk kkkk    JSR 01B6
CLRF - CLR ff Сброс регистра f 1 00 0001 1fff ffff Z  CLR 3C
CLRW - CLRW / CLR Сброс регистра W 1 00 0001 0xxx xxxx Z  CLR
CLRWDT - WDT Сброс сторожевого таймера WDT 1 00 0000 0110 0100
__  __
TO, PD
 WDT
COMF - CPL ff / CPL ffW Инверсия регистра f 1 00 1001 dfff ffff Z  CPL 3C  /  CPL 3CW
DECF - DEC ff / DEC ffW Декремент регистра f 1 00 0011 dfff ffff Z  DEC 3C  /  DEC 3CW
DECFSZ - DEZ ff / DEZ ffW Декремент f, пропустить команду, если 0 1 (2) 00 1011 dfff ffff    DEZ 3C  /  DEZ 3CW
GOTO - JMP kkkk Переход по адресу 2 10 1kkk kkkk kkkk    JMP 02D5
INCF - INC ff / INC ffW Инкремент регистра f 1 00 1010 dfff ffff Z  INC 3C  /  INC 3CW
INCFSZ - INZ ff / INZ ffW Инкремент f, пропустить команду, если 0 1 (2) 00 1111 dfff ffff    INZ 3C  /  INZ 3CW
IORLW - ORA kkH Логическое ИЛИ константы и W 1 11 1000 kkkk kkkk Z  ORA 05H
IORWF - ORA ff / ORA ffW Логическое ИЛИ W и f 1 00 0100 dfff ffff Z  ORA 3C  /  ORA 3CW
MOVF - LDA ff / LDA ffW Пересылка регистра f 1 00 1000 dfff ffff Z  LDA 3C / LDA 3CW
MOVLW - LDA kkH Пересылка константы в W 1 11 00xx kkkk kkkk    LDA  3AH
MOVWF - STA ff Пересылка W в f 1 00 0000 1fff ffff    STA 3C
NOP - NOP Холостая команда 1 00 0000 0xx0 0000    NOP
OPTION Загрузка регистра OPTION 1 00 0000 0110 0010    
RETFIE - RTI Возврат из прерывания 2 00 0000 0000 1001    RTI
RETLW - RET kk Возврат из подпрог. с загрузкой константы в W 2 11 01xx kkkk kkkk    RET 33
RETURN - RTS Возврат из подпрограммы 2 00 0000 0000 1000    RTS
RLF - RLA ff / RLA ffW Сдвиг f влево через перенос 1 00 1101 dfff ffff C  RLA 3C / RLA 3CW
RRF - RRA / RRA ffW Сдвиг f вправо через перенос 1 00 1100 dfff ffff C  RRA3C / RRA 3CW
SLEEP - SLP Переход в режим SLEEP 1 00 0000 0110 0011
__  __
TO, PD
 SLP
SUBLW  - SUB kkH Вычитание W из константы 1 11 110x kkkk kkkk C, DC, Z   SUB 05H
SUBWF - SUB ff / SUB ff W Вычитание W из f 1 00 0010 dfff ffff C, DC, Z  SUB 3C  /  SUB 3CW
SWAPF - SPA ff / SPA ffW Обмен местами тетрад вf 1 00 1110 dfff ffff    SPA 3C / SPA 3CW
TRIS Загрузка регистра TRIS 1 00 0000 0110 0fff    
XORLW - XOR kkH Исключающее ИЛИ константы и W 1 11 1010 kkkk kkkk Z  XOR 05H
XORWF - XOR ff / XOR ff W Исключающее ИЛИ W и f 1 00 0110 dfff ffff Z  XOR 3C / XOR 3CW

   


Hosted by uCoz