Цитата(ILYAUL @ Dec 20 2011, 22:51)

1. После Init: поставьте cli
Init:
;++++++++++++++ Сдержимое файла INITCORE.INC +++++++++++++++++++++++++
;==== Инициализация ядра: Память; Регистры; Стек =============
.include "INITCORE.inc"
;++++++++++++++ Конец Содержимого файла INITCORE.INC +++++++++++++++++
;======= Инициализация внутренних периферийных устройств:======
ldi temp , 0b11111111 ; определяем входы\выходы порта В,
out DDRB , temp ; 1 делает вывод выходом, 0 - входом!
ldi temp , 0b00000000 ; определяем в\в порта D
out DDRD , temp
ldi temp , 0b11111111 ; включаем подтяжку (1) для входов порта В
out portB , temp ; и задаем начальние состояния выходов
ldi temp , 0b00000000 ; то же самое для D
out portD , temp
ldi temp, 1<<RXEN|1<<RXCIE|1<<TXen ; разрешаем прием и прерывание по приему по UART
out UCSRB, temp
;ldi temp, 1<<TXEN|1<<TXCIE ; разрешаем передачу и прерывание по передачи по UART
;out UCSRB, temp
ldi temp,25 ; задаем скорость UART = 9600
out UBRRL, temp
ldi temp, 0
out UBRRH,temp
ldi r16, 1<<URSEL|1<<UCSZ0|1<<UCSZ1 ; 8-мибитный формат посылки
out UCSRC,r16
in temp , UCSRC ;UBRRH;
out POrtB,temp
cli
дальше там простто цикл:
Start:
nop
rjmp Start
Цитата(ILYAUL @ Dec 20 2011, 22:51)

2. Прочтите регистры UBRRH и UCSRC после записи в них
вот здесь не пойму как правильно прочитать: ведь эти два регистра с одним адресом памяти, и поэтому читаются странно, показываю все варианты как пробовал считывать:
1вариант
ldi temp,25 ; UART = 9600
out UBRRL, temp
ldi temp, 0
out UBRRH,temp
in temp , UBRRH
out POrtB,temp
ldi r16, 1<<URSEL|1<<UCSZ0|1<<UCSZ1
out UCSRC,r16
на светодиодах показывает 00000000(как и предполагалось)
2вариант
ldi temp, 0
out UBRRH,temp
ldi r16, 1<<URSEL|1<<UCSZ0|1<<UCSZ1
out UCSRC,r16
in temp , UBRRH
out POrtB,temp
на светодиодах показывает 00000000(как и предполагалось)
3вариант
ldi temp, 0
out UBRRH,temp
ldi r16, 1<<URSEL|1<<UCSZ0|1<<UCSZ1
out UCSRC,r16
in temp , UCSRC
out POrtB,temp
на светодиодах показывает 00000000(вот здесь уже не то что предполагал)
4вариант
ldi temp, 0
out UBRRH,temp
ldi r16,1<<URSEL
out UCSRC,r16
ldi r16, 1<<URSEL|1<<UCSZ0|1<<UCSZ1
out UCSRC,r16
in temp , UCSRC
out POrtB,temp
на светодиодах показывает 00000000
5вариант
ldi temp, 0
out UBRRH,temp
ldi r16,1<<URSEL
out UCSRC,r16
ldi r16, 1<<UCSZ0|1<<UCSZ1
out UCSRC,r16
in temp , UCSRC
out POrtB,temp
на светодиодах показывает 00000110 (добились что надо, НО! если последние две строки заменяем на
in temp , UBRRH
out POrtB,temp получаем 00000110,то есть то же самое)
Вывод: то что мы записываем в UCSRC, то же самое записывается в UBRRH ? получается бит URSELникак е влияет на запись регистров что ли?
Цитата(kolobok0 @ Dec 21 2011, 15:11)

выводите в порт A или С (как пример)
вывел порт С, та же ситуация! видимо что то другое..