Таблица команд микроконтроллера PIC16F628A
Таблица П.1. Описание полей кодов операций PIC16F628A
|
Мнемоника, операнды |
Описание |
Циклы |
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 |
1 |
00 0001 1fff ffff |
Z |
2 |
CLRW - |
Очистить W |
1 |
00 0001 0000 0011 |
Z |
|
COMF f, d |
Дополнение f (двоичное - инвертировать все цифры и добавить 1) |
1 |
00 1001 dfff ffff |
Z |
1.2 |
DECF f, d |
Декремент f |
1 |
00 0011 dfff ffff |
Z |
1.2 |
DECFSZ f, d |
Декремент f, Пропустить, если 0 |
1(2) |
00 1011 dfff ffff |
1.2,3 |
|
INCF f, d |
Инкремент f |
1 |
00 1010 dfff ffff |
Z |
1,2 |
INCFSZ f, d |
Инкремент f, Пропустить, если 0 |
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 OxxO 0000 |
||
RLF f, d |
Сдвинуть влево через перенос |
1 |
00 1101 dfff ffff |
С |
1,2 |
RRF f, d |
Сдвинуть вправо через перенос |
1 |
00 1100 dfff ffff |
С |
1,2 |
SUBWF f, d |
Вычесть W из f |
1 |
00 0010 dfff ffff |
С, DC, Z |
1,2 |
SWAPF f, d |
Поменять местами полубайты f |
1 |
00 1110 dfff ffff |
1,2 |
|
XORWF f, d |
Исключающее «ИЛИ» W с f |
1 |
00 0110 dfff ffff |
Z |
1,2 |
Бит-ориентированные регистровые операции |
|||||
BCF f, b |
Очистить бит f |
1 |
01 OObb bfffffff |
1.2 |
|
BSF f,■b |
Установить бит f |
1 |
01 01 bb bfffffff |
1.2 |
|
BTFSC f, b |
Проверить бит f, пропустить, если сброшен |
1(2) |
01 10bb bfffffff |
3 |
|
BTFSS f, b |
Проверит бит f, пропустить, если установлен |
1(2) |
01 11bb bfffffff |
3 |
|
Операции управления и с константами |
|||||
ADDLW k |
Сложить константу и W |
1 |
11 111 x kkkk kkkk |
C, DC, Z |
|
ANDLW k |
«И» константы с W |
1 |
11 1001 kkkk kkkk |
Z |
|
CALL k |
Вызвать подпрограмму |
2 |
10 Okkk kkkk kkkk |
TO. PD |
|
CLRWDT - |
Очистить сторожевой таймер (Watchdog) |
1 |
00 0000 0110 0100 |
||
GOTO k |
Перейти к адресу |
2 |
10 1kkk kkkk kkkk |
||
IORLW k |
Включающее «ИЛИ» константы с W |
1 |
11 1000 kkkk kkkk |
Z |
|
MOVLW k |
Переместить константу в W |
1 |
11 OOxx kkkk kkkk |
||
RETFIE - |
Возврат из прерывания |
2 |
00 0000 0000 1001 |
||
RETLW k |
Возврат с константой в W |
2 |
11 01 xx kkkk kkkk |
||
RETURN - |
Возврат из подпрограммы |
2 |
00 0000 0000 1000 |
TO, PD |
|
SLEEP - |
Переход в режим Standby |
1 |
00 0000 0110 0011 |
||
SUBLW k |
Вычесть W из константы |
1 |
11 11 Ox kkkk kkkk |
C, DC, Z |
|
XORLW k |
Исключающее «ИЛИ» константы с W |
1 |
11 1010 kkkk kkkk |
Z |
Os К) 00 > CO CO (Л |
Q ? X * І Q |
Примечания.
1. Когда модифицируется регистр I/O как функция сама по себе (то есть, MOVF PORTB, 1), используемое значение будет то же, что значение на самом выводе. Например, если данные на выводе, конфигурированном как ввод «1», сбрасываются внешним устройством, возвращаемые данные - это «О».
2. Если эта инструкция выполняется на регистре TMR0 (и применено d = 1), предделитель будет очищен, если назначен для TimerO Module.
3. Если счетчик команд (PC) модифицируется или проверяемое условие истинно, инструкция требует двух циклов. Второй цикл выполняется как NOP.