ЗНАЕТЕ ЛИ ВЫ?

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



Добавленные команды по сравнению с лабораторной работой №8, выделены курсивом.

; Инструкции для настройки МК опущены.

CLRF TRISC

MOVLW b'00001111'

MOVWF TRISD; настраиваем PORTD: биты 0-3 на ввод, 4-7 на ввод.

BCF STATUS, 5

CLRF PORTC

; Рабочая часть программы

MOVLW B'11110000'

MOVWF PORTD; подаем питание на выводы К7-К4 клавиатуры.

MOVLW B'10000000'

MOVWF PORTC; включаем сигнализацию наличия питания на пульт.

Sled_det BTFSS PORTD, 2; проверяем нажатие кнопки Pusk.

GOTO Sled_det; если кнопка Pusk не нажата повторяем проверку.

BSF PORTC, 0; если нажата, включаем звуковую сигнализацию S1.

MOVLW d'40'; задаем время работы сигнализации S1.

CALL Timer

MOVLW B'10001110'

MOVWF PORTC; включаем двигатели D1 и D2, сигнализацию L1.

MOVLW d'60'; задаем время работы D1.

CALL Timer

BCF PORTC, 2; выключаем D1, продолжают работать D2, L1 и L2.

MOVLW d'20'; задаем время работы вентилятора D2 и лампочки L1.

CALL Timer

MOVLW B'10000000'

MOVWF PORTC; выключаем вентилятор D2 и сигнализацию L1.

MOVLW d’20’; задаем время для замены заготовки.

CALL Timer

GOTO Sled_det; на метку Sled_det для нового запуска установки.

GOTO $; разделитель основной программы и подпрограмм.

Timer; в подпрограмме показан только внутренний цикл с кнопками Stop.

M_in; метка внутреннего счетчика.

BTFSC PORTD, 1; проверяем нажатие кнопки Stop1 или Stop2.

GOTO Stop; если кнопка Stop нажата, останавливаем камеру.

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.

. . . .

RETURN

Stop CLRF PORTC; окончание работы окрасочной камеры.

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

 

Задание на выполнение

 

Разработайте программу, автоматизации окрасочной камеры, согласно варианту задания из таблицы 9.1. Для уменьшения паразитных наводок необходимо все клеммы клавиатуры соединить с выводами PORTD и на биты RD4…RD7 подать напряжение.

 

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

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

Время работы S1, D1, D2, L1 и L2 и биты их подключения к PORTC принять как в лабораторной работе №8.

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

 

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

 

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

2. Назначение клавиатуры.

3. Зачем разряды PORTD настраивают на ввод и на вывод?

4. Как инициализируется PORTD?

5. Как проверяется нажатие кнопки клавиатуры?

6. Почему каждая кнопка клавиатуры не имеет отдельной клеммы?

7. Что выполняет инструкция BTFSS PORTD, 2?

8. Что выполняет инструкция BTFSC PORTD, 2?

9. Как подключить кнопки «1» и «2» параллельно по схеме ИЛИ?

10. Что записано в файле p16F877.inc?

11. Назначение сигнализации в программе.

12. Можно ли кнопку Stop разместить вне подпрограммы Timer.

 

Автоматизация упаковки

 

Цель работы: разработка автоматизации упаковочной машины.

 

Задание на автоматизацию упаковочной машины

 

При подаче напряжения на установку включить лампочку L2 на пульте оператора и предупреждающую звуковую сигнализацию на 3 секунды, затем включить конвейер D1. По нему движутся изоляторы, фотодатчик фиксирует попадание изолятора в коробку. После попадания двух изоляторов включить лампочку L1. После попадания четырех изоляторов включить на две секунды упаковочный механизм, который заменяет полную коробку на пустую коробку. Количество упакованных коробок должно быть пересчитано. Срабатывание лазерных датчиков будем имитировать кнопками K5 и K6 клавиатуры. Временная диаграмма работы упаковщика показана на рисунке 10.1.

Рисунок 10.1 – Временная диаграмма работы упаковщика

 

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

 

