Описание команд для PIC микроконтроллеров

Приложение B

Описание команд для PIC микроконтроллеров

B1. Описание команд PIC 12CXX и PIC 16C5X

ADDWF Add Wand f Сложение W с f Синтаксис: ADDWF f,d

BCF Bit Clear f

Сброс бита в регистре f

Синтаксис: BCF f,b

Операнды: 0<=f<=31, 0<=b<=7

Операция: 0->f(b)

Биты состояния: Не изменяются.

КОД: 0100 bbbf ffff

Описание: Бит b регистра f сбрасывается в 0.

Циклов: 1

Пример: BCF FLAG_REG, 7

Перед выполнением команды: FLAG_REG=0xC7

После выполнения команды: FLAG_REG=0x47

 

BSF Bit Set f

Установка бита в регистре f

Синтаксис: BSF f,b

Операнды: 0<=f<=31, 0<=b<=7

Операция: 1->f(b)

Биты состояния: Не изменяются.

КОД: 0101 bbbf ffff

Описание: Бит b регистра f устанавливается в 1.

Циклов: 1

Пример: BSF FLAG_REG, 7

Перед выполнением команды: FLAG_REG=0x0A

После выполнения команды: FLAG_REG=0x8A

 

BTFSC Bit Test f, Skip if Clear

Пропустить команду, если бит равен нулю

Операнды: 0<=31, 0<=Ь<=7 Операция: Пропустить, если f(b)=0. Биты состояния: Не изменяются.

BTFSS Bit Test f, Skip if Set

Пропустить команду, если бит равен единице

Операнды: 0<=f<=31, 0<=b<=7 Операция: Пропустить, если f(b)=1. Биты состояния: Не изменяются.

CALL Call subroutine

Вызов подпрограммы

Операнд: 0<=k<=255 Операция: (PC)+1->TOS, k->PC<7:0>,… Биты состояния: Не изменяются.

LRF Clear f

Сброс регистра f

Синтаксис: CLRF f

Операнд: 0<=f<=31

Операция: 00h->f, 1->Z

Биты состояния: Z

Код: 0000 011f ffff

Описание: Содержимое регистра f сбрасывается в 0 и бит Z устанавливается в 1.

Циклов: 1

Пример: CLRF G_REG

Перед выполнением команды: G_REG=0x5A

После выполнения команды: G_REG=0x00 Z=1

CLRW Clear W

Сброс регистра W

Синтаксис: CLRW

Операнд: Нет.

Операция: 00h->W, 1->Z

Биты состояния: Z

Код: 0000 0100 0000

Описание: Содержимое регистра W сбрасывается в 0 и бит Z устанавливается в 1.

Циклов: 1

Пример: CLRW

Перед выполнением команды: W=0x5A

После выполнения команды: W=0x00 Z=1

 

CLRWDT Clear watchdog timer

Сброс сторожевого таймера WDT

Операнд: Нет. Операция: 00h->WDT, 0->WDT prescaler, 1->TO, 1->PD Биты состояния: ТО, PD

COMF Complement f

Инверсия регистра f

Синтаксис: COMF f,d

Операнды: 0<=f<=31, dє[0,1]

Операция: (f)->(dest)

Биты состояния: Z

КОД: 0010 01df ffff

Описание: Содержимое регистра f инвертируется. Если d=0, результат сохраняется в регистре W. Если d=1, результат сохраняется в том же регистре f.

Циклов: 1

Пример: COMF REG1, 0

Перед выполнением команды: REG1=0xl3

После выполнения команды: REG1=0xl3 W=0xEC

 

DECF Decrement f

Декремент регистра f

Синтаксис: DECF f,d

Операнды: 0<=f<=31, dє[0,1]

Операция: (f) - 1->(dest)

Биты состояния: Z

Код: 0000 11df ffff

Описание: Регистр f уменьшается на 1. Если d=0, результат сохраняется врегистре W. Если d=1, результат сохраняется в том же регистре f.

Циклов: 1

Пример: DECF CNT, 1

Перед выполнением команды: CNT=0х01 Z=0

После выполнения команды: CNT=0х00 Z=1

 

DECFSZ Decrement f, Skip if 0

Декремент f, пропустить команду, если 0

Операнды: 0<=f<=31, dє[0,1 ] Операция: (f)—1->(dest); пропустить, если (dest)=0 Биты состояния: Не изменяются.

GOTO Goto address

Переход по адресу

Операнд: 0<=k<=511 Операция: k->PC<8:0>, (STATUS<6:5>)->PC<8:9> Биты состояния: Не изменяются.

INCF Increment f

Инкремент регистра f

Синтаксис: INCF f,d

Операнды: 0<=f<=31, dє [0,1]

Операция: (f)+1->(dest)

Биты состояния: Z

Код: 0010 10df ffff

Описание: Регистр f увеличивается на 1. Если d=0, результат сохраняется в регистре W. Если d=1, результат сохраняется в том же регистре f.

Циклов: 1

Пример: INCF CNT, 1

Перед выполнением команды: CNT=0xFF Z=0

После выполнения команды: CNT=0x00 Z=1

 

INCFSZ Increment f, Skip if 0

Инкремент f, пропустить команду, если 0

Операнды: 0<=f<=31, dє[0,1] Операция: (f)+1->(dest); пропустить, если (dest)=0 Биты состояния: Не изменяются.

IORLW Inclusive OR literal to W

Логическое ИЛИ константы и W

Синтаксис: IORLW k

