.include "m16Adef.inc"; Макроопределения для ATmega16

.macro OUTI
ldi r16,@1; Макрос для вывода значения в порт или регистр
out @0,r16
.endm

OUTI SPL,low(RAMend);Инициализация стека
OUTI SPH,high(RAMend)


;Инициализация UART
;======================================================

.equ Clock = 8000000
 .equ BaudRate = 1200
 .equ UBRR_Value = Clock/(16*BaudRate)-1

;======================================================

ldi r16,low(UBRR_Value)
 out UBRRL,r16; Устанавливаем скорость

ldi r16,high(UBRR_Value)
 out UBRRH,r16

;======================================================

ldi r16, (1<<RXEN)|(1<<TXEN); Подключаем приёмник и
 out UCSRB,r16; передатчик.

;—————————————————–

ldi r16, (1<<URSEL)|(1<<UCSZ0)|(1<<UCSZ1)
 out UCSRC, r16; 8 бит данных, 1 стоп бит


;Инициализация АЦП
OUTI ADCSRA,(1<<ADEN)|(1<<ADIE)|(1<<ADSC)|(1<<ADATE)|(3<<ADPS0)

OUTI   ADMUX,1<<REFS0|1<<ADLAR|0<<MUX0


;==========================================================================

Main:

in r16,ADCH;Берём значение с АЦП и спихиваем его в UART
out UDR,r16

sbis ucsra,udre
rjmp pc-1; Ожидание готовности UART

rcall delay; Небольшая задержка



rjmp main


;==========================================================================
;Самая обычная задержка

Delay:

ldi r16,0
ldi r17,100

loop:

dec r16
brne loop

dec r17
brne loop


ret