В таблице 10.1 показано назначение битов PORTC и клавиатуры.

 

Т а б л и ц а 10.1 – Назначение битов PORTC и контактов клавиатуры

Регистр PORTC Кнопки клавиатуры Действия кнопок
0 разряд - предупреждающая звуковая сигнализация S1 5 или 6 Фотодатчики
1 разряд – двигатель конвейера D1    
2 разряд – двигатель D2 упаковочного механизма    
3 разряд – световая сигнализация L1    
7 разряд – световая сигнализация работы L2 на пульт    

Блок – схема программы для упаковочной машины приведена на рисунке 10.1.

 

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

 

Фрагменты программы.

include<p16F877.inc>

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

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

Sch3 EQU H'24'; счетчик третьего цикла задержки.

KOL_IZOL EQU h'25'; регистр для записи количества изоляторов.

KOL_KOROB EQU h'28'; регистр для хранения количества коробок.

;Инструкции по настройке МК опущены.

MOVLW b'00001111'

MOVWF TRISD; настраиваем PORTD: биты 0-3 на ввод, 4-7 на вывод.

BCF STATUS, 5

MOVLW b'11110000'

MOVWF PORTD; подаем питание на клавиатуру.

CLRF PORTC; очищаем PORTC от мусора.

CLRF KOL_KOROB

; Рабочая часть программы

MOVLW B'10000001'

MOVWF PORTC; включаем сигнализацию L2 на пульт и сирену S1.

MOVLW d'60'; время работы предупредительной сирены.

CALL Timer

BCF PORTC, 0; выключаем сирену S1.

BSF PORTC, 1; включаем транспортер D1.

M1 CLRF KOL_IZOL

Prov_dat

BTFSS PORTD, 2; проверяем срабатывание датчиков (кнопки "5", "6").

GOTO Prov_dat

MOVLW D'10'

Call Timer; убираем дребезг контактов клавиатуры.

INCF KOL_IZOL, F; фиксируем поступление изолятора в коробку.

MOVLW D'2';

XORWF KOL_IZOL, W; W=KOL_IZOL XOR B'00000010'.

BTFSC STATUS, Z; проверяем Z = 0?

BSF PORTC, 3; только при Z=1, включаем лампочку L1.

MOVLW D'4';

SUBWF KOL_IZOL, W; W=KOL_IZOL-4.

BTFSS STATUS, Z; проверяем разность KOL_IZOL-4=0?

GOTO Prov_dat; выполняется только при Z=0.

MOVLW b'10000110'; при Z=1, заменить коробку и выключить L1.

MOVWF PORTC; пересылаем информацию в PORTC.

INCF KOL_KOROB, F; фиксируем заполнение очередной коробки.

MOVLW d'50'; время смены коробок.

CALL Timer

BCF PORTC, 2; выключаем механизм замены коробок.

GOTO M1; начинаем заполнение новой коробки.

GOTO$

Timer; Подпрограмма Timer. Приведены только три строки.

MOVWF Sch3

; RETURN; включить команду при отладке программы в режиме F7.

M3 MOVLW D'150' . . .

RETURN; конец подпрограммы Timer.

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

В приведенной программе не используется кнопка Stop, поскольку она здесь не будет срабатывать.

10.3 Выполнение задания

 

Варианты заданий принять из таблицы 10.2.

 

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

Вариант Биты подключения оборудования S1, D1, D2, L1, L2. Вариант Биты подключения оборудования S1, D1, D2, L1, L2.
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

 

Рисунок 10.2 – Окно наблюдения

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

На рисунке 10.2 показано окно наблюдения.

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

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

 

1. Что является аргументом при вызове подпрограммы Timer.

2. Назначение символа «;» в тексте программы?

3. Порядок отладки программы.

4. Что имитируют кнопки клавиатуры?

5. Как устраняется дребезг контактов?

6. Что такое паразитные наводки?

7. Почему нельзя поместить кнопку Stop подпрограмму Timer?

8. Как имитируется работа аварийных датчиков?

9. Как определяется количество изоляторов равное двум?

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

11. Как фиксируется заполнение коробки?





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

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