Операнд: 0<=k<=255

Операция: (W).OR.(k)->W

Биты состояния: Z

КОД: 1101 kkkk kkkk

Описание: Содержимое регистра W логически складывается с 8-битовой константой k. Результат сохраняется в регистре W.

Циклов: 1

Пример: IORLW 0х35

Перед выполнением команды: W=0x9A

После выполнения команды: W=0xBF

 

IORWF Inclusive OR Wand f

Логическое ИЛИ W и f

Операнды: 0<=f<=31, dє [0,1] Операция: (W).OR.(f)->(dest) Биты состояния: Z

MOVF Move f

Пересылка регистра f

Синтаксис: MOVF f,d

Операнды: 0<=f<=31, dє [0,1]

Операция: (f)->(dest)

Биты состояния: Z

КОД: 0010 00df ffff

Описание: Содержимое регистра f пересылается в регистр W, если d=0, и в тот же регистр f, если d=1. Назначение d=1 имеет смысл использовать для проверки регистра на ноль, поскольку команда изменяет флаг Z.

Циклов: 1

Пример: movf fsr,0

После выполнения команды: W=значение FSR

 

MOVLW Move literal to W

Пересылка константы в W

Синтаксис: MOVLW k

Операнд: 0<=k<=255

Операция: k->(W)

Биты состояния: Не изменяются.

Код: 1100 kkkk kkkk

Описание: 8-битовая константа k загружается в регистр W.

Циклов: 1

Пример: MOVLW 0х5А

После выполнения команды: W=0x5A

 

 

MOVWF Move W to f

Пересылка We f

Синтаксис: MOVWF f

Операнд: 0<=f<=31

Операция: (W)->(f)

Биты состояния: Не изменяются

Код: 0000 001f ffff

Описание: Содержимое регистра W пересылается в регистр f

Циклов: 1

Пример: MOVWF OPT

Перед выполнением команды: OPT=0xFF W=0x4F

После выполнения команды: OPT=0x4F W=0x4F

NOP No operation

Холостая команда

Синтаксис: NOP

Операнд: Нет.

Операция: Нет.

Биты состояния: Не изменяются

Код: 0000 0000 0000

Описание: Нет операции.

Циклов: 1

Пример: NOP

 

OPTION Load OPTION Register

Загрузка регистра OPTION

Синтаксис: OPTION

Операнд: Нет.

Операция: (W)->OPTION

Биты состояния: Не изменяются.

Код: 0000 0000 0010

Описание: Содержимое регистра W загружается в регистр OPTION.

Циклов: 1

Пример: OPTION

Перед выполнением команды: W =0х07

После выполнения команды: OPTION=0x07

 

RETLW Return with literal in W

Возврат из подпрограммы с загрузкой константы в W

Операнд: 0<=k<=255 Операция: k->W, TOS->PC Биты состояния: Не изменяются.

RLF Rotate Left f through carry

Сдвиг f влево через перенос

Операнды: 0<=f<=31, dє[0,1] Операция: f<n>->d<n+1>, f<7>->C, C->d<0> Биты состояния: С

RRF Rotate Right f through carry

Сдвиг f вправо через перенос

Операнды: 0<=f<=31, dє [0,1] Операция: t<n>->d<n-1>, f<0>->C, C->d<7> Биты состояния: С

SLEEP Go into standby mode

Переход в режим SLEEP

Синтаксис: SLEEP

Операнд: Нет

Операция: 00h->WDT, 0->WDT prescaler, 1->TO, 0->PD

Биты состояния: ТО, PD

Код: 0000 0000 0011

Описание: Команда сбрасывает сторожевой таймер WDT и предварительный делитель. В регистре состояния устанавливается бит ТО и сбрасывается бит PD. Процессор переходит в режим SLEEP с выключенным генератором.

Циклов: 1

Пример: SLEEP

 

SUBWF Subtract W from f

Вычитание W из f

Операнды: 0<=f<=31, dє[0,1] Операция: (f) - (W)->(dest) Биты состояния: С, DC, Z

SWAPF Swap halves f

Обмен тетрад в f

Операнды: 0<=f<=31, dє [0,1] Операция: f<0:3>->d<4:7>, f<4:7>->d<0:3> Биты состояния: Не изменяются.

TRIS TRIS Load THIS Register

Загрузка регистра

Синтаксис: TRIS f

Операнд: 5<=f<=7

Операция: (W)->TRIS register f

Биты состояния: Не изменяются.

Код: 0000 0000 0fff

Описание: Содержимое регистра W загружается в регистр TRISA, TRISB или TRISC, при f=5,6 или 7, соответственно.

Циклов: 1

Пример: TRIS PORTB

Перед выполнением команды: W=0xA5

После выполнения команды: TRlSB=0xA5

 

XORLW Exclusive OR literal to W

Исключающее ИЛИ константы и W

Синтаксис: XORLW k

Операнд: 0<=k<=255

Операция: (W).XOR.(k)->W

Биты состояния: Z

Код: 1111 kkkk kkkk

Описание: Содержимое регистра W поразрядно складывается с 8-битовой константой k по модулю 2. Результат сохраняется в регистре W.

Циклов: 1

Пример: XORLW 0xAF

Перед выполнением команды: W=0xB5

После выполнения команды: W=0x1A

 

XORWF Exclusive OR W and f

Синтаксис: XORWF f,d Операнды: 0<=f<=31, dє[0,1] Операция: (W).XOR.(f)->(dest)