- •ВВЕДЕНИЕ
- •Библиографический список
- •Приложение 1. Схема лабораторного макета
- •Приложение 2. Краткое описание набора инструкций PIC16
- •ADDLW – Сложение рабочего регистра W и константы k
- •ADDWF – Сложение рабочего регистра W и регистра f
- •ANDLW – Побитное «И» рабочего регистра W и константы k
- •ANDWF – Побитное «И» рабочего регистра W и регистра f
- •BCF – Очистка бита b регистра f
- •BSF – Установка бита b регистра f в единицу
- •BТFSC – Условный переход при нулевом бите b регистра f
- •BТFSS – Условный переход при единичном бите b регистра f
- •CALL – Вызов подпрограммы
- •CLRF – Обнуление регистра f
- •CLRW – Обнуление рабочего регистра W
- •CLRWDT – Сброс сторожевого таймера
- •COMF – Инверсия регистра f
- •DECF – Декремент регистра f
- •DECFSZ – Декремент регистра f и пропуск в случае нулевого результата
- •GOTO – Переход по адресу
- •INCF – Декремент регистра f
- •INCFSZ – Декремент регистра f и пропуск в случае нулевого результата
- •IORLW – Побитное «ИЛИ» W и константы k
- •IORWF – Побитное «ИЛИ» W и регистра f
- •MOVF – Пересылка регистра f
- •MOVLW – Пересылка константы k
- •MOVWF – Пересылка из регистра W в регистр f
- •NOP – Простой
- •RETFIE – Возврат из подпрограммы с включением прерываний
- •RETLW – Выход из подпрограммы с загрузкой в регистр W константы k
- •RETURN – Выход из подпрограммы
- •RLF – Циклический сдвиг регистра f влево через флаг переноса С
- •RRF – Циклический сдвиг регистра f вправо через флаг переноса С
- •SLEEP – Перейти в спящий режим
- •SUBLW – Вычитение W из константы k
- •SUBWF – Вычитание W из регистра f
- •SWAPF – Обмен местами ниблов в регистре f
- •XORLW – Побитное «Исключающее ИЛИ» W и константы k
- •XORWF – Побитное «Исключающее ИЛИ» W и регистра f
; w = 15
...
subprogram: addlw 10
return
CLRF – Обнуление регистра f
Синтаксис |
CLRF f |
Операнды |
f | 0 £ f £127 |
Операция |
0 ® f ; |
Измен. |
1 ® Z; |
Z |
|
флаги |
Обнуляются все биты регистра f |
Описание |
|
Пример |
; f(6) = 27 |
|
clrf 6 |
|
; f(6) = 0 |
CLRW – Обнуление рабочего регистра W
Синтаксис CLRW Операнды
Операция 0 ® (W );
1 ® Z;
Измен. Z флаги
Описание Обнуляются все биты регистра W
Пример ; w = 27 clrw
; w = 0
CLRWDT – Сброс сторожевого таймера
Синтаксис CLRWDT Операнды
Операция 0 ® (WDT );
0 ® (Предделитель WDT );
1 ® TO;
1 ® PD;
Измен. TO, PD флаги
Описание Сбрасывается регистр-счетчик сторожевого таймера WDT, а также его предделитель, если он подключен. При выполнении команды ус-
танавливаются флаги таймаута TO и режима SLEEP PD
Пример ; w = 27 clrw
; w = 0
91
COMF – Инверсия регистра f
Синтаксис |
COMF f,d |
Операнды |
f , d | 0 £ f £127 и d Î[0,1] |
Операция |
Ø( f ) ® (W ) | d = 0 |
|
Ø( f ) ® ( f ) | d =1 |
Измен. |
Z |
флаги |
|
Описание |
Инвертируются все биты регистра f |
Пример |
; f(6) = 7 = 0b00000111 |
|
comf 6,1 |
|
; f(6) = 248 = 0b11111000 |
DECF – Декремент регистра f
Синтаксис |
DECF f,d |
Операнды |
f , d | 0 £ f £127 и d Î[0,1] |
Операция |
( f ) -1 ® (W ) | d = 0 |
|
( f ) -1 ® ( f ) | d =1 |
Измен. |
C, DC, Z |
флаги |
Инвертируются все биты регистра f |
Описание |
|
Пример |
; f(4) = 7, w = 1 |
|
decf 4,0 |
|
; f(4) = 7, w = 6 |
DECFSZ – Декремент регистра f и пропуск в случае нулевого результата
Синтаксис |
DECFSZ f,d |
Операнды |
f , d | 0 £ f £127 и d Î[0,1] |
Операция |
( f ) -1 ® (W ) | d = 0 |
|
( f ) -1 ® ( f ) | d =1; |
|
(PC) +1 ® (PC) |=(W 0 =и d 0)=или ( f = 0 и d 1) |
Измен. |
|
флаги |
|
Описание |
Первым шагом происходит декремент регистра f и запись получен- |
|
ного результата в f или W в зависимости от операнда d. На втором |
|
шаге, если результат первого шага оказался нулевым, происходит |
|
инкремент регистра-счетчика команд PC, тем самым вызывая про- |
|
пуск следующей команды. |
Пример |
; f(7) = 6, w = 0 |
|
loop: |
|
addlw 3 |
|
decfsz 7,1 |
|
goto exit_loop |
|
goto loop |
|
exit_loop: |
|
; f(7) = 0, w = 18 |
92
GOTO – Переход по адресу
Синтаксис
Операнды
Операция
Измен. флаги Описание
Пример
GOTO k
k | 0 £ k £ 2047
k ® (PC 10 : 0);
(PCLATH 4 : 3) ® (PC 12 :11)
В 11 младших бит счетчика программы PC загружается константа k. Два старших бита загружаются в счетчик команд PC 12 :11 из ре-
гистра PCLATH. Выполнение команды занимает 2 машинных цикла.
; w = 0 goto skip addlw 5
skip: addlw 3
; w = 3
INCF – Декремент регистра f
Синтаксис |
INCF f,d |
Операнды |
f , d | 0 £ f £127 и d Î[0,1] |
Операция |
( f ) -1 ® (W ) | d = 0 |
|
( f ) -1 ® ( f ) | d =1 |
Измен. |
C, DC, Z |
флаги |
|
Описание |
Инвертируются все биты регистра f |
Пример |
; f(4) = 7, w = 1 |
|
incf 4,0 |
|
; f(4) = 7, w = 8 |
INCFSZ – Декремент регистра f и пропуск в случае нулевого результата
Синтаксис |
INCFSZ f,d |
Операнды |
f , d | 0 £ f £127 и d Î[0,1] |
Операция |
( f ) +1 ® (W ) | d = 0 |
|
( f ) +1 ® ( f ) | d =1; |
|
(PC) +1 ® (PC) |=(W 0 =и d 0)=или ( f = 0 и d 1) |
Измен. |
|
флаги |
|
Описание |
Первым шагом происходит инкремент регистра f и запись получен- |
|
ного результата в f или W в зависимости от операнда d. На втором |
|
шаге, если результат первого шага оказался нулевым, происходит |
|
инкремент регистра-счетчика команд PC, тем самым вызывая про- |
|
пуск следующей команды. |
Пример |
; f(7) = 254, w = 0 |
|
loop: |
|
addlw 3 |
|
incfsz 7,1 |
93
goto exit_loop goto loop
exit_loop:
; f(7) = 0, w = 6
IORLW – Побитное «ИЛИ» W и константы k
Синтаксис |
IORLW k |
Операнды |
k | 0 £ k £ 255 |
Операция |
(W ) Ú k ® (W ) |
Измен. |
C, DC, Z |
флаги |
|
Описание |
Выполняется побитное «ИЛИ» регистра W и 8-битной константы k. |
|
Результат помещается в регистр W. |
Пример |
; w = 3 = 0b11 |
|
iorlw 4 ; 0b100 |
|
; w = 7 ; 0b111 |
IORWF – Побитное «ИЛИ» W и регистра f
Синтаксис |
IORWF 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 = |
4 = 0b100, f(4)= 1 = 0b001 |
|
iorwf |
4,0 |
|
; w = |
5 = 0b101, f(4)= 4 |
MOVF – Пересылка регистра f
Синтаксис |
MOVF f, d |
Операнды |
f , d | 0 £ f £127 и d Î[0,1] |
Операция |
( f ) ® (W ) | d = 0 |
|
( f ) ® ( f ) | d =1 |
Измен. |
Z |
флаги |
|
Описание |
Содержимое регистра f пересылается само в себя при d=1 или в ре- |
|
гистр W, при d=0. Такая, на первый взгляд избыточная и абсурдная |
|
команда, на практике используется для проверки регистра на ноль (с |
|
помощью флага Z). |
Пример |
; f(4)= 0, Z = 0 |
|
movf 4,1 |
|
; f(4)= 0, Z = 1 |
MOVLW – Пересылка константы k
Синтаксис |
MOVLW k |
Операнды |
k | 0 £ k £ 255 |
94