Смекни!
smekni.com

Принципиальная электрическая схема (стр. 4 из 4)

DEC R0 // уменьшаем значение режима для последующего сравнения с нулём

MOV A, R0 // переносим в аккумулятор (для команды условного перехода)

JZ M_PredNabor // если режим "полоскание" переходим к установке режима "отжим" чтобы не стирать дважды

DEC R0 // уменьшаем значение режима для последующего сравнения с нулём

MOV A, R0 // переносим в аккумулятор (для команды условного перехода)

JZ M_BezOtzhima // если режим "без отжима" (10, уже равен 00) переходим

SJMP M_OTZHIM // если режим "отжим" (11, уже равен 01) переходим

M_BezOtzhima:

Mov R0, #11111111B // устанавливаем любое значение кроме выбранных режимов, для того чтобы в последствии пропустить этап «отжим»

SJMP M_NABOR // пропускаем установку режима "отжим" и переходим к стирке

M_PredNabor:

MOV R0, #00000011B // Устанавливаем режим "отжим"

Блок набора воды:

M_NABOR :

ANL P0, #0B // гасим светодиоды

SETb P0.0 // включаем светодиод "набор воды"

SETb P1.2 // включение насоса

MOVR2, #10B// запись времени работы в данном режиме

CALLTIMER// включение таймера

CLR P1.2 // по истечению заданного времени залива происходит отключение насоса

Блок нагрева воды:

ANL P0, #00000000B // гасим светодиоды

JBP2.2, M_TEMP// проверка температурного режима

MOVR3, #11110B// записали температуру 30 градусов

M_TEMP:

MOVR3, #111100B// записали температуру 60 градусов

SETbP0.1 // включем светодиод "нагрев воды"

SETbP1.0 // включаем тэн

Считываем показания датчика температуры:

CALLACPCONF// конфигурирование ацп

M_NSTEP:

MOVA, ADCOH//старшие биты

SWAPA// обмен тетрад

ANLA, #0F0H// получили старший полубайт

MOVR5, A// временно записываем в R5

MOVA, ADC0L// считываем младший байт

SWAPA// обмен тетрад

ANLA, #0FH// получили младший полубайт

ADDA, R5// суммирование полубайт

CJNEA, R3, M_NSTEP // если требуемая температура достигнута идем дальше, если нет проверяем снова

CLRP1.0 // выключили тэн

Блок вращения барабана при стирке:

ANL P0, #0B // гасим светодиоды

SETb P0.2 // включаем светодиод "стирка"

MOV P1, #10000000B // Установка скорости оборотов (режим 000)

SETb P1.7 //включение двигателя (старший бит=1)

MOVR2, #100100B// запись времени работы в данном режиме

CALLTIMER// Включение таймера

CLR P1.7 // выключение двигателя по истечении времени

Блок выпуска воды:

ANL P0, #0B // гасим светодиоды

SETb P0.3 // включем светодиод "выпуск воды"

SETb P1.3 // открытие клапана

MOVR2, #10B// запись времени работы в данном режиме

CALL TIMER // вызываем процедуру работы таймера

CLR P1.3 // закрытие клапана по истечении времени

CJNE R0, #0B, M_PredNabor // если первый режим (первые два бита порта P2 равны нулю) то переход

CJNE R0, #11111111B, M_END // если режим «быстрая стирка» то переход к окончанию работы

Блок отжима (проходит во всех режимах работы кроме режима «быстрой стирки»):

M_OTZHIM:

ANL P0, #0B // гасим светодиоды

SETb P0.4 // включаем светодиод "отжим"

MOV A, P2 // передача скорости двигателя в аккумулятор

ANL A, #01110000B // обнуление ненужных битов (оставляем только те, которые используются двигателем)

MOV P2, A

SETb P1.7 // включение двигателя

MOVR2, #1001000B// запись времени работы в данном режиме

CALLTIMER// включение таймера

CLR P1.7 // выключение двигателя по истечении времени

Блок окончания работы :

M_END:

ANL P0, #0B // гасим светодиоды

SETb P0.5 // включаем светодиод "конец работы"

CLR P2.3 // открыли замок