курсовой проект / Курсовая по МП1 / Программа управления контроллером
.docПрограмма управления контроллером
ORG 0000h
LXI SP,0FFEh ; Указатель стека
MVI A,11011001b ; Инициализация порта В/В №1
OUT 43h
MVI A,11110111b ; Инициализация порта В/В №2
MAIN:
m1: IN 40h ; Ждем срабатывания датчика влажности
ANI 10000000b
JZ m1
MVI A,11110111b ; Открыть клапан 1 для заливки порции воды в емкость
OUT 80h
m2: IN 40h ; Ждем пока не сработает датчик заполнения емкости водой
ANI 01000000b
JZ m2
MVI A,11111111b ; Закрыть клапан 1 заливки воды
OUT 80h
IN 81h
ANI 11111111b ; Считаем номер текущей позиции устройства поливки
MOV B,A ; Сохраним номер текущей позиции в регистре В
IN 41h
ANI 11111111b ; Считаем номер позиции, где сработал датчик в регистр А
MOV C,A ; Сохраним номер позиции, где сработал датчик в регистре С
CMP B ; Сравним позиции , текущую и позицию где сработал датчик
JZ mS ; Если равны откроем клапан 2 сброса воды
JC mL ; Проверим , если позиция, где сработал датчик, слева от
; текущей , то включим вращение двигателя влево
; иначе вправо
mR: MVI A,01111111b ; Включим вращение двигателя вправо
OUT 80h
JMP m3
mL: MVI A,10111111b ; Включим вращение двигателя влево
OUT 80h
m3: IN 81h
ANI A,11111111b
CMP C
JNZ m3 ; Позиция где сработал датчик ?
MVI A,11111111b ; Выключим двигатель
OUT 80h
m4: IN 40h
ANI 00010000b ; Проверка вращения двигателя вправо
JNZ m4
m5: IN 40h
ANI 00100000b ; Проверка вращения двигателя влево
JNZ m5
mS: MVI A,11011111b ; Открыть клапан 2 сброса воды
OUT 80h
m6: IN 40h
ANI 00001000b ; Ждем срабатывания датчика окончания сброса воды
JNZ m6
MVI A,11111111b ; Закрыть клапан 2 сброса воды
OUT 80h
END: HLT