/****************************************************************************/ /* UART test program */ /* MPU: ATmega644P */ /* ENV: WinAVR-20060421 */ /* */ /* 2009.04.05 new */ /* (C) jujurou */ /****************************************************************************/ #include #include void main(void) { volatile uint8_t uart_read_data; uint8_t uart_status; PORTA = 0b11111111; /* PUPUPUPUPUPUPUPU */ DDRA = 0b00000000; /* 入入入入入入入入 */ PORTB = 0b11111111; /* PUPUPUPUPUPUPUPU */ DDRB = 0b00000000; /* 入入入入入入入入 */ PORTC = 0b11111111; /* PUPUPUPUPUPUPUPU */ DDRC = 0b00000000; /* 入入入入入入入入 */ PORTD = 0b11111100; /* PUPUPUPUPUPU10 */ DDRD = 0b00000010; /* 入入入入入入出入 */ UBRR0 = 25; /* 8MHz 19200bps */ UCSR0C = 0b00000110; UCSR0A = 0b01100000; UCSR0B = 0b00011000; uart_read_data = UDR0; #if 0 /* 送信テスト */ UDR0 = 'A'; while (1) { loop_until_bit_is_set(UCSR0A, UDRE0); UDR0 = 'A'; } #else /* 受送信テスト */ while (1) { loop_until_bit_is_set(UCSR0A, RXC0); uart_status = UCSR0A; if ((uart_status & 0b00011100) == 0) { uart_read_data = UDR0; loop_until_bit_is_set(UCSR0A, UDRE0); UDR0 = uart_read_data - 1; } else { uart_read_data = UDR0; } } #endif return; }