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

Каждая команда контроллеров серии PIC16C8X представляет собой 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 или регистр, заданный в команде

[]:
Необязательные параметры

():
Содержание

—>:
Присвоение

<>:
Битовое поле

О:
Из набора

Обозначение
Функция
Циклы
Код команды
Биты состояния
Примечания

ADDLW
Сложение константы и W
1
11 111x kkkk kkkk
C, DC, Z
 

ADDWF
Сложение W c f
1
00 0111 dfff ffff
C, DC, Z
1, 2

ANDLW
Логическое И константы и W
1
11 1001 kkkk kkkk
Z
 

ANDWF
Логическое И W и f
1
00 0101 dfff ffff
Z
1, 2

BCF
Сброс бита в регистре f
1
01 00bb bfff ffff
 
1, 2

BSF
Установка бита в регистре f
1
01 01bb bfff ffff
 
1, 2

BTFSC
Пропустить команду, если бит в f равен нулю
1 (2)
01 10bb bfff ffff
 
3

BTFSS
Пропустить команду, если бит в f равен единице
1 (2)
01 11bb bfff ffff
 
3

CALL
Вызов подпрограммы
2
10 0kkk kkkk kkkk
 
 

CLRF
Сброс регистра f
1
00 0001 1fff ffff
Z
2

CLRW
Сброс регистра W
1
00 0001 0xxx xxxx
Z
 

CLRWDT
Сброс сторожевого таймера WDT
1
00 0000 0110 0100

__ __
TO, PD

 

COMF
Инверсия регистра f
1
00 1001 dfff ffff
Z
1, 2

DECF
Декремент регистра f
1
00 0011 dfff ffff
Z
1, 2

DECFSZ
Декремент f, пропустить команду, если 0
1 (2)
00 1011 dfff ffff
 
1, 2, 3

GOTO
Переход по адресу
2
10 1kkk kkkk kkkk
 
 

INCF
Инкремент регистра f
1
00 1010 dfff ffff
Z
1, 2

INCFSZ
Инкремент f, пропустить команду, если 0
1 (2)
00 1111 dfff ffff
 
1, 2, 3

IORLW
Логическое ИЛИ константы и W
1
11 1000 kkkk kkkk
Z
 

IORWF
Логическое ИЛИ W и f
1
00 0100 dfff ffff
Z
1, 2

MOVF
Пересылка регистра f
1
00 1000 dfff ffff
Z
1, 2

MOVLW
Пересылка константы в W
1
11 00xx kkkk kkkk
 
 

MOVWF
Пересылка W в f
1
00 0000 1fff ffff
 
 

NOP
Холостая команда
1
00 0000 0xx0 0000
 
 

OPTION
Загрузка регистра OPTION
1
00 0000 0110 0010
 
 

RETFIE
Возврат из прерывания
2
00 0000 0000 1001
 
 

RETLW
Возврат из подпрограммы с загрузкой константы в W
2
11 01xx kkkk kkkk
 
 

RETURN
Возврат из подпрограммы
2
00 0000 0000 1000
 
 

RLF
Сдвиг f влево через перенос
1
00 1101 dfff ffff
C
1, 2

RRF
Сдвиг f вправо через перенос
1
00 1100 dfff ffff
C
1, 2

SLEEP
Переход в режим SLEEP
1
00 0000 0110 0011

__ __
TO, PD

 

SUBLW
Вычитание W из константы
1
11 110x kkkk kkkk
C, DC, Z
 

SUBWF
Вычитание W из f
1
00 0010 dfff ffff
C, DC, Z
1, 2

SWAPF
Обмен местами тетрад вf
1
00 1110 dfff ffff
 
1, 2

TRIS
Загрузка регистра TRIS
1
00 0000 0110 0fff
 
 

XORLW
Исключающее ИЛИ константы и W
1
11 1010 kkkk kkkk
Z
 

XORWF
Исключающее ИЛИ W и f
1
00 0110 dfff ffff
 
1, 2

Примечание:

  • Если модифицируется регистр ввода/вывода (например, MOVF PORTB,1), то используется значение, считываемое с выводов. Например, если в выходной защелке порта, включенного на ввод, находится "1", а внешнее устройство формирует на этом выводе "0", то в этом разряде данных будет записан "0".
  • Если операндом команды является содержимое регистра TMRO (и, если допустимо, d=1), то предварительный делитель, если он подключен к TMRO, будет сброшен.
  • Если в результате выполнения команды изменяется счетчик команд, или выполняется переход по проверке условия, то команда выполняется за два цикла. Второй цикл выплняется как NOP.
  • Источник

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

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