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