Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ ЦТ и МК для стенда 2013.doc
Скачиваний:
24
Добавлен:
01.05.2015
Размер:
3 Мб
Скачать
☆

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

В таблице 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

1, 2, 3, 4, 5

6

6, 7, 0, 1, 2

2

2, 3, 4, 5, 6

7

7, 0, 1, 2, 3

3

3, 4, 5, 6, 7

8

0 ,1 ,2 ,3, 4

4

4, 5, 6, 7, 0

9

1, 3, 5, 7, 0

5

5, 6, 7, 0, 1

10

2, 4, 6, 0, 1

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

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

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

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