Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Дубров ОМТ.pdf
Скачиваний:
6
Добавлен:
17.05.2015
Размер:
4.02 Mб
Скачать

Приложение 2. Краткое описание набора инструкций PIC16

Мнемокод

Описание

Циклов

Изменяемые

команды

флаги

 

 

 

 

 

Команды пересылки

 

 

 

MOVF

f,d

Переслать f *

1

 

Z

MOVWF f

Переслать W в f

1

 

-

MOVLW k

Переслать константу в W

1

 

-

SWAPF

f,d

Обмен полубайтов в f *

1

 

-

 

 

Арифметические команды

 

 

 

ADDWF

f,d

Сложение W и f *

1

 

C,CD,Z

ADDLW

k

Сложить константу с W

1

 

C,CD,Z

SUBWF

f,d

Вычесть W из f *

1

 

C,CD,Z

SUBLW

k

Вычесть W из константы

1

 

C,CD,Z

INCF

f,d

Прибавить 1 к f *

1

 

Z

INCFSZ

f,d

Прибавить 1 к f и пропустить если 0 *

1(2)

**

-

DECF

f,d

Вычесть 1 из f *

1

 

Z

DECFSZ f,d

Вычесть 1 из f и пропустить если 0 *

1(2)

**

-

 

 

Логические команды

 

 

 

ANDWF

f,d

Побитное "И" W и f *

1

 

Z

ANDLW

k

Побитное "И" константы и W

1

 

Z

IORWF

f,d

Побитное "ИЛИ" W и f *

1

 

Z

IORLW

k

Побитное "ИЛИ" константы и W

1

 

Z

XORWF

f,d

Побитное "Исключающее ИЛИ" W и f *

1

 

Z

XORLW

k

Побитное "Исключающее ИЛИ" константы и W

1

 

Z

COMF

f,d

Инвертировать f *

1

 

Z

CLRF

f

Очистить f

1

 

Z

CLRW

f

Очистить W

1

 

Z

CLRWDT

Очистить WDT

1

 

-TO,-PD

RLF

f,d

Циклический сдвиг f влево через перенос *

1

 

C

RRF

f,d

Циклический сдвиг f вправо через перенос *

1

 

C

 

 

Битовые операции

 

 

 

BCF

f,b

Сбросить бит b в регистре f

1

 

-

BSF

f,b

Установить бит b в регистре f

1

 

-

BTFSC

f,b

Проверить бит b в регистре f и пропустить если 0

1(2)

**

-

BTFSS

f,b

Проверить бит b в регистре f и пропустить если 1

1(2)

**

-

 

 

Команды передачи управления

 

 

 

GOTO

k

Безусловный переход

2

 

-

CALL

k

Вызов подпрограммы

2

 

-

RETURN

Возврат из подпрограммы

2

 

-

RETLW

k

Возврат из подпрограммы с загрузкой константы в W

2

 

-

RETFIE

 

Возврат из подпрограммы и разрешение прерывания

2

 

-

SLEEP

 

Переход в спящий режим

1

 

-TO,-PD

NOP

 

Нет операции

1

 

-

*Если d=0, то результат сохраняется в рабочем регистре W, если d=1, - то в регистре общего назначения f.

**Если условие не выполняется, то команда выполняется за 1 цикл, если условие выполняется, то за 2 цикла.

87

Приложение 3. Список команд PIC16 и их подробное описание

В описании команд используются следующие условные обозначения:

( X )

 

– регистр X.

( X

y )

– бит y регистра X.

( X

y : z )

– биты с y по z регистра X.

операция| условие

– операция выполняется лишь тогда, когда усло-

вие верно.

Строчные латинские буквы операндов в графе «синтаксис», обычно обозначают следующее:

f – номер регистра в регистровом файле; d – указатель направления;

k – константа-литерал;

b – номер бита в регистре.

ADDLW – Сложение рабочего регистра W и константы k

Синтаксис

ADDLW k

Операнды

k | 0 £ k £ 255

Операция

(W ) + k ® (W )

Измен.

C, DC, Z

флаги

 

Описание

Содержимое регистра W складывается с константой k. Результат по-

 

мещается в регистр W.

Пример

; w = 10

 

addlw 12

 

; w = 22

 

addlw 342 ; ошибка, константа k больше 255

ADDWF – Сложение рабочего регистра W и регистра f

Синтаксис

ADDWF f, d

Операнды

f , d | 0 £ f £127 и d Î[0,1]

Операция

