#include < avr/io.h > //Перечисляем прототипы функций void USART_Init( unsigned int baudrate ); //Функция инициализации модуля USART unsigned char USART_Receive( void ); //Функция приема данных по протоколу USART void USART_Transmit( unsigned char data ); //Функция передачи данных по протоколу USART int main( void ) //Главная функция { USART_Init( 47 ); //Скорость соединения 19200 бит/с для микроконтроллера ATtiny2313 for (;;) //Вечный цикл { USART_Transmit( USART_Receive() ); //Отправка принятого символа назад } } void USART_Init( unsigned int baudrate ) //Функция инициализации USART { UBRRH = (unsigned char) (baudrate>>8); UBRRL = (unsigned char) baudrate; UCSRA = ( 1 << U2X); //Устанавливаем удвоение скорости UCSRB = (( 1 << RXEN)|(1 << TXEN)); //Разрешение на прием и на передачу через USART UCSRC = (1 << USBS)|(3 << UCSZ0); } unsigned char USART_Receive( void ) //Функция приема данных { while (!(UCSRA & (1 << RXC))); //Ожидание приема символа return UDR; //Возврат содержимого буфера приема символа } void USART_Transmit( unsigned char data ) //Функция отправки данных { while (!(UCSRA & (1 << UDRE)) ); //Ожидание опустошения буфера приема UDR = data; //Начало передачи данных }