у.
ldi rButton1HoldTime, 255; Чекати поки контроль не буден відпущена.
rjmp GoOutCh1
CheckButton1:; Визначення натискання кнопки першого каналу.
sbic pKeyboardIn, sbChannel1; Якщо кнопка натиснута, то:
rjmp Button1IsOff
ldi Temp, 255; 1) Нова відлік часу (2,5 сек.) після закінчення якого
sts mSaveBrightDelayCh1, Temp; значення яскравості буде запомнено в eeprom;
rcall ResetAutoOffTimerCh1; 2) Нова заново відлік часу безперервної роботи каналу;
; 3) Визначити подальші дії залежно від значення лічильника часу утримання кнопки.
cpi rButton1HoldTime, cButtonOnHoldSense; Якщо лічильник досяг значення, що позначає утримування кнопки,
breq Button1OnHold; перейти до виконання відповідної процедури.
cpi rButton1HoldTime, 255; Якщо в лічильнику знаходиться спеціальне значення (255),
breq PC +2; то нічого не робити - чекати поки контроль не буде віджата.
inc rButton1HoldTime; Якщо ж лічильник не містить спеціального значення і поки що не зрівнявся з порогом утримування кнопки в натиснутому положенні, то збільшити його значення на одиницю.
rjmp IsChannel1On
Button1OnHold:
sbrc rBit1, bTurnOffStartedCh1; Якщо кнопка утримується коли канал перебуває у стані автоматичного вимкнення,
rjmp RestoreBrightnessCh1; потрібно відновити первинну яскравість.
sbrc rBit1, bIsChannel1On; Якщо режим автоматичного вимкнення не активний, утримування кнопки в натиснутому положенні
rjmp ChangeBrightnessCh1; при включеному каналі призводить до зміни яскравості.
sbic pKeyboardIn, sbChannel2; Якщо в натиснутому положенні утримуються обидві кнопки
rjmp TurnCh1InSecondModeTemp, rBit1; і все каналиTemp, (1 < rjmp Channel2Processing
TurnCh1InSecondMode:
sbr reSystemBits, 1 <
cbr reSystemBits, 1 <
rjmp TurnCh1On:; Відновлення яскравості. ResetAutoOffTimerCh1; Почати заново відлік таймаута (часу безперервної роботи). p align="justify"> cbr rBit1, 1 ...