(W ) + ( f ) ® (W ) | d = 0

 

(W ) + ( f ) ® ( f ) | d =1

Измен. C, DC, Z

флаги

Описание Содержимое регистра W складывается c содержимым регистра f. Результат помещается в регистр W, при d = 0, или в f при d=1.

Пример ; w = 10 f(11)=14 addwf 11,1

;w = 10, f(11)=24 addwf 11,0

;w = 34, f(11)=24

ANDLW – Побитное «И» рабочего регистра W и константы k

Синтаксис ANDLW k

88

Операнды

k | 0 £ k £ 255

Операция

(W ) Ù k ® (W )

Измен.

C, DC, Z

флаги

 

Описание

Выполняется побитное «И» регистра W и 8-битной константы k. Ре-

 

зультат помещается в регистр W.

Пример

; w = 3

 

addlw 2

 

; w = 1

ANDWF – Побитное «И» рабочего регистра W и регистра f

Синтаксис

ANDWF f, d

Операнды

f , d | 0 £ f £127 и d Î[0,1]

Операция

(W ) Ù ( f ) ® (W ) | d = 0

 

(W ) Ù ( f ) ® ( f ) | d =1

Измен.

C, DC, Z

флаги

 

Описание

Выполняется побитное «И» регистра W c содержимым регистра f.

 

Результат помещается в регистр W, при d=0, или в f при d=1.

Пример

; w = 7 = 0b111, f(4)= 3 = 0b 11

 

andwf 4,0

 

; w = 3, f(4)=3

BCF – Очистка бита b регистра f

Синтаксис

BCF f,b

 

 

Операнды

f ,b | 0 £ f £127 и 0 £ b £ 7

Операция

0 ® ( f

b )

 

Измен.

 

 

 

флаги

 

 

 

Описание

Бит b регистра f устанавливается в 0.

Пример

; f(4)

= 7

= 0b111

 

bcf 4,1

= 0b101

 

; f(4)

= 5

BSF – Установка бита b регистра f в единицу

Синтаксис

BCF f,b

 

Операнды

f ,b | 0 £ f £127 и 0 £ b £ 7

Операция 1 ® ( f b )

Измен.

 

 

флаги

 

 

Описание

Бит b регистра f устанавливается в 1.

Пример

; f(4)

= 5 = 0b101

 

bsf 4,1

= 5 = 0b111

 

; f(4)

BТFSC – Условный переход при нулевом бите b регистра f

Синтаксис BTFSC f,b

89

Операнды

Операция

Измен. флаги Описание

Пример

f ,b | 0 £ f £127 и 0 £ b £ 7

(PC) +1 ® (PC) | f b = 0

Если бит b регистра f устанавлен в 0, инкрементируется счетчик команд PC (тем самым пропускается следующая команда), в противном случае ничего не выполняется. В случае инкремента счетчика команда выполняется за 2 машинных цикла, иначе – за 1.

;f(7) = 6 = 0b110, w = 1 btfsc 7,1

addlw 4 btfsc 7,0 addlw 9

;w = 10

BТFSS – Условный переход при единичном бите b регистра f

Синтаксис

BTFSS f,b

 

Операнды

f ,b | 0 £ f £127 и 0 £ b £ 7

Операция

(PC) +1 ® (PC) | f

b =1

Измен.

 

 

 

флаги

 

 

 

Описание

Если бит b регистра f

устанавлен в 1, инкрементируется счетчик ко-

 

манд PC (тем самым, пропускается следующая команда), в против-

 

ном случае ничего не выпоняется. В случае инкремента счетчика ко-

 

манда выполняется за 2 машинных цикла, иначе – за 1.

Пример

; f(7) = 6 = 0b110, w = 1

 

btfss

7,1

 

 

addlw

4

 

 

btfss

7,0

 

 

addlw

9

 

 

; w =

5

 

CALL – Вызов подпрограммы

Синтаксис

CALL k

Операнды

k | 0 £ k £ 2047

Операция

(PC) +1 ®TOS;

 

k ® (PC 10 : 0 );

 

(PCLATH 4 : 3 ) ® (PC 12 :11 )

Измен.

 

флаги

 

Описание

Адрес следующей инструкции сохраняется в стеке. В 11 младших

 

бит счетчика программы PC загружается константа k. Два старших

 

бита загружаются в счетчик команд PC 12 :11 из регистра

 

PCLATH. Выполнение команды занимает 2 машинных цикла.

Пример

; w = 0

 

call subprogram

 

addlw 5

90