Мы поможем в написании ваших работ!
ЗНАЕТЕ ЛИ ВЫ?
|
CLRWDT — Сброс сторожевого таймера
Синтаксис
| CLRWDT
| Операнды
|
| Операция
|
| Измен.
флаги
|
| Описание
| Сбрасывается регистр-счетчик сторожевого таймера WDT, а также его предделитель, если он подключен. При выполнении команды устанавливаются флаги таймаута и режима SLEEP
| Пример
| ; w = 27
clrw
; w = 0
| COMF — Инверсия регистра f
Синтаксис
| COMF f,d
| Операнды
|
| Операция
|
| Измен.
флаги
| Z
| Описание
| Инвертируются все биты регистра f
| Пример
| ; f(6) = 7 = 0b00000111
comf 6,1
; f(6) = 248 = 0b11111000
| DECF — Декремент регистра f
Синтаксис
| DECF f,d
| Операнды
|
| Операция
|
| Измен.
флаги
| C, DC, Z
| Описание
| Инвертируются все биты регистра f
| Пример
| ; f(4) = 7, w = 1
decf 4,0
; f(4) = 7, w = 6
| DECFSZ — Декремент регистра f и пропуск в случае нулевого результата
Синтаксис
| DECFSZ f,d
| Операнды
|
| Операция
|
| Измен.
флаги
|
| Описание
| Первым шагом происходит декремент регистра 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
|
GOTO — Переход по адресу
Синтаксис
| GOTO k
| Операнды
|
| Операция
|
| Измен.
флаги
|
| Описание
| В 11 младших бит счетчика программы PC загружается константа k. Два старших бита загружаются в счетчик команд из регистра PCLATH. Выполнение команды занимает 2 машинных цикла.
| Пример
| ; w = 0
goto skip
addlw 5
skip:
addlw 3
; w = 3
| INCF — Декремент регистра f
Синтаксис
| INCF f,d
| Операнды
|
| Операция
|
| Измен.
флаги
| C, DC, Z
| Описание
| Инвертируются все биты регистра f
| Пример
| ; f(4) = 7, w = 1
incf 4,0
; f(4) = 7, w = 8
| INCFSZ — Декремент регистра f и пропуск в случае нулевого результата
Синтаксис
| INCFSZ f,d
| Операнды
|
| Операция
|
| Измен.
флаги
|
| Описание
| Первым шагом происходит инкремент регистра f и запись полученного результата в f или W в зависимости от операнда d. На втором шаге, если результат первого шага оказался нулевым, происходит инкремент регистра-счетчика команд PC, тем самым вызывая пропуск следующей команды.
| Пример
| ; f(7) = 254, w = 0
loop:
addlw 3
incfsz 7,1
goto exit_loop
goto loop
exit_loop:
; f(7) = 0, w = 6
| IORLW — Побитное «ИЛИ» W и константы k
Синтаксис
| IORLW k
| Операнды
|
| Операция
|
| Измен.
флаги
| C, DC, Z
| Описание
| Выполняется побитное «ИЛИ» регистра W и 8-битной константы k. Результат помещается в регистр W.
| Пример
| ; w = 3 = 0b11
iorlw 4; 0b100
; w = 7; 0b111
| IORWF — Побитное «ИЛИ» W и регистра f
Синтаксис
| IORWF f, d
| Операнды
|
| Операция
|
| Измен.
флаги
| 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
| Операнды
|
| Операция
|
| Измен.
флаги
| 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 в регистр W.
| Пример
| ; w = 3
movlw 4
; w = 4
| MOVWF — Пересылка из регистра W в регистр f
Синтаксис
| MOVWF f
| Операнды
|
| Операция
|
| Измен.
флаги
|
| Описание
| Выполняется пересылка содержимого регистра W в регистр f.
| Пример
| ; w = 4, f(2) = 12
movwf 2
; f(2) = 4, w = 4
| NOP — Простой
Синтаксис
| NOP
| Операнды
|
| Операция
|
| Измен.
флаги
|
| Описание
| В течение одного машинного цикла не выполняется никаких операций
| Пример
| nop
| RETFIE — Возврат из подпрограммы с включением прерываний
Синтаксис
| RETFIE
| Операнды
|
| Операция
|
| Измен.
флаги
|
| Описание
| В счетчик команд PC записывается значение взятое из стека. Взводится флаг разрешения прерываний GIE. Команда выполняется за 2 машинных цикла.
| Пример
| org 004h; прерывание передает управление
; по этому адресу
goto interrupt; переходим к обработчику
...
interrupt:
...
retfie; возвращаемся из обработчика
; с включением прерываний
| RETLW — Выход из подпрограммы с загрузкой в регистр W константы k
Синтаксис
| RETLW k
| Операнды
|
| Операция
|
| Измен.
флаги
|
| Описание
| В регистр W загружается константа k. В счетчик команд PC загружается значение с вершины стека. Команда выполняется за 2 машинных цикла.
| Пример
| ; w = 6
call subprogram
; w = 12
...
subprogram:
nop
retlw 12
| RETURN — Выход из подпрограммы
Синтаксис
| RETURN
| Операнды
|
| Операция
|
| Измен.
флаги
|
| Описание
| В счетчик команд PC загружается значение с вершины стека. Команда выполняется за 2 машинных цикла.
| Пример
| ; w = 6
call subprogram
; w = 8
...
subprogram:
addlw 2
return
| RLF — Циклический сдвиг регистра f влево через флаг переноса С
Синтаксис
| RLF f,d
| Операнды
|
| Операция
|
| Измен.
флаги
| C
| Описание
| Выполняется циклический сдвиг содержимого регистра f влево через флаг переноса. 0-й бит встает на место 1-го, 1-й на место 2-го и т.д. 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
| Операнды
|
| Операция
|
| Измен.
флаги
| 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
| Операнды
|
| Операция
|
| Измен.
флаги
|
| Описание
| Команда сбрасывает флаг таймаута и устанавливает флаг спящего режима . Затем очищается регистр-счтчик сторожевого таймера и его предделитель если он настроен. После этого микроконтроллер переводится в спящий режим и тактовый генератор отключается.
| Пример
| sleep
| SUBLW — Вычитение W из константы k
Синтаксис
| SUBLW k
| Операнды
|
| Операция
|
| Измен.
флаги
| C, DC, Z
| Описание
| Выполняется вычитание регистра W из 8-битной константы k. Результат помещается в регистр W.
| Пример
| ; w = 3
sublw 5
; w = 2
| SUBWF — Вычитание W из регистра f
Синтаксис
| SUBWF f, d
| Операнды
|
| Операция
|
| Измен.
флаги
| 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. Результат помещается в регистр W, при d=0, или в f при d=1.
| Пример
| ; f(3) = 15 = 0b00001111
swapf 3,1
; f(3) = 240 = 0b11110000
| XORLW — Побитное «Исключающее ИЛИ» W и константы k
Синтаксис
| XORLW k
| Операнды
|
| Операция
|
| Измен.
флаги
| C, DC, Z
| Описание
| Выполняется побитное «Исключающее ИЛИ» регистра W и 8-битной константы k. Результат помещается в регистр W.
| Пример
| ; w = 3 = 0b11
xorlw 2; 0b10
; w = 1; 0b01
| XORWF — Побитное «Исключающее ИЛИ» W и регистра f
Синтаксис
| XORWF f, d
| Операнды
|
| Операция
|
| Измен.
флаги
| C, DC, Z
| Описание
| Выполняется побитное «Исключающее ИЛИ» регистра W c содержимым регистра f. Результат помещается в регистр W, при d=0, или в f при d=1.
| Пример
| ; w = 4 = 0b100, f(4)= 5 = 0b101
xorwf 4,0
; w = 1 = 0b001, f(4)= 5
| Учебное издание
Дубров Игорь Александрович
Белошицкий Михаил Юрьевич
Попов Антон Николаевич
|