/////////////////////////////////////////
; 
;	выход PB2					нога 14
;	вход 1 (уменьшение) PD4		нога 8		0b00010000
;	вход 2 (увеличение) PD6		нога 11		0b01000000
;
;  

.include "tn2313def.inc"

.def     Temp=R16
.def     TempH=R17
.def     TempL=R18
.def     Schet1=R19
.def     Schet2=R20
;.def     Prover1=R21
.def     temp_eeprom=R22
.cseg 
.org 0


begin:	ldi R16,0b11111111 		; настройка порта B
        out DDRB,R16  
		ldi R16,0b10101111		; настройка порта D
		out DDRD,R16

		ldi R16,RamEnd			; Инициализация стека (для сознадия функций)
		out SPL,R16				; будет работать команда rcall   

// прочитать 1-ю ячейку из EEPROM 
		ldi	temp,1
		rcall EERead
/////////////

// запуск шим со значением из temp_eeprom
		ldi tempH,0b00000010		; Заносим значение $00 в регистр OCR1AH 
		out OCR1AH,tempH
		ldi tempL,0b00111111		;
		out OCR1AL,tempL

		mov temp,temp_eeprom	;значение для стравнения (те данные из eeprom)  
		out OCR0A,temp
		ldi temp,  0b10100011
;					1 \ 14 нога (PB 2)
;					0 -    1<OCR0A<0 

;					1 \ 9 нога (PD5)
;					0 -    1<OCR0B<0

;					0 \
;					0 - резерв

;					1 \						01- Phase CorrectPWM
;					1 -	WGM - Fast PWM   	10- CTC
		out TCCR0A,temp
		ldi temp, 0b11000001
		out TCCR0B,temp
		ldi temp,0b0000011
///////////////////////////

// чтение порта D
START:
		in temp, PinD			; чтение порта В
		subi temp,0b00010000	; вычитаем из ttemp значение 0b00010000 (PD4)
		breq dekrement			; если нажата переходим на инкремент

		in temp, PinD			; чтение порта В
		subi temp,0b01000000	; вычитаем из ttemp значение 0b01000000 (PD6)
		breq increment 			; если нажата переходим на декремент
		rjmp start				; 


dekrement:
		dec temp_eeprom			; уменьшаем значение temp_eeprom
		rjmp zapis			 	; переходим в процедуру записи

increment:
		inc temp_eeprom			; увеличиваем значение temp_eeprom
		rjmp zapis			 	; переходим в процедуру записи


zapis: 	ldi temp,1				; адрес ячейки
		rcall EEWrite			; вызываем процедуру записи.

		
		ldi schet1,5
B1:		dec Schet1			
		brne B1	
		
;		dec Schet2
;		brne B1	

	
		rjmp begin

EEWrite:	
		out OCR0A,temp_eeprom
		SBIC	EECR,EEWE		; Ждем готовности памяти к записи. Крутимся в цикле
		RJMP	EEWrite 		; до тех пор пока не очистится флаг EEWE
 
		CLI				  		; Затем запрещаем прерывания.
		OUT 	EEAR,R16 		; Загружаем адрес нужной ячейки
		OUT 	EEDR,temp_eeprom; и сами данные, которые нам нужно загрузить
 		
		SBI 	EECR,EEMWE		; взводим предохранитель
		SBI 	EECR,EEWE		; записываем байт
 
		SEI 					; разрешаем прерывания
		RET 					; возврат из процедуры
 
 
EERead:	
		SBIC 	EECR,EEWE		; Ждем пока будет завершена прошлая запись.
		RJMP	EERead			; также крутимся в цикле.
		OUT 	EEAR, R16		; загружаем адрес нужной ячейки
		SBI 	EECR,EERE 		; Выставляем бит чтения
		IN 		temp_eeprom, EEDR 		; Забираем из регистра данных результат
		RET


