Главная »
Периодика »
Безопасность0 ...
11121314151617 ...
159Система команд микроконтроллеров PIC
8Схх (продолжение)

содержимого регистра держимым регистра reg и битом переноса С I, размещение результата в соответствии
значением указателя Способ доступа определяется указателем а
Команда
adwfc
d а
Функция
If (d == 1)
wreg = wreg + Reg + С else
Reg = wreg + Reg + С If (((wreg > 0) & (Reg > 0))
& ((wreg + Reg + C)
> Ox07F)) OV = 1 else OV = 0
If ((wreg + Reg + C)«. OxOBO) = 0) N = 1 else N = 0
If ((wreg + Reg + C) >
OxOFFO С = 1 else С = 0 If (((wreg «. OxOF) + (Reg 8. OxOF) + C) > OxOF) DC = 1 else DC - 0 If (((wreg + Reg + C) «. OxOFF) == 0x000) Z = 1
else Z = 0
0010 OOda ffff ffff
Логическое И (побитовое) содержимого регистра кгед с константой
andlw Constant
Логическое И содержимого регистра с содержимым регистра "гед и размещение Резупьтата в соответствии со значением l-swa Доступ-в соответствии указателем а
["ДРеходкметке, если ановленбит
Jiyae перехода
wreg = wreg & Constant If ((wreg & Constant)
0x000) Z = 1
else Z = 0
If (((wreg «. Constant)
8, 0x080) 1= 0) N = 1
else N = 0
0000 1011 kkkk kkkk
andwf Reg d a
If (d == 1)
wreg = wreg 8. Reg else
Reg = wreg 8. Reg If ((wreg 8. Reg) -= 0x000)
Z = 1 else Z = 0 If ((wreg i Reg)
8. 0x080) 1= 0) N = 1
else N = 0
0001 01da ffff ffff
be Label
If (C == 1)
PC = PC + 2 + Label
1110 0010 kkkk кккк
Описание | Команда | Функция | Код ~ |
Стирание заданного бита в региаре Reg Доауп - в соответавии с указателем а | bcf Reg. Bit, а | Reg = Reg 8,(OxOFF " (1 « Bit)) | 1001 bbba ffff ffff |
Переход к метке, если установлен флаг отрицательного результата. В случае перехода требуются два цикла | bn Label | If (N == 1) PC = PC + 2 + Label | 1110 0110 kkkk kkkk |
Переход к метке, если нет переноса В случае перехода требуются два цикла | bnc Label | If (C == 0) PC = PC + 2 + Label | 1110 0011 kkkk kkkk |
Переход к метке, если сброшен флаг отрицательного результата. В случае перехода требуются два ци кла | bnn Label | If (N == 0) PC = PC + 2 * Label | 1110 0111 kkkk kkkk |
Переход к метке, если сброшен флаг переполнения. В случае перехода требуются два цикла | bnov Label | If (OV == 0) PC = PC + 2 + Label | 1110 0101 kkkk kkkk |
Переход к метке, если результат предыдущей операции не равен 0. В случае перехода требуются два цикла | bnz Label | If (Z == 0) PC = PC + 2 + Label | 1110 0001 kkkk кккк |
Переход к метке, если переполнение. В случае перехода требуются два цикла | bov Label | If (OV == 1) PC = PC + 2 + Label | 1110 0100 kkkk kkkk |
Безусловный переход к метке. Требуются два цикла | bra Label | PC = PC + 2 + Label | 1110 Okkk kkkk kkkk |
Установка заданного бита в регистре (запись в 1). Доступ-в соответствии с указателем а | bsf Rpq Bit, a | Reg = Regl (1 << Bit) | 1000 bbba ffff ffff |
1---Описание | Команда | Функция | |
fjBepKa значения бита регистра и пропуск следующей команды, если бит равен 0. При отсутствии пропуска требуется один командный цикл, а в случае пропуска -два цикла Доступ-в соответствии гуказателем а | btfsc Reg, Bit, а | If ((Reg & (1 « Bit))== 0) PC = Nextlns | 1011 bbba ffff ffff |
Проверка значения бита регистра и пропуск следующей команды, если бит равен 1, При отсутствии пропуска требуется один командный цикл, а в случае пропуска -два цикла. Доступ-в соответствии с указателем а | btfss Reg, Bit, a | If ((Reg «. (1 « Bit)) 1= 0) PC = Nextlns | 1010 bbba ffff ffff |
Изменение состояния заданного бита регистра Доступ -в соответствии с указателем а | btg Reg Bit a | Reg = Reg (1 « Bit) | 0111 bbba ffff ffff |
Переход к метке, если результат предыдущей операции равен 0 В случае перехода требуются два цикла | bz Label | If (Z 1) PC = PC + 2 + Label | 1110 0000 kkkk kkkk |
Вызов подпрограммы по 20-разрядному адресу (требуются два цикла). Сохранение Контекста, если s = 1 | call Label, s | PUSH (PC) If (S == 1) PUSH (w. STATUS, BSR) PC = Label | 1110 110s kkkk kkkk 1111 kkkk kkkk kkkk |
Стирание указанного регистра Доступ -в соответствии £)5«1ателем а | clrf Reg a | Reg = 0 Z = 1 | 0110 101a ffff ffff |
Стирание счетчика сторожевого таймера | clrwdt | WDT = 0 WOT Postscaler = 0 T0 = 1 PD = 1 | 0000 0000 0000 0100 |
0 ...
11121314151617 ...
159