Не поможет. Человек читает садержимое регистра данных UART когда ему вздумается и совершенно не обращает внимание на состояние UART.
Передача
void USART_Transmit( unsigned char data )
{
/* Wait for empty transmit buffer */
while ( !( UCSRA & (1<<UDRE)) ) ;
/* Put data into buffer, sends the data */
UDR = data;
}
Прием
unsigned char USART_Receive( void )
{
/* Wait for data to be received */
while ( !(UCSRA & (1<<RXC)) ) ;
/* Get and return received data from buffer */
return UDR;
}
Возможно потребуется немного модифицировать код для Ваших нужд. Но, принцип думаю ясен. Прежде чем читать из UDR или писать в UDR нужно проверить бит RXC или бит UDRE регистра UCSRA.
Примеры кода взяты из [url]http://www.atmel.com/images/doc2543.pdf[/url](Отредактировано автором: 28 Ноября, 2013 - 00:11:38) |