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

Додаток B

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

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

  ADDWF Add W and f Додавання W із f

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 <= b <= 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>, (STATUS <6:5>)->PC <10:9>, 0-> PC <8>

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… Біти стану: С

RRF Rotate Right f through carry

Зсув f вправо через перенос

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

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… Біти стану: Не змінюються.

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)