发 帖  
[问答] USART test---ATMEGA128
148 USART ATmega128
分享
本帖最后由 一只耳朵怪 于 2018-6-26 11:14 编辑

   #include<avr/io.h>
#define fosc 16000000UL //晶振16MHZ
#define baud 9600//波特率
#define com0


void uart0_init(void)
{
     UCSR0B = 0x00; //disable while setting baud rate
     UCSR0A = 0x00;
     UCSR0C =(1<<UCSZ01)|(1<<UCSZ00);//8bit+1bit stop
     UBRR0L=(fosc/16/(baud+1))%256;
     UBRR0H=(fosc/16/(baud+1))/256;
     UCSR0B =(1<<RXEN0)|(1<<TXEN0);//RXCEN TXCEN
}


void uart1_init(void)
{
     UCSR1B = 0x00; //disable while setting baud rate
     UCSR1A = 0x00;
     UCSR1C = (1<<UCSZ11)|(1<<UCSZ10);//8bit+1bit stop
     UBRR1L=(fosc/16/(baud+1))%256;
     UBRR1H=(fosc/16/(baud+1))/256;
     UCSR1B =(1<<RXEN1)|(1<<TXEN1);//RXCEN TXCEN
}


void putchar0(unsigned char c)
{
    while (!(UCSR0A&(1<<UDRE0)));
    UDR0=c;   
}


void putchar1(unsigned char c)
{
    while (!(UCSR1A&(1<<UDRE1)));
    UDR1=c;   
}


unsigned char getchar0(void)
{
    while(!(UCSR0A& (1<<RXC0)));
    return UDR0;
}


unsigned char getchar1(void)
{
    while(!(UCSR1A& (1<<RXC1)));
    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         
                                                                                                                                                         
0
2018-6-26 04:33:12   评论 邀请回答

只有小组成员才能发言,加入小组>>

37个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /7 下一条

快速回复 返回顶部 返回列表