˜Ëî}: USART test---ATMEGA128 [´òÓ¡±¾í“]

×÷Õß: liuqq    •rég: 2015-5-21 23:36
˜Ëî}: USART test---ATMEGA128
  #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')//°´æI±PtæIé_ʼœyÔ‡
        {
            puts0("test ok!");
            for (i=0;i<10;i++)
           {
               putchar0(0x30+i);
           }
           putchar0(0x0a);
           putchar0(0x0d);   
        }
       #else
      if (getchar1()=='t')//°´æI±PtæIé_ʼœyÔ‡
        {
         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                                         







šgÓ­¹âÅR (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1