找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3255|回复: 0
打印 上一主题 下一主题
收起左侧

USART test---ATMEGA128

[复制链接]
跳转到指定楼层
楼主
ID:80436 发表于 2015-5-21 23:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  #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            
                                                                                                                                                                                              seabiscuit
                                                                                                                                                                                               2011.12.11.jiujiang                                         


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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