<
sbr reSystemBits, 1 <
sbr rBit1, 1 <
rjmp GoOutCh1
ChangeBrightnessCh1:
sbrc reSystemBits, ebOwnersAtHome; У режимі Імітація Присутності Господарів ручне регулювання яскравості недоступна.
rjmp GoOutCh1
cp reBrightChangeSpeedCh1, rBrightCounterCh1; Якщо значення заданої швидкості зміни яскравості стало одно поточному значенню лічильника-дільника,
breq BrightReadyToChangeCh1; значить пора перейти до збільшення, зменшення, або утриманню яскравості.
inc rBrightCounterCh1; Інакше збільшити значення лічильника-дільника.
rjmp IsChannel1On
BrightReadyToChangeCh1:
clr rBrightCounterCh1; Очищення лічильника-дільника для використання в наступному циклі.
sbrc rBit1, bBrightVectorCh1; Якщо біт скинутий, то зменшити яскравість,
rjmp IncreaseBrightnessCh1; інакше - збільшити.: Temp, meBrightnessMinCh1Temp, rBrightnessCh1 MinBrightnessReachedCh1; Якщо поточна яскравість більше мінімальної,
dec rBrightnessCh1; зменшити її на один крок.
rjmp GoOutCh1
MinBrightnessReachedCh1:; При досягненні мінімальної яскравості, або якщо поточна яскравість менше мінімальної, лічильник-дільник відключається
mov rBrightCounterCh1, reBrightChangeSpeedCh1; щоб усунути вплив швидкості регулювання яскравості на тривалість утримання її мінімального значення.
lds Temp, mBrightMinCounterCh1; Якщо яскравість досягла мінімальної,
dec Temp; але лічильник утримання мінімальної яскравості
breq BrightMinTimeoutIsUpCh1; ще не знизився до нуля,
sts mBrightMinCounterCh1, Temp; то зберегти в оперативній пам'яті декрементірованное значення цього лічильника,
rjmp GoOutCh1; а яскравість залишити незмінною.
BrightMinTimeoutIsUpCh1:
lds Temp, meMinBrightDelayCh1; Якщо ж лічильник досяг нульового значення,
sts mBrightMinCounterCh1, Temp; відновити його початковий стан,
sbr rBit1, 1 <
clr rBrightCounterCh1; і відновити працездатність лічильника-дільника швидкості регулювання яскравості.
rjmp GoOutCh1: Temp, meBrightnessMaxCh1rBrightnessCh1, TempMaxBrightnessReachedCh1rBrightnessCh1GoOutCh1: rBrightCounterCh1, reBrightChangeS...