avr单片机吧 关注:771贴子:1,358
  • 14回复贴,共1

为什么接收到的串口数据老不正确!!Atmega16

只看楼主收藏回复


上面是程序下面是电脑上的结果

为什么结果是这样,应该显61才对的啊?
大神帮忙看看,谢谢了!!


IP属地:广东1楼2013-12-05 21:02回复
    楼主用得是avr studio写的?


    来自iPhone客户端2楼2014-05-10 14:38
    收起回复
      2026-03-29 14:13:26
      广告
      不感兴趣
      开通SVIP免广告


      IP属地:广东3楼2014-05-12 14:02
      回复
        /*
        */
        #define __OPTIMIZE__
        #include <avr/io.h>
        #include <util/delay.h>
        #define mclk 8000000
        void uart_init(unsigned int baud)
        {
        unsigned int ubr=0;
        //UCSRA=0X00;
        //UCSRB=0X00;
        UCSRC|=(1<<URSEL)|(0<<UMSEL)|(0<<UPM1)|(0<<UPM0)|(0<<USBS)|(3<<UCSZ0);
        ubr=mclk/16/baud-1;
        UBRRH=ubr>>8;
        UBRRL=ubr;
        UCSRB|=(1<<RXEN)|(1<<TXEN);
        //SREG=0X80;
        DDRD|=0X02;
        }
        void uart_transmit(unsigned char data)
        {
        while(!(UCSRA&(1<<UDRE)));
        UDR=data;
        while(!(UCSRA&(1<<TXC)));
        UCSRA|=1<<TXC;
        }
        unsigned char uart_recive(void)
        {
        UCSRA|=(1<<RXC);
        while(!(UCSRA&(1<<RXC)));
        return UDR;
        }
        int main(void)
        {
        DDRB=0XFF;
        uart_init(9600);
        unsigned char k;
        while(1)
        {
        uart_transmit(uart_recive());
        PORTB=uart_recive();
        if(k!=0)
        {
        PORTB=k;
        _delay_ms(1000);
        //PORTB= _BV(k%8);
        //_delay_ms(1000);
        }
        }
        }


        IP属地:黑龙江4楼2014-05-15 16:42
        回复
          楼主,这个怎么解决的,我这边也有这个问题,串口发送东西老是不对!新人求教!


          5楼2014-07-16 10:33
          收起回复
            晶振设置对不对


            IP属地:广东来自Android客户端6楼2014-07-20 15:50
            回复
              我觉得那个波特率设置就不要用公式好啦,手册上有相应的值,你可以参考一下。


              7楼2014-07-24 16:08
              收起回复