.include "m16def.inc"
.device ATMEGA16

;--задаем имена регистрам------------------
.def temp = r16 ;рабочая переменная


; ---------------Проинициализировали указатель стека------

 	ldi r16,high(RAMEND) ;      Начало
	out SPH,r16 ;               основной программы
 	ldi r16,low(RAMEND)  
 	out SPL,r16 



;------ Инициализация портов --------

 ldi r17, 0x00
 out PINA, r17  ; деактивируем Pull-up резисторы 

 ldi r17, 0xF0
 out DDRA, r17  ;  порт на вывод

 ldi r17, 0x00
 out PINC, r17  ; деактивируем Pull-up резисторы 

ldi r17, 0x01
 out DDRC, r17  ;  порт на ввод

ldi r17, 0x00
 out PIND, r17  ; деактивируем Pull-up резисторы 

ldi r17, 0x02
 out DDRD, r17  ;  порт на ввод

         
 
 

ldi r17, 0x01
out PORTC, r17 
ldi r17, 0x02
out PORTD, r17 
 

;------------- Тело ----------------------------

 
; Set baud rate
ldi r20, 0x00
out UBRRH, r20
ldi r20, 0x03
out UBRRL, r20
; Enable receiver and transmitter
ldi r16, (1<<RXEN)|(1<<TXEN)
out UCSRB,r16
; Set frame format: 8data, 2stop bit
//ldi r16, (1<<URSEL)|(0<<USBS)|(3<<UCSZ0)
ldi r16, 0x83
out UCSRC,r16



      



                      
Cycle:              RCALL	uart_snt	; Отправляем обратно.
 				
jmp Cycle




; Процедура отправки байта
			
uart_snt:	lds r17, UCSRA
			
			SBRS 	r17,UDRE	; Пропуск если нет флага готовности,
								;  если 1 - то готов отправлять данные
			RJMP	uart_snt 	; ждем готовности - флага UDRE
 
			ldi     r16, 0x05
			sts	    UDR, R16	; шлем байт 01010101 в UDR
				RET			; Возврат
