| Читайте также: 
 | 
| Синтаксис | 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 |