.include "tn15def.inc"
.def al=r16
.def count=r17; счётчик задержек, уменьшение на 1 длительность 0,2 сек, 5 Вольт питание
;------------------------------
	 cli                 ;запрет всех прерываний
     ldi al,0b00001111   ;настройка WDT: 1,28 с
	 out wdtcr,al
	 ldi count,0b00000000; сброс счётчика задержек
    
	 ldi al,0b00000111   ;настройка направления порта
     out $17,al

	 ldi al,0b11111000
	 out $18,al		     ;PB5,PB4,PB3-входы;PB2,PB1;PB0-выходы)

     ldi al,0b00000101   ;биты sc02,sc01,sc00:CK/1024)
	 out tccr0,al        ;выбор источника тактового сигнала и запуск таймера Т0


go:                      ;начало программы управления насосами
sbi $18,2                ;включаем первый насос устанавливаем 2-й бит порта PB2 в "1"
sbi $18,0                ;включаем индикатор
ldi count,0b00001111     ;для задержки 3 секунды записываем в счётчик задержек count число "15"
rcall timer              ;вызываем подпрограмму формирования задержек "timer"
cbi $18,2                ;отключаем первый насос усанавливаем 2-й бит порта PB2 в "0"
cbi $18,0                ;отключаем индикатор
ldi count,0b00110001     ;для задержки 10 секунд записываем в счётчик задержек count число "49"
rcall timer              ;вызываем подпрограмму формирования задержек "timer"
sbi $18,1                ;включаем второй насос устанавливаем 1-й бит порта PB2 в "1"
sbi $18,0                ;включаем индикатор
ldi count,0b00001111     ;для задержки 3 секунды записываем в счётчик задержек count число "15"
rcall timer              ;вызываем подпрограмму формирования задержек "timer"
cbi $18,1                ;отключаем второй насос усанавливаем 1-й бит порта PB2 в "0"
cbi $18,0                ;отключаем индикатор
ldi count,0b00110001     ;для задержки 10 секунд записываем в счётчик задержек count число "49"
rcall timer              ;вызываем подпрограмму формирования задержек "timer"
rjmp go                  ;переходим к началу программы

timer:
in al,tifr               ;загрузка регистра tifr в r16, показывает переполнение таймера T0
sbrs al,1                ;пропуск следующей команды, если разряд TOV0=1
rjmp timer               ;безусловный переход
ldi al, 0b00000010       ;загрузка в r16 "1"
out tifr,al              ;запись 2 разряда в регистр, tifr сбрасывается единицей
wdr                      ;сброс сторожевого таймера
dec count                ;уменьшение счётчика задержек на 1
ldi al,0b00000000        ;загрузка в r16 "0"
cpse count,al            ;пропуск следующей команды при равенстве двух регистров
rjmp timer               ;безусловный переход
ret 








;______________________________________________________
;конфигурация
;CKSEL0[]
;CKSEL1[]
;RSTDISBL[v] (programmed - сброс используется как вход)
;SPIEN[v]
;BODEN[v]
;BODLEVEL[v]
