Философия микропроцессорной техники

Вид материалаЗадача
5.3. Система команд микроконтроллеров подгруппы PIC16F8X
Описание команды
Подобный материал:
1   ...   11   12   13   14   15   16   17   18   ...   27

5.3. Система команд микроконтроллеров подгруппы PIC16F8X

5.3.1. Перечень и форматы команд


Микроконтроллеры подгруппы 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







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