| #include #define fosc 16000000UL //晶振16MHZ #define baud 9600//波特率 #define com0 void uart0_init(void) { UCSR0B = 0x00; //disable while setting baud rate UCSR0A = 0x00; UCSR0C =(1< UBRR0L=(fosc/16/(baud+1))%256; UBRR0H=(fosc/16/(baud+1))/256; UCSR0B =(1< } void uart1_init(void) { UCSR1B = 0x00; //disable while setting baud rate UCSR1A = 0x00; UCSR1C = (1< UBRR1L=(fosc/16/(baud+1))%256; UBRR1H=(fosc/16/(baud+1))/256; UCSR1B =(1< } void putchar0(unsigned char c) { while (!(UCSR0A&(1< UDR0=c; } void putchar1(unsigned char c) { while (!(UCSR1A&(1< UDR1=c; } unsigned char getchar0(void) { while(!(UCSR0A& (1< return UDR0; } unsigned char getchar1(void) { while(!(UCSR1A& (1< return UDR1; } void puts0(char *s) { while (*s) { putchar0(*s); s++; } putchar0(0x0a); putchar0(0x0d); } void puts1(char *s) { while (*s) { putchar1(*s); s++; } putchar1(0x0a); putchar1(0x0d); } int main(void) { unsigned char i; #ifdef com0 uart0_init(); puts0("HELLO!"); #else uart1_init(); puts1("HELLO!"); #endif while(1) { #ifdef com0 if (getchar0()=='t')//按键盘t键开始测试 { puts0("test ok!"); for (i=0;i<10;i++) { putchar0(0x30+i); } putchar0(0x0a); putchar0(0x0d); } #else if (getchar1()=='t')//按键盘t键开始测试 { puts1("test ok!"); for (i=0;i<10;i++) { putchar1(0x30+i); } putchar1(0x0a); putchar1(0x0d); } #endif } } //USART test for atmega128 seabiscuit 2011.12.11.jiujiang |
更多回帖