Двухканальное устройство управления освещением (диммер) для бытового светильника

Курсовой проект - Физика

Другие курсовые по предмету Физика

тие кнопки,

lds Temp, meMinBrightDelayCh1; то надо сбросить

sts mBrightMinCounterCh1, Temp; счетчик времени удержания минимальной яркости на исходное значение.

lds Temp, meMaxBrightDelayCh1; То же для

sts mBrightMaxCounterCh1, Temp; счетчика времени удержания максимальной яркости.

sbrc reUserBits1, ebBrightDirModeCh1; При ebBrightDirModeCh1=1 происходит

rjmp InvertBrightVectorCh1; смена направления изменения яркости, чтобы при следующем нажатии кнопки яркость изменялась в противоположную сторону.

lds Temp, meBrightnessMinCh1; При ebBrightDirModeCh1=0 rBrightnessCh1, Temp; направление изменения яркости сменится на противоположное только в том случае,

breq InvertBrightVectorCh1; если в момент отпускания кнопки яркость находилась на минимальном

lds Temp, meBrightnessMaxCh1; или максимальном значении. Это нужно для того чтобы

cp rBrightnessCh1, Temp; исключить задержку изменения крайнего значения яркости

breq InvertBrightVectorCh1; при следующем нажатии кнопки.

rjmp IsChannel1On

InvertBrightVectorCh1:; Смена направления изменения яркости на противоположное.

mov Temp, rBit1rBit1, 1<<bBrightVectorCh1Temp, bBrightVectorCh1rBit1, 1<<bBrightVectorCh1 IsChannel1On

TurnCh1On:

sbr rBit1, (1<<bIsChannel1On) + (1<<bSoftTurnCh1) + (1<<bBrightVectorCh1); При включении канала устанавливаются признаки включенного канала, плавного включения, вектор яркости направляется в сторону увеличения.

clr rBrightnessCh1; Яркость увеличивается, начиная с нуля.

rjmp Channel2ProcessingOff:reSystemBits, ebOwnersAtHome; В режиме ИПХOwnersAtHomeNotSetCh1rBit1, (1<<bIsChannel1On) + (1<<bIsChannel2On); любое кратковременное нажатие кнопкиrBit1, (1<<bSoftTurnCh1) + (1<<bSoftTurnCh2); выключает оба канала,reSystemBits, (1<<ebOwnersAtHome) + (1<<ebPowerStateCh1) + (1<<ebPowerStateCh2); а также сам режим.GoOutCh1:rBit1, (1<<bIsChannel1On) + (1<<bTurnOffStartedCh1); При выключении канала флаг автоотключения сбрасывается. rBit1, 1<<bSoftTurnCh1

rjmp GoOutCh1

IsChannel1On:; Данная процедура позволяет выполнять действия, требующие включенного

sbrs rBit1, bIsChannel1On; состояния канала при неактивном состоянии плавного включения/выключения.

rjmp Channel2Processing

sbrc reSystemBits, ebOwnersAtHome; Режим ИПХ не требует выполнения последующих команд

rjmp GoOutCh1; (запоминание яркости и режим автоотключения).

lds Temp, mSaveBrightDelayCh1

dec Temp; Декремент таймера запоминания яркости.

sts mSaveBrightDelayCh1, Temp

brne ExitSaveBrightDelayCh1; Как только истечет время таймаута (2,5 сек.), текущая яркость текущего режима будет запомнена в eeprom.

sbrc rBit1, bTurnOffStartedCh1; Но если канал находится в состоянии автоотключения,

rjmp ExitSaveBrightDelayCh1; яркость не запоминается.

sbrc reSystemBits, ebChannel1Mode

rjmp SaveBrightnessMode2Ch1

sbrc reUserBits2, ebSaveBrightM1Ch1; Также яркость не запоминается

sts meLastBright1_1, rBrightnessCh1

rjmp ExitSaveBrightDelayCh1; если это было запрещено пользователем.

