;---------------------Программа для передатчика-приемника USART
;---------------------команды управления
.nolist   ;
.include"tn2313def.inc"   ;
.list  ;

.def temp = r16 ;
.def temp1 = r17;
.def regotveta = r18;
.def sinxr = r19;
.equ kdel = 780;
;---------------------прогр код
.cseg  ;
.org 0 ;
;--------------------прерывания 
rjmp	start;1
reti;2
reti;3
reti;4
rjmp	prtim;5
reti;6
reti;7
reti;8
reti;9
reti;10
reti;11
reti;12
reti;13
reti;14
reti;15
reti;16
reti;17
reti;18

;----------------------стек
start:
ldi		temp, RAMEND	;
out		SPL, temp		;
;----------------------- порты ВВ

ldi		temp, $FF;
out		DDRA, temp;
out 	DDRD, temp;
out 	DDRB, temp;
out	TIFR, temp;
;-------------------------компаратор выкл
ldi		temp, $80;
out		ACSR, temp;
;-------------------------таймер
ldi		temp, $0D;
out		TCCR1B, temp;
ldi 	temp, high(kdel);
out 	OCR1AH, temp;
ldi 	temp, low(kdel);
out		OCR1AL, temp;
ldi 	temp, 0b10000000;
out		TIMSK, temp;
;-------------------------инициализация USART
clr		temp1;
clr		temp;
ldi 	temp, 25;
out		UBRRH, temp1;
out 	UBRRL, temp;
ldi		temp, (1<<RXEN)|(1<<TXEN);
out		UCSRB, temp;
ldi		temp, (1<<USBS)|(3<<UCSZ0);
out		UCSRC, temp;
;-------------------------осн цикл
		
main:		clr temp1;
		clr	temp;		
		rcall Peredacha;
		sei; 		РАЗРЕШАеМ ПРеРЫВаНИя		
		rcall Priem;
		cli;		запрещаем прерывания
		rjmp main;
;------------------------передача отправляем байт 0101010101

Peredacha:	ldi temp, 0b01010101 ;
			sbis	UCSRA, UDRE;
			rjmp	Peredacha;
			out	UDR, temp;
			ret;

;-----------------------------прием
Priem:	
		sbis	UCSRA, RXC;
		rjmp	Priem;		
		in 	temp1, UDR;
		ret;


;-----------------------обработка прерывания
prtim:	rcall Peredacha;
		reti;