cli
; Установка указателя стека
ldi temp, high(RAMEND)
out SPH, temp
ldi temp, low(RAMEND)
out SPL, temp
; Инициализация портов
ldi temp, 0b00001000; Порт B
out DDRB, temp ;
ldi temp, 0b11110111; подключение pull-up резисторов
out PORTB, temp ;
ldi temp, 0x00 ; Порт C
out DDRC, temp ;
ldi temp, 0b11111111; подключение pull-up резисторов
out PORTC, temp ;
ldi temp, 0b00001010; Порт D
out DDRD, temp ;
ldi temp, 0b11111111; подключение pull-up резисторов
out PORTD, temp ;
; Инициализация USART
ldi temp, 0b01000000; UCSR0A - флаги
sts UCSR0A, temp
ldi temp, 0b10011000; UCSR0B - разрешение работы приёмника и передатчика
; и разрешение прерывания от приёмника
sts UCSR0B, temp
ldi temp, 0b00000110; UCSR0C - 8-n-1
sts UCSR0C, temp
ldi temp, 0b00000000; UBRR0H
sts UBRR0H, temp
ldi temp, 0b00011001; UBRR0L - 9600 @ 4 МГц
sts UBRR0L, temp
; Инициализация внешних прерываний
ldi temp, 0b00000010; EICRA - внешнее прерывание 0 - при
sts EICRA, temp ; отрицательном фронте
ldi temp, 0b00000001; EIMSK - разрешение внешнего прерывания 0
out EIMSK, temp
; Инициализация таймера 0
ldi temp, 0b00000000; TCCR0A - нет Output compare,
; нет Waveform generation
out TCCR0A, temp
ldi temp, 0b00000001; TCCR0B - нет Force output compare, нет
; Waveform generation, clk = clkIO
out TCCR0B, temp
ldi temp, 0b00000001; TIMSK0 - прерывание только по переполнению
sts TIMSK0, temp
; Инициализация таймера 2
ldi temp, 0b01000010; TCCR2A - toggle OC2A при совпадении,
sts TCCR2A, temp ; Waveform generation: CTC
ldi temp, 0b00000000; TCCR2B - нет Force output compare, нет
sts TCCR2B, temp ; Waveform generation, clk = 0
ldi temp, 53 ; OCR2A = 53 (13.25 мкс)
sts OCR2A, temp
ldi temp, 0b00000010; TIMSK2 - прерывание только по совпадению A
sts TIMSK2, temp
; Разрешение прерываний
sei