SaveBrightnessMode2Ch1:reUserBits2, ebSaveBrightM2Ch1meLastBright1_2, rBrightnessCh11:

rcall TurnOffTimeoutCh1; Из-за малого допустимого смещения команд типа brne (максимум 64 байта) приходится использовать вызов подпрограммы.

GoOutCh1:ZH, HIGH (2*BrightnessTable)ZL, LOW (2*BrightnessTable)ZL, rBrightnessCh1; Значение регистра rBrightness задает величину смещения Temp, 0; в таблице яркости.

adc ZH, Temp

lpm rCh1OffTime, Z; Загрузка в регистр rCh1OffTime условного значения времени через которое канал должен быть погашен.

; ****************Обработка второго канала********************************Processing:rBit1, bSoftTurnCh2CheckButton2rBit1, bIsChannel2OnSoftTurnOffCh2Temp, meOwnersAtHomeBrightreSystemBits, ebOwnersAtHomeCompareBrightnessCh2Temp, meLastBright2_1reSystemBits, ebChannel2ModeTemp, meLastBright2_2:Temp, rBrightnessCh2SoftTurnOnCh2Completed:rBit1, 1<<bSoftTurnCh2reSystemBits, 1<<ebPowerStateCh2rButton2HoldTime, 255Temp, meBrightnessMaxCh2rBrightnessCh2, TempPC+2rBit1, 1<<bBrightVectorCh2GoOutCh2:Temp, meTurnOnSpeedMode1Ch2reSystemBits, ebChannel2ModeTemp, meTurnOnSpeedMode2Ch2rSoftTurnSpeedCh2Temp, rSoftTurnSpeedCh2ExitSoftTurnOnCh2rSoftTurnSpeedCh2rBrightnessCh2:GoOutCh2:reSystemBits, 1<<ebPowerStateCh2rBit1, bTurnOffStartedCh2rSoftOffBrightCh2rBrightnessCh2, rSoftOffBrightCh2SoftTurnOffCh2CompletedTemp, meTurnOffSpeedMode1Ch2reSystemBits, ebChannel2ModeTemp, meTurnOffSpeedMode2Ch2rSoftTurnSpeedCh2Temp, rSoftTurnSpeedCh2ExitSoftTurnOffCh2rSoftTurnSpeedCh2rBrightnessCh2:GoOutCh2Completed:rBit1, 1<<bSoftTurnCh2rBit1, bTurnOffStartedCh2rBit1, 1<<bIsChannel2OnrButton2HoldTime, 255GoOutCh2:pKeyboardIn, sbChannel2Button2IsOffTemp, 255mSaveBrightDelayCh2, TempResetAutoOffTimerCh2rButton2HoldTime, cButtonOnHoldSenseButton2OnHoldrButton2HoldTime, 255PC+2rButton2HoldTimeIsChannel2OnOnHold:rBit1, bTurnOffStartedCh2RestoreBrightnessCh2rBit1, bIsChannel2OnChangeBrightnessCh2pKeyboardIn, sbChannel1TurnCh2InSecondModeTemp, rBit1Temp, (1<<bBrightVectorCh1) + (1<<bBrightVectorCh2)TurnCh2InSecondModereSystemBits, (1<<ebOwnersAtHome) + (1<<ebPowerStateCh1) + (1<<ebPowerStateCh2)OwnersAtHomeTimerTriggerGoOutInSecondMode:reSystemBits, 1<<ebChannel2ModereSystemBits, 1<<ebOwnersAtHomeTurnCh2On:ResetAutoOffTimerCh2rBit1, 1<<bTurnOffStartedCh2reSystemBits, 1<<ebPowerStateCh2rBit1, 1<<bSoftTurnCh2GoOutCh2:reSystemBits, ebOwnersAtHomeGoOutCh2reBrightChangeSpeedCh2, rBrightCounterCh2BrightReadyToChangeCh2rBrightCounterCh2IsChannel2On:rBrightCounterCh2rBit1, bBrightVectorCh2IncreaseBrightnessCh2:Temp, meBrightnessMinCh2Temp, rBrightnessCh2MinBrightnessReachedCh2rBrightnessCh2GoOutCh2:rBrightCounterCh2, reBrightChangeSpeedCh2Temp, mBrightMinCounterCh2TempBrightMinTimeoutIsUpCh2mBrightMinCounterCh2, TempGoOutCh2:Temp, meMinBrightDelayCh2mBrightMinCounterCh2, TemprBit1, 1<<bBrightVectorCh2rBrightCounterCh2GoOutCh2:Temp, meBrightnessMaxCh2rBrightnessCh2, TempMaxBrightnessReachedCh2rBrightnessCh2GoOutCh2:rBrightCounterCh2, reBrightChangeSpeedCh2Temp, mBrightMaxCounterCh2TempBrightMaxTimeoutIsUpCh2mBrightMaxCounterCh2, TempGoOutCh2:Temp, meMaxBrightDelayCh2mBrightMaxCounterCh2, TemprBit1, 1<<bBrightVectorCh2rBrightCounterCh2GoOutCh2IsOff:rButton2HoldTime, 255PC+2rButton2HoldTime, 0rButton2HoldTime, 0IsChannel2OnrButton2HoldTime, cButtonOnHoldSenserButton2HoldTime, 0HoldButton2:rBit1, bIsChannel2OnTurnCh2OffreSystemBits, (1<<ebChannel2Mode) + (1<<ebOwnersAtHome)TurnCh2On:Temp, meMinBrightDelayCh2mBrightMinCounterCh2, TempTemp, meMaxBrightDelayCh2mBrightMaxCounterCh2, TempreUserBits1, ebBrightDirModeCh2InvertBrightVectorCh2Temp, meBrightnessMinCh2rBrightnessCh2, TempInvertBrightVectorCh2Temp, meBrightnessMaxCh2rBrightnessCh2, TempInvertBrightVectorCh2IsChannel2On:Temp, rBit1rBit1, 1<<bBrightVectorCh2Temp, bBrightVectorCh2rBit1, 1<<bBrightVectorCh2IsChannel2OnOn:rBit1, (1<<bIsChannel2On) + (1<<bSoftTurnCh2) + (1<<bBrightVectorCh2)rBrightnessCh2GoOutOff:reSystemBits, ebOwnersAtHomeOwnersAtHomeNotSetCh2rBit1, (1<<bIsChannel1On) + (1<<bIsChannel2On)rBit1, (1<<bSoftTurnCh1) + (1<<bSoftTurnCh2)reSystemBits, (1<<ebOwnersAtHome) + (1<<ebPowerStateCh1) + (1<<ebPowerStateCh2)GoOutCh2:rBit1, (1<<bIsChannel2On) + (1<<bTurnOffStartedCh2)rBit1, 1<<bSoftTurnCh2GoOutCh2On:rBit1, bIsChannel2OnGoOutreSystemBits, ebOwnersAtHomeGoOutCh2Temp, mSaveBrightDelayCh2TempmSaveBrightDelayCh2, TempExitSaveBrightDelayCh2rBit1, bTurnOffStartedCh2ExitSaveBrightDelayCh2reSystemBits, ebChannel2ModeSaveBrightnessMode2Ch2reUserBits2, ebSaveBrightM1Ch2meLastBright2_1, rBrightnessCh2ExitSaveBrightDelayCh2Ch2:reUserBits2, ebSaveBrightM2Ch2meLastBright2_2, rBrightnessCh2:TurnOffTimeoutCh2:ZH, HIGH (2*BrightnessTable)ZL, LOW (2*BrightnessTable)ZL, rBrightnessCh2Temp, 0ZH, TemprCh2OffTime, Z

; ********************Сохранение изменившихся значений в eeprom*******************

GoOut:

ldi Temp, eLastBright1_1; Если значение яркости после последней ре

503 Service Unavailable

Service Unavailable

The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.