打印

AVR Studio4中ATMEGA128串口程序发什么都显示的00

[复制链接]
1504|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
war3mars|  楼主 | 2015-2-17 21:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
AVR ATMEL128芯片,用STC ISP烧写于电脑相连,发1也好发a也好,电脑串口助手都显示00,发什么返什么也试了,也是不管发什么返的都是00,急请大神指点:程序如下:
void uart_init(uint baud){   SREG&=~BIT(7);    UCSR0B=0x00;    UCSR0A=0x00;       //控制寄存器清零   UCSR0C=0X06;//0000 0110 //选择UCSRC,异步模式,禁止                                                                             //   校验,1位停止位,8位数据位   baud=mclk/16/baud-1;   //波特率最大为65K   UBRR0L=baud;                 UBRR0H=baud>>8;      //设置波特率   UCSR0B=0X98;//(1<<TXEN0)|(1<<RXEN0)|(1<<RXCIE0); //接收、发送使能,接收中断使能1001 1000   SREG|=BIT(7);                 //全局中断开放   PORTE = 0xFF;   //设置RXD0和TXD0   DDRE  |= 0x02;                 //配置TX为输出(很重要)}void uart_sendB(uchar data){   while(!(UCSR0A&(BIT(UDRE0)))) ;   UDR0=data;   while(!(UCSR0A&(BIT(TXC0))));   UCSR0A|=BIT(TXC0);}void usart0_RX_interrupt(void){    UCSR0B&=~BIT(RXCIE0); rdata=UDR0; flag=1; UCSR0B|=BIT(RXCIE0);}void main(void){    uchar i=4;    uchar j='a';    uart_init(19200);; while(1) { uart_sendB(1); delay(10);  //uart_sendB(j); //delay(10);   // if(flag==1)   // {     //    uart_sendB(rdata);  //  flag=0;   // } } } 晶振是11059200  波特率:19200 烧写的熔丝位

相关帖子

沙发
war3mars|  楼主 | 2015-2-17 21:38 | 只看该作者
void uart_init(uint baud)
{
   SREG&=~BIT(7);       
   UCSR0B=0x00;
   UCSR0A=0x00;                     //控制寄存器清零
   UCSR0C=0X06;//0000 0110(1<<URSEL0)|(0<<UPM00)|(3<<UCSZ00);   
                                                        //选择UCSRC,异步模式,禁止                        
                                                     //   校验,1位停止位,8位数据位
   baud=mclk/16/baud-1;   //波特率最大为65K
   UBRR0H=baud>>8;                    //设置波特率
   UBRR0L=baud;                                                        
   UCSR0B=0X98;//(1<<TXEN0)|(1<<RXEN0)|(1<<RXCIE0); //接收、发送使能,接收中断使能1001 1000
   SREG|=BIT(7);                        //全局中断开放
   PORTE = 0xFF;   //设置RXD0和TXD0
   DDRE  |= 0x02;                        //配置TX为输出(很重要)

}
void uart_sendB(uchar data)
{
   while(!(UCSR0A&(BIT(UDRE0))));
   UDR0=data;
   while(!(UCSR0A&(BIT(TXC0))));
   UCSR0A|=BIT(TXC0);
}
void usart0_RX_interrupt(void)
{
    UCSR0B&=~BIT(RXCIE0);
        rdata=UDR0;
        flag=1;
        UCSR0B|=BIT(RXCIE0);
}
void main(void)
{
    uchar i=4;
    uchar j='a';
    uart_init(19200);;
        while(1)
        {
        //uart_sendB(1);
        //delay(10);
       
        //uart_sendB(j);
        //delay(10);
           if(flag==1)
           {  
              uart_sendB(rdata);
                  flag=0;
           }
        }
       
}

使用特权

评论回复
板凳
war3mars|  楼主 | 2015-2-17 21:39 | 只看该作者
请大神们指点下啊,急啊,高手请加QQ75750462指教下,谢谢了!

使用特权

评论回复
地板
war3mars|  楼主 | 2015-2-18 00:45 | 只看该作者
已解决,封!

使用特权

评论回复
5
ilikerome| | 2015-2-18 13:32 | 只看该作者
学习学习。。。

使用特权

评论回复
6
xyz549040622| | 2015-2-19 09:59 | 只看该作者
一楼好乱!

使用特权

评论回复
7
Glory分享| | 2017-5-24 17:04 | 只看该作者
楼主讲讲你是如何解决的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

24

帖子

0

粉丝