ся, скидається ознака плавного режиму,
sbr reSystemBits, 1 <
ldi rButton1HoldTime, 255; і починається очікування моменту відпускання кнопки.
lds Temp, meBrightnessMaxCh1; Якщо поточна яскравість
cp rBrightnessCh1, Temp; більше або дорівнює максимально допустимої,
brlo PC +2
cbr rBit1, 1 <
rjmp GoOutCh1; Стан кнопки опитується в наступному циклі щоб врахувати змінилося стан бітів.
SoftTurnOnCh1:; Плавне збільшення яскравості при включенні каналу.
lds Temp, meTurnOnSpeedMode1Ch1; Завантаження тривалості наростання яскравості, заданої для першого
sbrc reSystemBits, ebChannel1ModeTemp, meTurnOnSpeedMode2Ch1; або другої режиму. rSoftTurnSpeedCh1; Інкремент лічильника імпульсів, що визначає швидкість зміни яскравості.
cp Temp, rSoftTurnSpeedCh1; Якщо значення лічильника ще не зрівняли із заданою тривалістю,
brne ExitSoftTurnOnCh1; то вийти з процедури, залишивши поточну яскравість незмінною.
clr rSoftTurnSpeedCh1; Якщо зрівнялося, то скинути лічильник,
inc rBrightnessCh1; і збільшити поточну яскравість на одиницю.
ExitSoftTurnOnCh1:
rjmp GoOutCh1; Під час плавного включення контроль не опитується.
SoftTurnOffCh1:; Плавне зменшення яскравості при виключенні каналу.
cbr reSystemBits, 1 <
sbrs rBit1, bTurnOffStartedCh1; При другому способі автоматичного вимкнення яскравість потрібно знизити до значення, зазначеного в регістрі rSoftOffBrightCh1.
clr rSoftOffBrightCh1; Якщо ж автоотключение неактивно, яскравість потрібно знизити до нуля.
cp rBrightnessCh1, rSoftOffBrightCh1; Якщо яскравість ще зрівнялася
breq SoftTurnOffCh1Completed; із заданим значенням,
lds Temp, meTurnOffSpeedMode1Ch1reSystemBits, ebChannel1ModeTemp, meTurnOffSpeedMode2Ch1rSoftTurnSpeedCh1Temp, rSoftTurnSpeedCh1ExitSoftTurnOffCh1rSoftTurnSpeedCh1rBrightnessCh1; то зменшити її на один крок, враховуючи швидкість зниження (аналогічно процедурі SoftTurnOnCh1 :).: GoOutCh1Completed:; Якщо яскравість знизилася до необхідного значення, rBit1, 1 < ;
sbrc rBit1, bTurnOffStartedCh1; Якщо автоотключение активно,
sbr rBit1, 1 <