|
Философия микропроцессорной техники. Философия микропроцессорной техники
5.3. Система команд микроконтроллеров подгруппы PIC16F8X Микроконтроллеры подгруппы PIC16F8X имеют простую и эффективную систему команд, состоящую всего из 35 команд.
Каждая команда МК подгруппы PIC16F8X представляет собой 14-битовое слово, разделенное на код операции (OPCODE), и поле для одного и более операндов, которые могут участвовать или не участвовать в этой команде. Система команд PIC16F8X является ортогональной и включает в себя команды работы с байтами, команды работы с битами и операции с константами и команды управления. В таблице 5.10 приведены описания полей команд.
Таблица 5.10. Описания полей команд МК семейства PIC16CXXX.
| Поле
| Описание
| f
| Адрес регистра
| w
| Рабочий регистр
| b
| Номер бита в 8-разрядном регистре
| k
| Константа
| x
| Не используется. Ассемблер формирует код с x=0
| d
| Регистр назначения:
d=0 – результат в регистре w
d=1 – результат в регистре f
По умолчанию d=1
| label
| Имя метки
| TOS
| Beршина стека
| PC
| Счетчик команд
| PCLATH
| Регистр PCLATH
| GIE
| Бит разрешения всех прерываний
| WDT
| Сторожевой таймер
| /TO
| Тайм-аут
| /PD
| Выключение питания
| dest
| Регистр назначения: рабочий регистр w или регистр, заданный в команде
| [ ]
| Необязательные параметры
| ( )
| Содержание
| →
| Присвоение
| < >
| Поле номера бита
|
| Из набора
| Для команд работы с байтами f обозначает регистр, с которым производится действие; d – бит, определяющий, куда положить результат. Если d =0, то результат будет помещен в регистр w, при d=1 результат будет помещен в регистр «f», упомянутый в команде.
Для команд работы с битами b обозначает номер бита, участвующего в команде, а f – это регистр, в котором данный бит расположен.
Для команд передачи управления и операций с константами, k обозначает восьми- или одиннадцатибитную константу.
Почти все команды выполняются в течение одного командного цикла. В двух случаях исполнение команды занимает два командных цикла:
проверка условия и переход; изменение программного счетчика как результат выполнения команды.
Один командный цикл состоит из четырех периодов генератора. Таким образом, для генератора с частотой 4 МГц время исполнения командного цикла будет 1 мкс.
Основные форматы команд МК изображены на рис. 5.15.
Система команд МК подгруппы PIC16F8X приведена в табл. 5.11.
Рис. 5.15. Основные форматы команд.
Таблица 5.11. Система команд МК подгруппы PIC16F8X.
| Мнемоника
| Описание команды
| Циклы
| Биты состояния
| Прим.
| ADDWF f, d
| Сложение W с f
| 1
| C ,DC ,Z
| 1, 2
| ANDWF f, d
| Логическое И W и f
| 1
| Z
| 1, 2
| CLRF f
| Сброс регистра f
| 1
| Z
| 2
| CLRW
| Сброс регистра W
| 1
| Z
|
| COMF f, d
| Инверсия регистра f
| 1
| Z
| 1, 2
| DECF f, d
| Декремент регистра f
| 1
| Z
| 1, 2
| DECFSZ f, d
| Декремент f, пропустить команду, если 0
| 1(2)
|
| 1, 2, 3
| INCF f, d
| Инкремент регистра f
| 1
| Z
| 1, 2
| INCFSZ f, d
| Инкремент f, пропустить команду, если 0
| 1(2)
|
| 1, 2, 3
| IORWF f, d
| Логическое ИЛИ W и f
| 1
| Z
| 1, 2
| MOVF f, d
| Пересылка регистра f
| 1
| Z
| 1, 2
| MOVWF f
| Пересылка W в f
| 1
|
|
| NOP -
| Холостая команда
| 1
|
|
| RLF f, d
| Сдвиг f влево через перенос
| 1
| C
| 1, 2
| RRF f, d
| Сдвиг f вправо через перенос
| 1
| C
| 1, 2
| SUBWF f, d
| Вычитание W из f
| 1
| C,DC,Z
| 1, 2
| SWAPF f, d
| Обмен местами тетрад в f
| 1
|
| 1, 2
| XORWF f, d
| Исключающее ИЛИ W и f
| 1
| Z
| 1, 2
|
| BCF f, b
| Сброс бита в регистре f
| 1
|
| 1, 2
| BSF f, b
| Установка бита в регистре f
| 1
|
| 1, 2
| BTFSC f, b
| Пропустить команду, если бит в f равен нулю
| 1(2)
|
| 3
| BTFSS f, b
| Пропустить команду, если бит в f равен единице
| 1(2)
|
| 3
|
| ADDLW k
| Сложение константы и W
| 1
| C, DC, Z
|
| ANDLW k
| Логическое И константы и W
| 1
| Z
|
| CALL k
| Вызов подпрограммы
| 2
|
|
| CLRWDT -
| Сброс сторожевого таймера WDT
| 1
| /TO, /P
|
| GOTO k
| Переход по адресу
| 2
|
|
| IORLW k
| Логическое ИЛИ константы и W
| 1
| Z
|
| MOVLW k
| Пересылка константы в W
| 1
|
|
| RETFIE -
| Возврат из прерывания
| 2
|
|
| RETLW k
| Возврат из подпрограммы с загрузкой константы в W
| 2
|
|
| RETURN -
| Возврат из подпрограммы
| 2
|
|
| SLEEP -
| Переход в режим SLEEP
| 1
| /TO, /P
|
| SUBLW k
| Вычитание W из константы
| 1
| C, DC, Z
|
| XORLW k
| Исключающее ИЛИ константы и W
| 1
| Z
|
|
| Примечания к таблице:
Если модифицируется регистр ввода/вывода (например, MOVF PORTB,1), то используется значение, считываемое с выводов. Например, если в выходной защелке порта, включенного на ввод, находится «1», а внешнее устройство формирует на этом выводе «0», то в разряде данных будет записан «0». Если операндом команды является содержимое регистра TMRO (и, если допустимо, d=1), то предварительный делитель, если он подключен к TMRO, будет сброшен. Если в результате выполнения команды изменяется счетчик команд или выполняется переход по проверке условия, то команда выполняется за два цикла. Второй цикл выполняется как NOP.
| |
|
|