Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Дубров ОМТ.pdf
Скачиваний:
6
Добавлен:
17.05.2015
Размер:
4.02 Mб
Скачать
Измен. флаги
Описание В счетчик команд PC записывается значение взятое из стека. Взводится флаг разрешения прерываний GIE. Команда выполняется за 2 машинных цикла.
Пример org 004h ; прерывание передает управление ; по этому адресу
goto interrupt ; переходим к обработчику
...
interrupt:
...
retfie ; возвращаемся из обработчика ; с включением прерываний
95

Операция k ® (W )

Измен. флаги

Описание Выполняется пересылка константы k в регистр W.

Пример ; w = 3 movlw 4 ; w = 4

MOVWF – Пересылка из регистра W в регистр f

Синтаксис

MOVWF f

Операнды

f | 0 £ f £127

Операция

(W ) ® ( f )

Измен.

 

флаги

 

Описание

Выполняется пересылка содержимого регистра W в регистр f.

Пример

; w = 4, f(2) = 12

 

movwf 2

 

; f(2) = 4, w = 4

NOP – Простой

Синтаксис NOP Операнды Операция

Измен. флаги

Описание В течение одного машинного цикла не выполняется никаких операций

Пример nop

RETFIE – Возврат из подпрограммы с включением прерываний

Синтаксис RETFIE Операнды

Операция (TOS ) ® (PC); 1 ® GIE

RETLW – Выход из подпрограммы с загрузкой в регистр W константы k

Синтаксис

RETLW k

Операнды

k | 0 £ k £ 255

Операция

k ® (W );

Измен.

(TOS) ® (PC)

 

 

 

 

 

флаги

 

 

 

 

 

Описание

В регистр W загружается константа k. В счетчик команд PC загружа-

 

ется значение с вершины стека. Команда выполняется за 2 машин-

 

ных цикла.

Пример

; w = 6

 

call subprogram

 

; w = 12

 

...

 

 

 

 

 

subprogram:

 

nop

 

retlw 12

RETURN – Выход из подпрограммы

Синтаксис

RETURN

Операнды

(TOS) ® (PC)

Операция

Измен.

 

 

 

 

 

флаги

 

 

 

 

 

Описание

В счетчик команд PC загружается значение с вершины стека. Коман-

 

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

Пример

; w = 6

 

call subprogram

 

; w = 8

 

...

 

 

 

 

 

subprogram:

 

addlw 2

 

return

RLF – Циклический сдвиг регистра f влево через флаг переноса С

Синтаксис

RLF f,d

Операнды

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

Операция

( f 7 ) ® C;

 

( f 0 : 6 ) ® ( f 1: 7 )

 

 

d =1

 

 

 

C ® ( f 0 )

 

 

 

 

 

 

 

 

( f 0 : 6 ) ® (W 1: 7 )

 

d = 0

 

 

 

C ® (W 0 )

 

 

 

 

Измен.

C

флаги

Выполняется циклический сдвиг содержимого регистра f влево через

Описание

 

флаг переноса. 0-й бит встает на место 1-го, 1-й на место 2-го и т. д.

 

96

7-й бит записывается в флаг переноса С, а затем из флага С в 0-й. В зависимости от операнда d результат операции записывается либо в регистре f, либо в регистре W.

Пример ; w = 12, f(4) = 135 = 0b10000111, c = 0 rlf 4,1

;w = 12, f(4) = 16 = 0b00001111, c = 1 rlf 4,0

;w = 30 = 0b00011110, f(4) = 16, c = 0

RRF – Циклический сдвиг регистра f вправо через флаг переноса С

Синтаксис

Операнды

Операция

RLF f,d

f , d | 0 £ f £127 и d Î[0,1] ( f 0) ® C;

( f 1: 7) ® ( f 0 : 6)

d =1

C ® ( f 7)

( f 1: 7) ® (W 0 : 6)

d = 0

C ® (W 7)

Измен.

C

флаги

Выполняется циклический сдвиг содержимого регистра f вправо че-

Описание

 

рез флаг переноса. 7-й бит встает на место 6-го, 6-й на место 5-го и

 

т.д. 0-й бит записывается в флаг переноса С, а затем из флага С в 7-й.

 

В зависимости от операнда d результат операции записывается либо

 

в регистре f, либо в регистре W.

Пример

; w = 12, f(4) = 7 = 0b00000111, c = 0

 

rrf 4,1

 

; w = 12, f(4) = 83 = 0b10000011, c = 1

 

rrf 4,0

 

; w = 193 = 0b11000001, f(4) = 83, c = 1

SLEEP – Перейти в спящий режим

Синтаксис

SLEEP

Операнды

0

® (WDT );

Операция

 

0

® (Предделитель WDT );

 

1 ®

 

 

;

 

 

 

 

 

 

TO

 

0

®

 

;

 

 

 

 

Измен.

PD

 

 

 

 

 

 

 

 

 

 

флаги

 

 

 

 

 

 

 

 

 

 

Описание

Команда сбрасывает флаг таймаута

 

и устанавливает флаг спя-

TO

 

щего режима

PD

. Затем очищается регистр-счтчик сторожевого

 

таймера WDT и его предделитель, если он настроен. После этого

микроконтроллер переводится в спящий режим, тактовый генератор отключается.

97

Пример sleep

SUBLW – Вычитение W из константы k

Синтаксис

SUBLW k

Операнды

k | 0 £ k £ 255

Операция

k - (W ) ® (W )

Измен.

C, DC, Z

флаги

Выполняется вычитание регистра W из 8-битной константы k. Ре-

Описание

 

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

Пример

; w = 3

 

sublw 5

 

; w = 2

SUBWF – Вычитание W из регистра f

Синтаксис

SUBWF f, d

Операнды

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

Операция

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

 

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

Измен.

C, DC, Z

флаги

 

Описание

Выполняется вычитание регистра W из регистра f. Результат поме-

 

щается в регистр W, при d=0, или в f при d=1.

Пример

; w = 4, f(3) = 6

 

subwf 3,0

 

; w = 2

SWAPF – Обмен местами ниблов в регистре f

Синтаксис

SWAPF f, d

Операнды

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

Операция

( f 4 : 7 ) ® (W 0 : 3 )

 

d = 0

 

 

( f 0 : 3 ) ® (W 4 : 7 )

 

 

 

 

 

( f 4 : 7 ) ® ( f 0 : 3 )

 

 

 

 

 

( f 0 : 3 ) ® ( f 4 : 7 )

 

 

d =1

 

 

 

Измен.

 

 

 

 

 

флаги

 

 

 

 

 

Описание

Выполняется обмен местами ниблов (четырехбитий) регистра f. Ре-

 

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

Пример

; f(3) = 15 = 0b00001111

 

swapf 3,1

 

; f(3) = 240 = 0b11110000

XORLW – Побитное «Исключающее ИЛИ» W и константы k

Синтаксис

XORLW k

Операнды

k | 0 £ k £ 255

98