Задание на проектирование.
Создать программу для автоматизации окрасочной камеры, описанной в лабораторной работе 2, выполняющую следующую работу: - при подаче питания включить световую сигнализацию на пульт оператора L2 и звуковую предупреждающую сигнализацию S1 на 2 секунды; - включить двигатель краскораспылителя D1 на 3 секунды, а также двигатель вентилятора D2 и лампочку L1; - выключить краскораспылитель D1, вентилятор D2 и лампочка L1 должны работать еще 2 секунды; - выключить D2 и L1 на 1 секунду для замены заготовки в камере; - повторить процесс окрашивания новой заготовки, начиная с включения предупреждающей звуковой сигнализации S1. Временная диаграмма работы камеры показана на рисунке 8.2.
Рисунок 8.2 – Временная диаграмма работы окрасочной камеры
Программа 8.1. 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; если счетчик Sch_in обнулился, пропускаем GOTO. GOTO M_in; срабатывает только при Z=0. DECF Sch_out, F; уменьшаем значение счетчика Sch_out на 1. BTFSS STATUS, Z; если счётчик обнулился, пропускаем GOTO. GOTO M_out; инструкция срабатывает только при Z=0. DECF Sch3, F; уменьшаем значение счетчика Sch3 на 1, BTFSS STATUS, Z; если оно равно нулю (Z=1), пропускаем GOTO. GOTO M3; срабатывает только при Z=0. RETURN; конец подпрограммы Timer. END; конец текста всей программы.
Выполнение задания
Разработайте программу, включающую и выключающую оборудование на заданное время, согласно варианту задания из таблицы 8.1.
Т а б л и ц а 8.1 – Варианты заданий
Отладка программы. Оставьте только первый вызов подпрограммы Timer, установив аргумент W=2. Остальные вызовы выключите, напечатав перед инструкцией Call символ «;». Установите значения для счетчиков Sch_in и Sch_out равные 2. Введите разработанную программу в микроконтроллер. Создайте окно наблюдения. После отладки программы в пошаговом режиме, установите первоначальные значения аргумента W, счетчиков Sch_in и Sch_out и запустите ее в автоматическом режиме. Рассчитайте W для заданного времени работы оборудования по варианту методом пропорций. Для уточнения времени задержки можно добавить в циклы дополнительные бесполезные инструкции, например, NOP.
Результаты занесите в таблицу 8.2. Продемонстрируйте работу программы преподавателю.
Т а б л и ц а 8.2– Результаты настройки циклов задержки
Внимание! Обязательно сохраните программу в моих документах, поскольку в следующих лабораторных работах программа будет продолжена.
8.4 Контрольные вопросы
1. Почему создан третий цикл в подпрограмме Timer? 2. Почему в счетчики циклов записаны указанные значения? 3. Назначение подпрограмм. 4. Цикл, вложенный цикл. 5. Что такое машинный цикл? 6. Сколько машинных циклов требуется для выполнения команд в подпрограмме Timer? 7. Почему в Timer выбраны указанные значения Sch_in и Sch_out? 8. Как вызывается подпрограмма на выполнение? 9. Опишите работу инструкции DECF Sch_out, F. 10. Приведите формулу для расчета времени задержки. 11. Как разделяются главная программа и подпрограммы? 12. Какими операторами начинается и заканчивается подпрограмма? 13. Как выполняется отладка подпрограммы Timer? 14. Что является аргументом для подпрограммы Timer?
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|