НПО Системы Безопасности
(499)340-94-73 График работы:
ПН-ПТ: 10:00-19:00
СБ-ВС: выходной

Главная » Периодика » Безопасность

0 ... 118119120121122123124 ... 159


Для микроконтроллеров PIC 17СххиР1С ISCxx можно использовать команду subwfb:

movlw LOW 0x01234 , Сначала вычитается младший байт

bsf STATUS, С , Проверка заема

subwfb Reg, f , Reg = Reg - w -С

movlw HIGH 0x01234

subwfb Reg + 1, f , Reg + 1 = Reg + 1 - w - iС

Усовершенствованные команды addwf с и subwfb могут применяться во всех операциях сложения и вычитания 16-разрядных величин, представленных ниже. При использовании этих команд сначала получается младший байт результата, а затем старший, что противоположно последовательности выполнения операций в программах микроконтроллеров младшего и старшего подсемейств.

При выполнении сложения и вычитания 16-разрядной переменной результат будет сохранен в ячейках другой переменной:

Destination = Source + 0x05678

Программа для PIC-микроконтроллеров младшего и старшего подсемейств имеет следующий вид:

Сначала прибавляется старший байт

Сохранение результата в старшем байте Destination Затем прибавляется младший байт

Сохранение результата Флаг переноса установлен Да, инкрементируется старший , байт

Сложение двух 16-разрядных неременных аналогично прибавлению константы к 16-разрядной переменной.

Если приемник результата Destination совпадает с одной из величин, например:

а = а -t- Ь,

то фрагмент для PIC-микроконтроллеров младшего и среднего подсемейств имеет вид:

movf b + 1 w Сложение старших байтов

addwf а + 1 f

movlw

HIGH 0x05678

addwf

Source •! 1, w

movwf

Destination + 1, f

movlw

LOW 0x05678

addwf

Source, w

movwf

Destination, f

btfsc

STATUS, С

incf

Destination -i- 1, f



movf b, w , Сложение младших байтов

addwf a f

btfsc STATUS, С , Перенос прибавляется к старшему

, байту

incf а + 1, f

Если приемник результата Destination не совпадает ни с одной из складываемых величин, например:

с = а + Ь,

го программа изменится. Промежуточные суммы будут располагаться в регистре w, а затем пересылаться в байты регистра с:

movf

a + 1, w

, Сложение старших байтов

addwf

b + 1, w

movwf

с + 1

movf

a, w

, Сложение младших байтов

addwf

b, f

movwf

btfsc

STATUS, С

, Инкрементирование при отсутствии , переноса

с + 1

Вычитание выполняется аналогичным образом. Для осуществления операции

с = а-Ь

используется следующий код (для PIC-микроконтроллеров младшего и среднего подсемейств):

movf b + 1, w , Загрузка вычитаемой

, величины в регистр w

, (старший байт)

subwf а + 1, w , Формирование старшего байта

movwf с + 1

movf b, w , Загрузка вычитаемой

, величины в регистр w

, (младший байт)

subwf а, w

movwf с

btfss STATUS, С , Проверка переноса

decf с + 1

ПОБИТОВЫЕ ОПЕРАЦИИ С КОНСТАНТАМИ И ПЕРЕМЕННЫМИ

Код выполнения операции лог ическое И 1 б-разрядной переменной с константой 0х0А55А имеет следующий вид:



movlw

HIGH 0X0A56A

Загрузка старшего байта

константы для операции И

andlw

Reg + 1 f

, Формирование старшего байта

movlw

LOW 0x0A55A

, Загрузка младшего байта константы

, для операции И

andwf

Reg, f

, Формирование младшего байта

STATUS С

, Сброс флага переноса

, для нового бита

Reg, f

, Сдвиг младшего байта

Reg + 1, f

, Сдвиг старшего байта

, с переносом из младшего

I сдвиг вправо:

STATUS, С

, Очистка флага переноса

Reg + 1 f

, Правый сдвиг старшего байта

Reg, f

, Правый сдвиг младшего байта

с переносом

СРАВНЕНИЕ 16-РАЗРЯДНЫХ ПЕРЕМЕННЫХ

Для сравнения чисел можно использовать следующий фрагмент:

movf

subwf

movwf

movf

subwf

btfss

decf 2

+ 1 + 1

Reg2 Regl 2

Reg2 w Regl, w STATUS, С

Загрузка старшего байта Reg2 в w Вычитание из старшего байта Regl Сохранение результата 80 временном регистре Загрузка младшего байта Reg2 Вычитание из младшего байта Regl При необходимости старший байт уменьшается

После выполнения данной последовательности команд регистр w содержит разность младших байтов ReglLo - Reg2Lo, а 2 - разность старших байтов ReglHi - Reg2Hi с учетом переноса (заема), сформировавшегося при нахождении разности Reg Но - Reg2Lo.

В процессе работы можно столкнуться с шестью основными условиями: равно, не равно, больше, больше или равно, меньше, меньше или равно.

В случае сравнения на «равно - не равно» содержимое регистра w подвергается операции логическое ИЛИ с содержимым регистра чтобы проверить, будет ли полученный результат равен 0:

lorwf 2, w , Результат равен О



0 ... 118119120121122123124 ... 159