Курсовая работа: Разработка системы управления аппарата по розливу воды в стаканчики
MOVP0, #0H;на выводы порта P0 - логический ноль
MOVTMOD, #01H;настройка таймера
Указывает что, таймер/счетчик будет работать в 1 режиме, то есть в этом режиме таймерный регистр имеет разрядность 16 бит. При переходе из состояния "все единицы" в состояние "все нули" устанавливается флаг прерывания от таймера TF0.
Далее начинается работа аппарата:
MOV R0, #0H;R0 - количество заполненных стаканчиков; обнуляем
NEXT_GLASS:
JNBP3.7, LED_WINK;если сигнала нет - воды недостаточно, мигает светодиод
Обнуляется регистр R0, в котором будет храниться количество уже заполненных стаканчиков. Снимается сигнал с порта P3.7, на котором стоит датчик уровня воды, и если оказалось что уровень нулевой, что означает отсутствие необходимого количества воды, осуществляем переход на процедуру, которая заставляет мигать индикатор уровня воды.
START:
CLRP1.2;светитсветодиод
MOVDPTR, #N_GLASS;загружаем адрес ячейки с количеством стаканчиков
CLR A;очищаем аккумулятор
MOVC A,@A+DPTR;в аккумуляторе количество стаканчиков
SUBB A, R0;контрольное вычитание
JZEXIT;если все стаканчики заполнены на выход
Снимаем сигнал с порта Р1.2, тем самым заставляем светить датчик уровня воды. Далее осуществляем проверку на наличие пустых стаканчиков, для этого делаем пробное вычитание, если все стаканчики заполнены, заканчиваем работу аппарата.
Осуществляем поворот ротора двигателя за счет подачи сигналов на порт. Осуществляем это через цикл. После каждой итерации делаем небольшую задержку, для этого заполняем регистры TH0 и TL0, и вызываем процедуру таймера.
MOTOR:
MOVDPTR, #N_MOTOR_COUNT;загружаем адрес ячейки с количеством оборотов ротора мотора
CLR A;очищаем аккумулятор
MOVC A,@A+DPTR;в аккумуляторе количество оборотов ротора мотора
MOVR1, A;сохраняем это число в R1
NEXT_ROUND:
MOVDPTR, #N_STEP;загружаем адрес ячейки с количеством шагов
CLR A;очищаем аккумулятор
MOVC A,@A+DPTR;в аккумуляторе количество шагов
MOVR2, A;сохраняем это число в R2
MOVDPTR, #STEPS;загружаем адрес ячейки с последовательностью шагов
NEXT_STEP: