logo search
МУ ЦТ и МК для стенда 2013

11.2 Задание на проектирование и выполнение программы

Продолжить проект лабораторной работы №10, создать выключение оборудования и обработку аварийной ситуации с помощью прерывания. Импульсы на прерывания имитировать кнопками. При аварии оборудование должно выключиться и на пульте должен загореться сигнал аварии L3.

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

Регистр PORTC

Кнопки клавиатуры

Действия кнопок

0 разряд - предупреждающая звуковая сигнализация S1

1 или 2

Аварийные датчики

(перегрев подшипников,

затор на конвейере)

1 разряд – двигатель конвейера D1

2 разряд – двигатель упаковочного механизма D2

3 разряд – световая сигнализация L1

3

Кнопка Stop

4 разряд – сигнал аварийного останова камеры L3

5 или 6

Фотодатчики

7 разряд – световая сигнализация работы L2 на пульт

Фрагменты программы 11.1. В программе выделены курсивом дополнительные строки, и строки, которые отличаются от строк программы «Автоматизация упаковки».

; Описание регистров не приведено.

; Инструкции по настройке микроконтроллера

; Вектор сброса.

ORG h'00'; указание адреса для записи следующей инструкции.

GOTO GLAV; инструкция будет записана по адресу h'00' ЭППЗУ.

; Вектор прерывания.

ORG h'04''; указание адреса для записи следующей инструкции.

GOTO Avariya; инструкция будет записана по адресу h'04' ЭППЗУ.

NOP; инструкция будет записана по адресу h'05' ЭППЗУ.

; Основная программа

GLAV ; метка главной программы.

NOP; установка курсора на команду CLRF STATUS в режиме F7.

NOP

CLRF STATUS; очищаем регистр Status от мусора.

; настройка микроконтроллера.

BSF STATUS, 5

BSF INTCON, INTE; разрешаем регистрацию внешних прерываний.

BSF INTCON, GIE; разрешаем работу прерываний.

CLRF TRISC

MOVLW b'00001111'

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

BCF STATUS, 5

Далее идет текст программы из лабораторной работы «Автоматизация упаковки» без изменений, но для отладки обработчика перед меткой M1 необходимо поместить его вызов командойCALL Avariya.

GOTO$

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

MOVWF Sch3

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

M3 MOVLW D'150' . . .

Avariya; Подпрограмма - обработчик прерывания при аварии и останове.

BCF INTCON, INTE; запрещаем внешние прерывания.

BCF INTCON, INTF; сбрасываем флаг внешнего прерывания.

MOVLW b'10010000';

MOVWF PORTC; двигатели выключаем и включаем сигнал L3.

MOVLW D'20'; определяем время подачи сигнала L3.

CALL Timer;

GOTO Stop; переход на метку выключения оборудования.

RETFIE; оператор возврата в фоновую программу из обработчика.

Stop; метка останова упаковщика (микроконтроллер не выключается).

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

Внимание! Клемма клавиатуры K3 должна быть соединена с клеммой внешних прерываний RB0/NT, остальные клеммы с PORTD.

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

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

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

Варианты заданий принять из лабораторной работы «Автоматизация упаковки».