Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Лабораторная работа №3. ПодпрограммыСодержание книги
Поиск на нашем сайте
Цель работы: написание подпрограмм для задержки времени, их расчет. Подпрограммы применяют в тех случаях, когда в нескольких места алгоритма требуется выполнить одинаковые действия. Кроме того, часто программу разбивают на подпрограммы, чтобы упростить её чтение. Отсчет времени можно организовать с помощью подпрограмм со счетчиками, что и реализовано в алгоритме, показанном на рисунке 3.1. Вся работа подпрограммы сводится к уменьшению значений всех счетчиков до нуля, на что тратится определенное время. Длительность времени задержки определяется начальной величиной счетчиков и временем выполнения инструкций подпрограммы в МК. Время задержки будет определяться примерно произведением Sch_out*Sch_in и частой работы генератора МК. Поскольку микропроцессор работает с высокой частотой, приходится создавать внешние циклы для увеличения времени задержки. Подпрограммы пишут после инструкции GOTO$ основной Подпрограмма из основной программы вызываетсяпо имени. Значение аккумулятора W является аргументом для подпрограммы Timer. После завершения ее работы управление передается в главную программу на следующую инструкцию после вызова. Задание на проектирование. Создайте программу для автоматической окрасочной камеры, выполняющую следующую работу: - при подаче питания включить световую сигнализацию на пульт оператора L2 и звуковую сигнализацию S1; - через 2 секунды выключить сирену и включить двигатель краскораспылителя D1, двигатель вентилятора D2 и лампочку L1, сигнализирующую об окраске; - через три секунды выключить двигатель краскораспылителя D1. - ещё через 2 секунды выключить вентилятор D2 и лампочку L1; - в течение одной секунды заменяется заготовка в камере; - повторить процесс окрашивания новой заготовки, начиная с включения сирены.
Рисунок 3.2 – Схема подключения оборудования На рисунке 3.2 показана схема подключения оборудования к битам PORTC.
Рисунок 3.3 – Временная диаграмма работы окрасочной камеры Фрагменты программы. include<p16F877.inc>; описание регистров общего назначения. Sch_in EQU H'22'; адрес счетчика внутреннего цикла задержки. Sch_out EQU H'24'; адрес счетчика внешнего цикла задержки. Sch3 EQU H'23'; адрес счетчика третьего цикла задержки. ; инструкции стандартной настройки МК опущены. ; рабочая часть программы. MOVLW B'10000000' MOVWF PORTC; включаем сигнализацию L2 на пульт оператора. Sled_det BSF PORTC, 0; включаем звуковую сигнализацию S1. MOVLW d’40’; аргумент W задает время таймера. При отладке d’2’. CALL Timer MOVLW B'10001110' MOVWF PORTC; выключаем S1, включаем D1, D2 и L1. MOVLW d’60’; задаем время окраски. CALL Timer BCF PORTC, 2; выключаем D1, продолжают работать D2, L1 и L2. MOVLW d’40’; задаем время работы D2 и L1. CALL Timer MOVLW B'10000000' MOVWF PORTC; окраска закончена, сигнализация на пульте L2 работает. MOVLW d’20’; задаем время для замены заготовки. CALL Timer GOTO Sled_det; переход на метку Sled_det для включения камеры. GOTO $; разделитель основной программы и подпрограмм. Timer; подпрограмма Timer. Применено два вложенных цикла. MOVWF Sch3; значение W является аргументом для таймера. M3 MOVLW D'150' MOVWF Sch_out; устанавливаем значение внешнего счетчика. M_out; метка внешнего счетчика. MOVLW D’255'; MOVWF Sch_in; устанавливаем значение внутреннего счетчика. M_in; метка внутреннего счетчика. DECF Sch_in, F; уменьшаем значение счетчика Sch_in на 1. BTFSS STATUS, Z; если оно равно нулю (Z=1), пропускаем GOTO. GOTO M_in; срабатывает только при Z=0. DECF Sch_out, F; уменьшаем значение счетчика Sch_out на 1, BTFSS STATUS, Z; если оно равно нулю (Z=1), пропускаем GOTO. GOTO M_out; срабатывает только при Z=0. DECF Sch3, F; уменьшаем значение счетчика Sch3 на 1, BTFSS STATUS, Z; если оно равно нулю (Z=1), пропускаем GOTO. GOTO M3; срабатывает только при Z=0. RETURN; конец подпрограммы Timer. END; конец текста всей программы. Т а б л и ц а 3.1 – Варианты заданий
Разработайте программу, включающую и выключающую оборудование на заданное время, согласно варианту задания из таблицы 3.1. Отладка программы. Оставьте только первый вызов подпрограммы Timer, установив аргумент W=2. Остальные вызовы выключите, напечатав перед инструкцией Call символ «;». Установите значения для счетчиков Sch_in и Sch_out равные 2. Введите разработанную программу в микроконтроллер. Создайте окно наблюдения. После отладки программы в пошаговом режиме, установите первоначальные значения аргумента W, счетчиков Sch_in и Sch_out и запустите ее в автоматическом режиме. Рассчитайте значение W для заданного времени работы оборудования по варианту методом пропорций. Для уточнения времени задержки можно добавить в циклы дополнительные бесполезные инструкции NOP, которые ничего не делают, но требуют время на свое выполнение. Т а б л и ц а 3.2– Результаты настройки циклов задержки
Внимание! Обязательно сохраните подпрограмму Timer в моих документах, поскольку в следующих работах она будет применяться. Результаты занесите в таблицу 3.2. Продемонстрируйте работу программы преподавателю. Контрольные вопросы 1. Почему создан третий цикл в подпрограмме Timer? 2. Назначение подпрограмм. 3. Цикл, вложенный цикл. 4. Что такое машинный цикл? 5. Сколько машинных циклов выполняется каждая команда в Timer? 6. Почему в Timer выбраны указанные значения Sch_in и Sch_out? 7. Как вызывается подпрограмма на выполнение? 8. Опишите работу инструкции DECF Sch_out, F. 9. Приведите формулу для расчета времени задержки. 10. Как разделяются главная программа и подпрограммы? 11. Какими операторами начинается и заканчивается подпрограмма? 12. Как выполняется отладка подпрограммы Timer? 13. Что является аргументом для подпрограммы Timer? 14. Почему в Timer применено два вложенных цикла?
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Последнее изменение этой страницы: 2017-01-28; просмотров: 225; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.11 (0.01 с.) |