Главная Случайная страница


Полезное:

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


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Лабораторная работа 10. Подпрограммы





 

Цель работы: закрепление навыков организации условных переходов и инициализации портов. Написание подпрограмм, обращение к ним.

Подпрограммы применяют в тех случаях, когда в нескольких места алгоритма требуется выполнить одинаковые действия. Они часто применяются для выдержки времени, например, при нагреве изделия в течение заданного времени, затем паузы. Далее повторяются вновь нагревание и пауза. Отсчет времени можно организовать с помощью подпрограмм со счетчиками, что и реализовано в приведенной ниже программе, показанной на рисунке 10.1.

Сначала счетчику T_in в подпрограмме задаем какое-то значение В. Затем значение счетчика T_in с тактовой частотой микропроцессора по инструкции DECFSZ уменьшается на 1 и далее проверяется: не стало ли оно нулевым. Если значение счетчика не равно нулю, то выполняется инструкция GOTO M_in, повторяющая цикл. Если счетчик обнулился, программа выходит из цикла уменьшения значения счетчика. Длительность задержки времени (паузы) определяется начальной величиной счетчика T_in. Поскольку микропроцессор работает с высокой частотой, приходится создавать внешний счетчик T_out для увеличения времени задержки.

Подпрограммы пишут после инструкции GOTO$ основной программы Эта инструкция разделяет основную программу и подпрограмму. Последняя всегда начинается с имени, которое должно быть написано без пробела. Заканчивается любая подпрограмма инструкцией возврата RETURN. Подпрограмма из основной программы вызываетсяпо имениинструкцией CALL ИМЯ. После завершения ее работы по инструкции RETURN управление передается в главную программу на следующую инструкцию после инструкции CALL ИМЯ.

Изучите организацию мигания светодиодов с помощью временной задержки за счет циклов на примере программы 10.1. Задавая максимальные значения для счетчиков циклов, определите практически наибольшую задержку.

Следующая программа решет задачу подачи энергии, допустим нагревателям, по заданному временному графику, причем подача энергии выполняется несколько раз.

Программа 10.1. Организация циклов.

include<p16F877.inc>

MIG EQU H'21'; Адрес счетчика цикла количества миганий.

T_IN EQU H'22'; Адрес счетчика внутреннего цикла задержки.

T_OUT EQU H'23'; Адрес счетчика внешнего цикла задержки.

org 0x000; Выполнение программы начинается с 0-го адреса.

nop

nop

nop

org 10; Начать с адреса 10.

START CLRF STATUS; Очистить регистр статуса.

BSF STATUS, 5; Выбираем банк ‘1’.

CLRF TRISC; Настраиваем порт С на вывод.

CLRF STATUS; Выбираем банк ’0’.

MOVLW H'02'; Записываем в W константу.

MOVWF MIG; Устанавливаем 2 мигания.

L_MIG; Метка цикла миганий.

MOVLW H'FF'; Записываем в W константу.

MOVWF PORTC; Зажигаем все светодиоды.

CALL TIME_Z1; Вызываем подпрограмму задержки.

CLRF PORTC; Тушим все светодиоды.

CALL TIME_Z2; Вызываем подпрограмму задержки.

DECFSZ MIG,1; Уменьшаем значение счетчика MIG на 1,

GOTO L_MIG; если он станет равным нулю пропускаем GOTO.

MOVLW H'FF'

MOVWF PORTC; Зажигаем светодиоды. Сигнал конца программы.

GOTO $; Обозначение окончания главной программы.

; Подпрограмма задержки TIME_Z1.

TIME_Z1

MOVLW H'02'

MOVWF T_OUT; Устанавливаем значение внешнего счетчика.

M_OUT; Метка внешнего счетчика.

MOVLW H'03'

MOVWF T_IN; Устанавливаем значение внутреннего счетчика.

M_IN; Метка внутреннего счетчика.

DECFSZ T_IN,1; Уменьшаем значение счетчика T_IN на 1,

GOTO M_IN; если оно будет равен нулю пропускаем GOTO.

DECFSZ T_OUT, 1; Уменьшаем значение счетчика T_OUT на 1,

GOTO M_OUT; если оно равно нулю пропускаем GOTO.

RETURN; Конец подпрограммы TIME_Z1.

END; Конец текста всей программы.

Примечание – Подпрограмма TIME_Z2 не приведена.

Разработайте программу, включающую и выключающую светодиоды на заданное время, согласно варианту задания из таблицы 10.2.

Т а б л и ц а 10.2 – Варианты заданий

Вариант Время включения светодиодов, сек Время выключения светодиодов, сек Вариант Время включения светодиодов, сек Время выключения светодиодов, сек
  0,5       2,5
    4,5   3,5  
  1,5       1,5
    3,5   4,5  
  2,5       0,5
П р и м е ч а н и е – Программа варианта должна зажигать светодиоды, имитирующие номер варианта в двоичной системе

Введите разработанную программу в микроконтроллер. Установите минимальные значения для счетчиков равные 2. После отладки программы в пошаговом режиме, установите количество миганий равное 10, средние значения счетчиков и запустите ее в автоматическом режиме. Настройте заданное время горения светодиодов и время паузы. Для увеличения времени задержки добавьте в циклы дополнительные бесполезные инструкции. Возможно, что вам потребуется создать два вложенных цикла.

Результаты занесите в таблицу 10.3. Продемонстрируйте работу программы преподавателю.

Т а б л и ц а 10.3– Результаты настройки циклов задержки

Вариант Параметры подпрограммы включения светодиодов Параметры подпрограммы выключения светодиодов
Время включения светодиодов, сек Значение счетчика Время выключения светодиодов, сек Значение счетчика
T_1 T_2 T_3 T_4 T_5 T_6
                 

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

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

2. Какие числа нужно записать в счетчики циклов, чтобы получить максимальную и минимальную задержку?

3. Назначение подпрограмм.

4. Цикл, вложенный цикл.

5. Как вызывается подпрограмма на выполнение?

6. По какой инструкции происходит возврат в основную программу?

7. Опишите работу инструкции DECFSZ.


Date: 2015-05-09; view: 654; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию