Читайте также:
|
|
Синтаксис | 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 |
Учебное издание
Дубров Игорь Александрович
Белошицкий Михаил Юрьевич
Попов Антон Николаевич
Дата добавления: 2015-07-08; просмотров: 285 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
CLRWDT — Сброс сторожевого таймера | | | FrankPOV |