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

Фрагмент 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; конец текста всей программы.