//****************************************************************************************** // AVR Sample Program (ATmega1284) // Project : // Program Name : // Programer : // Create date : Version 1.0 H23.02.01 // History : // Laungage : WinAVR GCC //****************************************************************************************** // (1)Description // //****************************************************************************************** #include void inituart(void); void demo01(void); void getuart(char *); void putuart(char ); void putuarts(char *); void cnvaton(unsigned int *, char); void wat(); int main(void){ char io_char; // 1.初期設定 DDRA = 0b00000000; DDRB = 0b00000000; DDRC = 0b00000000; DDRD = 0b00000000; // 2.UARTの初期化 inituart(); putuarts("ATMAGA1284P Connected OK>"); // 3.メインプログラム while(1){ getuart(&io_char); putuart( io_char); } } //****************************************************************************************** // Function Name : inituart // Title : UARTの初期化 // Input : // Output : // Description : UART 9600BPS OSC 8MHz //****************************************************************************************** void inituart() { unsigned int ubrr; // 1.UCSRレジスタの設定 UCSR0A = ( 0 << U2X0 ); UCSR0B = ( 0 << RXCIE0 ) |( 0 << TXCIE0 ) |( 0 << UDRIE0 ) |( 1 << RXEN0 ) |( 1 << TXEN0 ) | ( 0 << UCSZ02 ) |( 0 << RXB80 ) |( 0 << TXB80 ) ; UCSR0C = ( 0 << UMSEL01 ) |( 0 << UMSEL00 ) |( 0 << UPM01 ) |( 0 << UPM00 ) |( 0 << USBS0 ) | ( 1 << UCSZ02 ) |( 1 << UCSZ01 ) |( 1 << UCSZ00 ) ; // 2.UBRRレジスタの設定 // ※BAUD=Fck/16(UBRR+1) => UBRR=Fck/(16*BAUD) - 1 // 8MHz,9600BAUDの時, UBRR=8M/(16*9600)-1=>51.1(Dec) ubrr = 51; UBRR0H = (unsigned char)(ubrr>>8); // 上位8bit UBRR0L = (unsigned char)ubrr; // 下位8bit } //****************************************************************************************** // Function Name : getuart // Title : UARTからデータを得る // Input : // Output : // Description : //****************************************************************************************** void getuart(char *io_char) { // (1)シリアルデータの入力を待つ loop_until_bit_is_set(UCSR0A, RXC0); // (2)シリアルデータを設定 *io_char = UDR0; } //**************************************************************************** // Function Name : putuarts // Title : Put Strings // Input : // Output : // Description : //**************************************************************************** void putuarts(char in_str[0] ) { unsigned int lp=0; while(in_str[lp]!=0x00){ putuart(in_str[lp]); lp++; } } //****************************************************************************************** // Function Name : putuart // Title : UARTにデータを送信 // Input : // Output : // Description : //****************************************************************************************** void putuart(char io_char) { // (1)送信バッファ空き待機 while(!(UCSR0A & (1<