Разделы

В сети

Пользователей: 30
Из них просматривают:
Аналоги: 8. Даташиты: 1. Новости: 6. Остальное: 2. Программы: 1. Производители: 1. Профиль пользователя: 1. Теги: 1. Торрент: 1. Форум: 8.
Участников: 1
Гостей: 29

Яндекс , далее...
Рекорд 2375 человек онлайн установлен 26.12.2015.

Партнёры


Партнёры

Новые объявления

В настоящее время нет объявлений.

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

Написал MACTEP 03.12.2008 14:00:00 (Просмотров: 12467)

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

Примечание:

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

Разное

Интересно

При замене электролитических конденсаторов, кроме соблюдения полярности, не следует значительно превышать допустимое рабочее напряжение.
Например, если конденсатор рассчитан на рабочее напряжение 16 В, то при установке нового той же емкости, но рассчитанного на напряжение 300 В после непродолжительной эксплуатации произойдет его расформовка, и емкость его значительно уменьшится.

Похожие статьи