logo
МУ ЦТ и МК для стенда 2013

5.1 Теоретические сведения

Инструкции условных переходов BTFSCиBTFSSпроверяют состояние заданного бита в любом регистре и в зависимости от результата, пропускают или не пропускают следующую инструкцию программы. ИнструкцияBTFSCпропускает следующую инструкцию, если заданный бит сброшен. ИнструкцияBTFSSпропускает следующую инструкцию, если заданный бит установлен. На основе этого создается передача управления в другое место программы и организация циклов, см. таблицу 5.1[3,5].

Т а б л и ц а 5.1

Использование бита CARRY (C)

BTFSS STATUS, C

GOTO METKA

MOVWF R2

Если в бите Carry установлена единица, то пропускается следующая инструкция программы GOTO МЕТКА и сразу выполняется инструкция MOVWF R2

Если бит Carry сброшен, то выполняется следующая инструкция программы GOTO METKA

Использование бита ZERO (Z)

BTFSS STATUS, Z

MOVF R2, W

MOVWF PORTC

Если в бите Z установлена единица, то пропускается следующая инструкция программы MOVF R2 и сразу выполняется инструкция MOVWF PORTC

Если бит Z сброшен, то выполняется следующая инструкция программы MOVF R2, W и затем MOVWF PORTC

В реальных программах вместо указанных инструкций пишутся инструкции, соответствующих разработанному алгоритму.

В ассемблере отсутствуют инструкции сравнения чисел, поэтому, чтобы определить, какое из чисел больше (меньше), применяют такой алгоритм:

а) Выполняют вычитание чисел. При этом в зависимости от результата, устанавливаются флаги C иZрегистраStatus, см. таблицу 5.2.

б) Далее применяют инструкции условных переходов.

В таблице 5.2 показаны значения флагов регистра Statusпри вычитании по командеSUBWFUMENSH,W, т.е.W=UMENSH-W.

Т а б л и ц а 5.2 – Регистрация событий в регистре Status

Соотношения значений в W и РОН UMENSH

Значения флагов регистра status после выполнения вычитания

Флаг Z

Флаг C

UMENSH-W>0

0 -Нулевого результата не было

1 - был перенос из 7 бита W в бит С (при сложении в дополнительном коде)

UMENSH-W<0

0 - Нулевого результата не было

0 - не было переноса из 7 разряда W в бит С (при сложении в дополнительном коде)

UMENSH-W=0

1 - был нулевой результат операции

1- был перенос из 7 разряда W в бит С (при сложении в дополнительном коде)

П р и м е ч а н и е – В регистр UMENSH помещается уменьшаемое число