.include "output\tn13def.inc"
;================================================================================================================

;            10 ,   
;    00:00,   - 00:01.    3-  (4)    . .  1 , 
;    ,      .




;								  

;         1  (/)
;  
;       (24 )  :
;     ,     ( 23  24)  
;             
;  ,     
;   

;													 

;   								*	+
;  												*	+
;    										*	-
;      			*	+
;    					*	+
;   									*	+

;									
;		1.   , ..     ,  EEPROM   

;							
; 1 -      (3) -      3,   
;	   .       18 750 
; 2 -     /  


; !!!!!!!!!!!!!!!!			      		  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

;==================================================================================================

;*******************************		 		****************************

.def   	Temp=R16  	 	;
.def   	Temp1=R17   	;  
.def   	Temp2=R18   	; 
.def   	Flag=R19		;  			|	 
.def   	Mach=R20  	 	;    
.def   	LTemp=R21   	;    	|	..  8- ,     :)
.def   	Second=R22 		;  (0-60)
.def	Min=R23   		;  (0-60)
.def  	Hour=R24   		;  (0-24)
.def	Port=R25		;     PortB
.def	pvm=R26			;      

.dseg

;********************************		    		**********************************
;********************************			  " "		**********************************

Time_ON:	.byte 2		; 
Time_OFF:	.byte 2		; 

.cseg
.org 0


;***************************   ************************
   rjmp RESET   
;rjmp INT0  						 ;INT0_vect     0
;rjmp PCINT0  						 ;PCINT0_vect    0    
.org 3



;**********************     *********************
;**********************               TIMER0_OVF                   *********************


TIMER0_OVF:		IN   R15,SREG   	; SREG   R15
				ldi Temp,6 			;
				out TCNT0,Temp		;      

				
				dec pvm
				
				inc LTemp			;+1    
				cpi LTemp,75		;  75
				brne Exit			;  ,   
						
				ldi LTemp,0			;  
				
	;+++++++++++++++++                 +++++++++++++++++++

				inc Second			;+1 
				cpi Second,60		; ?
				brne Exit			; -   
				
				ldi Second,0		; 
				
				inc Min				;+1 
				cpi Min,10			; ?
				brne Exit			; -   
				
				ldi Min,0			; 
				
				inc Hour			;+1 
				cpi Hour,0			; ?
				brne Exit			; -   
				
				ldi Hour,0			; 

Exit:   reti

; TIMER0COMPA:
; reti
   
RESET:
   ldi Temp,0b11111100 				; 
   out DDRB,Temp

;**********************    ************************

ldi Temp,0
mov Mach,Temp
mov LTemp,Temp
mov Second,Temp
mov Min,Temp
mov Hour,Temp
mov Temp1,Temp
mov pvm,Temp
;**********************     ,     ************************
;********************** 				 33  33  					 ************************
ldi Temp,0

sts Time_ON+1,Temp
sts Time_ON,Temp

sts Time_OFF+1,Temp
ldi Temp,1
sts Time_OFF,Temp


;***********************	 	**********************
;  								4,8  
;  /256 	 					18 750 ,
;    		18750 / (255-5) = 75   
;     			250-1
;   	TCNT0 		250-5-1=6

ldi Temp,6 
out TCNT0,Temp			;  6  255 (  249 )

ldi Temp,0b00000010 	;    / 0
out TIMSK0,Temp

ldi Temp,0b00000010 	;    
out TIFR0,Temp

ldi Temp,0b00000100 	;  = CK/256 (4,8/256=18 750)
out TCCR0B,Temp

ldi Temp,0b00000000 	;
out TCCR0A,Temp

ldi Temp,250			;  
out OCR0A,Temp

ldi Temp1,0b00000000
sei

;****************************									****************************
;****************************         		****************************
;****************************									****************************

main:   		rcall time_mach		;   
				rcall Press_key		;   
				sbi PortB,3			;   .
				rcall Dealay		;
			rjmp main
			
Dealay:		mov Temp2,pvm
			dec Temp2
			cpi Temp2,0
			brne Dealay
			cbi PortB,3			;   
			ret

			
;************************************		     		**************
;											
;     ,    
;   
; =1 -  ,     
; =0 -  ,     

time_mach:		brts mach_OFF		;T=1
				brtc mach_ON		;T=0
			

mach_On: 		lds Mach,Time_ON	;    
				cp Min,Mach			;  
				brne ExitTimeMach	;  ,     ,  
				
				lds Mach,Time_ON+1	;  
				cp Hour,Mach
				brne ExitTimeMach
				
				set					;  ,   =1
				sbi PortB,4			;  4  1 
			
mach_OFF:		lds Mach,Time_OFF	;    
				cp Min,Mach			;  
				brne ExitTimeMach	;  ,     ,  
				
				lds Mach,Time_OFF+1	;  
				cp Hour,Mach
				brne ExitTimeMach
				
				clt					;  ,   =0
				cbi PortB,4			;  4  0 
				
ExitTimeMach:
				ret					;   

				

;*********************************************		    ***********************
;									
;	     /  - 1 ,     
;	   .      ,       
;	    .
;

Press_key:		in Port,PortB			;   ( 0,1   )
										;      "-",     "+"
				andi Port,0b11111100	;  ,
				cpi Port,0b11111100		;   , 
				breq ExitKey
				
				cpi Port,0b11111110		;  1   +
				breq Key1				;   1  ()
										;  -   
				cpi Port,0b11111101		
				breq Key2
				rjmp ExitKey			;        
										;    		011111111
										;      
		;*******************
Key1:			sts Time_OFF,Min		;
				sts Time_OFF+1,Hour
				rjmp ExitKey
		;*******************
Key2:			sts Time_ON,Min			;
				sts Time_ON+1,Hour
				rjmp ExitKey
ExitKey:
			ret

















