ЗНАЕТЕ ЛИ ВЫ?

Анализ информации посредством регистра состояния



 

Цель работы: использование флагов регистра Statusдля анализа информации и применение результата для ветвления алгоритма. Изучение инструкций условных переходов BTFSC и BTFSS, применение их для ветвления алгоритма.

 

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

 

Инструкции условных переходов 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 при вычитании по команде SUBWF UMENSH, 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 помещается уменьшаемое число

 

Исходные данные

 

Технологический процесс должен выполняться при определенной требуемой температуре T_treb. Температура окружающей среды T_sredy измеряется аналоговым датчиком. Его показания поступают на АЦП микроконтроллера и преобразуются в двоичный код. Измеренная температура среды сравнивается с требуемой температурой, если она выше включают охлаждение, если ниже включают подогрев. Охлаждающая установка подключается к нулевому биту PORTC, нагревающая установка подключается к первому биту. Работа такой установки аналогична работе кондиционера «Зима-Лето».

Программа 5.1- управление нагревом и охлаждением.

Include<p16f877.inc>

T_sredy EQU h'40'; регистр для записи температуры окружающей среды.

T_treb EQU h'41'; регистр для записи требуемой температуры установки.

UMENSH EQU h'43'; рабочий регистр для хранения данных.

; Инструкции настройки микроконтроллера напишите самостоятельно.

MOVLW D'22'

MOVWF T_treb; требуемая температура.

MOVLW b'00011000'; первое значение T_sredy, данные после АЦП.

M1 MOVWF T_sredy; температура по показаниям датчика.

CLRF PORTC

MOVF T_treb, W; UMENSH= T_treb.

MOVWF UMENSH; чтобы не портить данные в регистре T_treb.

MOVF T_sredy, W; температуру среды записываем в W.

SUBWF UMENSH, F; UMENSH=T_Treb -T_Sredy.

MOVLW b'00000010'; предполагаем, что надо включить подогрев.

BTFSS STATUS, C; C = 1? Разность положительна?

MOVLW b'00000001'; только при С=0 включаем охлаждение.

MOVWF PORTC; пересылаем информацию на установку из W.

MOVLW b'00010100'; второе значение T_sredy.

GOTO M1

END

Запомните, что команда MOVLW не влияет на регистр Status.

 

Порядок выполнения работы

При написании программы используйте блок-схему на рисунке 5.3. Создайте окно наблюдения аналогичное рисункам 5.1 и 5.2.

На рисунках 5.1 и 5.2 показаны окна наблюдения, из которых видно как переключается нагрев и охлаждение при изменении окружающей температуры.

Рисунок 5.1 – Нагрев включился Рисунок 5.2 – Охлаждение включилось

 

 

Т а б л и ц а 5.3 - Варианты заданий

Вариант T_sredy 1 T_treb T_sredy 2 Бит подключения системы нагрева Бит подключения системы охлаждения
Примечание. Значения T_sredy 1 и T_sredy 2 заданы в двоичной системе, T_treb в десятичной.

 

 

Рисунок 5.3 – Блок-схема

 

5.4 Контрольные вопросы

 

1. Что происходит с регистром Status при логических и математических операциях?

2. Расскажите, какую реальную задачу решает ваша программа.

3. Поясните инструкцию условного перехода BTFSC STATUS, Z.

4. Поясните инструкцию условного перехода BTFSS STATUS, Z.

5. Какой операцией можно определить равенство чисел?

6. В каких случаях флаг Z равен единице при вычитании?

7. В каких случаях флаг С равен единице при вычитании?

8. Когда флаги Z и С регистра Status одновременно равны нулю?

9. Как определить более мощную установку из двух потребителей?

10. Расскажите назначение АЦП.

11. Расскажите об аналоговых и цифровых сигналах.

12. На какие части делится программа?

13. В каких банках находятся, регистры применяемые в программе?

14. Как переключается нагрев и охлаждение установки.

Маскирование

 

Цель работы: изучение способов маскирования и практическая форма их применения.

 





Последнее изменение этой страницы: 2017-01-25; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.216.79.60 (0.007 с.)