#include #include static inline void uart_init(); int main() { /* serial */ uart_init(); /* data input */ PORTB &= ~0x0F; DDRB |= 0x0F; for (;;) { while ((UCSRA & (1 << RXC)) == 0); PORTB ^= UDR & 0x0F; while ((UCSRA & (1 << UDRE)) == 0); UDR = PORTB & 0x0F; } return 0; } static inline void uart_init() { UCSRB |= (1 << RXEN) | (1 << TXEN); UCSRC |= (1 << UCSZ0) | (1 << UCSZ1); #define BAUD 38400 #include UBRRH = UBRRH_VALUE; UBRRL = UBRRL_VALUE; #if USE_2X UCSRA |= (1 << U2X); #else UCSRA &= ~(1 << U2X); #endif }