МК не хочет осуществлять передачу до принятия любого символа. Причем не зависает, просто проходит подпрограмму передачи, и работает дальше.
Но если сперва принять хотя бы один символ, то передача работает.
Код
clr temp ;
sts UCSR0B,temp ;
ldi temp,0b00000110 ; 8бит, 1стоповый бит, нет четности, асинхронный режим
sts UCSR0C,temp ;
ldi temp,0x80 ; сброс
sts CLKPR,temp ; делителя
ldi temp,0x00 ; тактовой
sts CLKPR,temp ; частоты
clr temp ;
sts UBRR0H,temp ;
ldi temp,29 ; ubrr=29
sts UBRR0L,temp ; 9600 бод/сек
ldi temp,0b00011000 ; установка TXEN RXEN
sts UCSR0B,temp ; USART вкл
Код
USART_transmit:
lds temp2,UCSR0A ;
sbrs temp2,(UDRE0) ;ждем пока содержимое из UDR0 перегрузится в сдвиговый регистр
rjmp USART_transmit ;
sts UDR0,temp ;отправляем
ret ;возврат из процедуры отправки
USART_receive:
lds temp2,UCSR0A ;
sbrs temp2,(RXC0) ;ждем приема символа (установка RXC)
rjmp USART_receive ;
lds temp,UDR0 ;читаем
ret ;возврат из процедуры приема
В чем может быть дело?
Спасибо.
Сообщение отредактировал Alt.F4 - Sep 24 2010, 15:59