Для пробы всунул так (Я вообще не программист и понятия не имею как правильно)
;===========================================================================
; П/пр обслуживания прерывания от таймера 0
;---------------------------------------------------------------------------
OVF_T0:
push R16 ;сохраняем в стеке R16
in R16,SREG ;
push R16 ;сохраняем в стеке SREG
;
dec time ;Счётчик циклов
t_1: tst r1 ;Если ни одна кнопка не нажата
breq vyh ; выйти из п/пр, иначе -
mov r2,r1 ; подтвердить код нажатой кнопки
ldi R17,0xAF ;(0xAF) Включить дисплей.
rcall lcd_com ;Передать команду в LCD
vyh: pop R16 ;восстанавливаем из стека SREG
out SREG,R16 ;
pop R16 ;восстанавливаем из стека R16
reti
;===========================================================================
; П/пр обслуживания прерывания от таймера 1
;---------------------------------------------------------------------------
OVF_T1: push temp ;Cохраняем в стеке R16
in temp,SREG ;
push temp ;
rcall U_bat ;Проверка напряжения питания батареи
;
tst r1 ;Если ни одна кнопка не нажата
ldi R17,0xAE ;(0xAE) Выключить дисплей (спящий режим)
rcall lcd_com ;Передать команду в LCD
podsv: dec R12 ;Счётчик циклов
tst R12 ;Если счёт времени не окончен, -
brne wyh ; выйти из п/пр, иначе -
wyh: pop temp ;Восстанавливаем из стека SREG
out SREG,temp ;
pop temp ;Восстанавливаем из стека R16
reti
Но буду наверно Таймер 2 задействовать который начнет отсчет после последнего нажатия любой кнопки после чего вырубит экран, если так возможно
По крайней мере сейчас прошил в таком варианте, работает. Только естественно время выключение тикает само по себе