ЗНАЕТЕ ЛИ ВЫ?

Автоматизация окрасочной камеры. Организация подпрограмм



 

Цель работы: разработка и исследование подпрограмм выдержки времени. Автоматизация работы окрасочной камеры

 

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

 

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

Рассмотрим сначала работу внутреннего цикла подпрограммы Timer. Сначала счетчику внутреннего цикла Sch_in задаем какое-то значение N. Затем значение счетчика Sch_in уменьшается на 1 и проверяется: не стало ли оно нулевым. Если значение счетчика не равно нулю, то выполняется инструкция перехода GOTO M_in, повторяющая цикл. Если счетчик обнулился, программа выходит из цикла. Длительность задержки времени определяется начальной величиной счетчика Sch_in и временем выполнения инструкций подпрограммы в МК. Поскольку микропроцессор работает с высокой частотой, то часто приходится создавать внешний цикл со счетчиком Sch_out для увеличения времени задержки. Его работа аналогична. Сначала задаем значение Sch_out=W. На каждый цикл уменьшения Sch_out на единицу, внутренний цикл сработает N раз. Время задержки будет определяться произведением Sch_out×Sch_in и частой работы генератора МК.

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

 

Задание на проектирование.

 

Создать программу для автоматизации окрасочной камеры, описанной в лабораторной работе 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.3 Выполнение задания

 

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

 

 

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

Вариант Биты подключения S1, D1, D2 L1, L2. Время работы, сек Вариант Биты подключения S1, D1, D2 L1, L2. Время работы, сек
S1 D1 D2 S1 D1 D2
1, 2, 3, 4, 5 6, 7, 0, 1, 2
2, 3, 4, 5, 6 7, 0, 1, 2, 3
3, 4, 5, 6, 7 0 ,1 ,2 ,3, 4
4, 5, 6, 7, 0 1, 3, 5, 7, 0
5, 6, 7, 0, 1 2, 4, 6, 0, 1

Отладка программы. Оставьте только первый вызов подпрограммы Timer, установив аргумент W=2. Остальные вызовы выключите, напечатав перед инструкцией Call символ «;». Установите значения для счетчиков Sch_in и Sch_out равные 2. Введите разработанную программу в микроконтроллер. Создайте окно наблюдения. После отладки программы в пошаговом режиме, установите первоначальные значения аргумента W, счетчиков Sch_in и Sch_out и запустите ее в автоматическом режиме. Рассчитайте W для заданного времени работы оборудования по варианту методом пропорций. Для уточнения времени задержки можно добавить в циклы дополнительные бесполезные инструкции, например, NOP.

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

 

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

    Вариант     Оборудование Параметры подпрограммы Timer
Время работы, сек Значение счетчиков
Sch_in Sch_out Sch3
  S1        
  D1, D2, L1        
  D2, L1        

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

 

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?

Программирование клавиатуры

 

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

 

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

 

Клавиатура используется в реальных программах для ввода данных, инструкций, изменения алгоритма вычислений. В лабораторной работе с клавиатуры будем подавать сигнал ’1’ в PORTD, без применения дополнительного источника питания. Сигнал будет обработан микропроцессором и в PORTC будет выведен результат работы программы.

Изучите принципиальную схему подключения пленочной клавиатуры к микроконтроллеру (см. рисунок 9.1). Использование такой схемы подключения продиктовано тем, что все кнопки подключаются к одному регистру PORTD, имеющему восемь бит.

На рисунке 9.1 приведена, в качестве примера, монтажная схема подключения кнопки с цифрой «1» к PORTD. Разряды RD7, RD6, RD5, RD4 предназначены для подачи сигнала «1». Остальные для приема сигнала. В разряде RD0 по заводской схеме всегда записана «1». Одна клемма кнопки «1» подключена к выводу RD7, вторая подключена к выводу RD3.

 

Бит RD7 должен быть запрограммирован на вывод, а бит RD3 - на ввод. Когда кнопка нажата, с бита RD7 проходит сигнал через кнопку «1» на клемму RD3. Роль кнопок клавиатуры в программе и их расположение: “5” - Кнопка Pusk1 на пульте; “6” - Кнопка Pusk2 по месту; “Shift”- Кнопка Stop1 на пульте; “9” - Кнопка Stop2 по месту.
Рисунок 9.1 – Схема подключения  

Задание на проектирование

 

Создайте программу автоматизации окрасочной камеры по заданию лабораторной работы №8. Предусмотреть запуск и останов камеры кнопками по месту и с пульта оператора.

Дребезг контактов клавиатуры убирается включением подпрограммы Timer. Кнопка Stop в данной программе находится в подпрограмме Timer. Выключение оборудования кнопкой здесь возможно, потому что при выполнении данной программы, МК практически все время находится во внутреннем цикле подпрограммы Timer. При других алгоритмах такой вариант выключения невозможен, необходимо предусмотреть прерывание.





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

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