;=======================================================================
; 					 
;=======================================================================
.org 000
	rjmp reset		; 
.org 006
	rjmp tim_ovf0	;   / 0

;=======================================================================
;		    / 0.
;=======================================================================
tim_ovf0:
	out tcnt0,r18		;      
	inc r19		;    
	sbrc r19,0		;     r19
	cbi portd,4		;   PD4  0
	sbrs r19,0		;     r19
	sbi portd,4		;   PD4  1
	reti			;    
;=======================================================================
; 		       .
;=======================================================================
reset:
	ldi r16,0b01010010
	out ddrd,r16		;    D
	ldi r16,0b01101100	
	out portd,r16		;       D
	ldi r16,$80	
	out spl,r16		; 
	ldi r16,0b00001000
	out ucr,r16		;   UART
	ldi r16,$ff
	out ubrr,r16		;   UART
	ldi r16,$1
	out tccr0,r16		;  / 0 
	ldi r18,$cb		;    
	sei			; 
start:	
				; 
	
				;  		
	mov r1,r31		;  r1    
	rcall uart		;   
				;  
	
	rjmp start		;   
;=======================================================================
;  		     UART.
;=======================================================================
uart:
	out udr,r1		;      UART
up:
	out tcnt0,r18		;      
	ldi r16,0b00000010		
	out timsk,r16		;    / 0
up_1:
	sbis pind,1		;      PD1
	rjmp up_1
	ldi r16,0b00000000
	out timsk,r16		;   / 0
	cbi portd,4		;  0   PD4 
down:
	sbis pind,1		;      PD1
	rjmp up		
	sbic usr,txc		;,      
	rjmp exit		;   
	rjmp down
exit:
	sbi usr,txc		;   
	ret			;  

;=======================================================================
 .
;=======================================================================
.org 000
	rjmp reset		; 
.org 007
	rjmp uart_rx		;      UART
;=======================================================================
;			    UART.
;=======================================================================
uart_rx:
	in r31,udr		;   UART  
	sbic usr,fe		;,     
	rjmp eror		
	rjmp exit
eror:
	clr r31			; 
exit:
	reti			;    
;=======================================================================
; 		       .
;=======================================================================
reset:
	ldi r16,$80
	out spl,r16		; 
	ldi r16,0b10010000
	out ucr,r16		;   UART,   
	ldi r16,$ff
	out ubrr,r16		;   UART
	ldi r16,0b00100000        
            out mcucr,r16	;      	
sei			; 
start:	
				;  
	
	sleep			;    
				;   (r31)
				;   
	rjmp start		;   


;=======================================================================
; 					 .
;=======================================================================
.org 000
	rjmp reset		; 
;=======================================================================
; 		       .
;=======================================================================
reset:
	ldi r16,$80
	out spl,r16		; 
	ldi r16,0b00010000
	out ucr,r16		;   UART
	ldi r16,$ff
	out ubrr,r16		;   UART
start:	
				;  
	
	rcall uart_rx		;   UART
				;   (r31)
				;  
	rjmp start		;   
;=======================================================================
;		   UART.
;=======================================================================
uart_rx: 
	sbis usr,rxc  		;,      
	rjmp exit		;     (r31)    
	in r31,udr		;    UART  
	sbic usr,fe		;,      
exit: 	clr r31			;    
	ret			;  
