bufubaoni 发表于 2013-2-20 14:00:28

usart通讯中为什么udr的值无法改变【已解决】

本帖最后由 bufubaoni 于 2013-2-21 06:09 编辑

代码如下:
#include <avr/io.h>
#include <avr/interrupt.h>

#define F_MCU 7372800
#define F_BAUD 9600


main (void)
{

        UBRRH = (F_MCU/F_BAUD/16-1)/256;
        UBRRL =        (F_MCU/F_BAUD/16-1)%256;
        sei();
        UCSRB = (1<<TXEN)|(1<<RXEN)|(1<<RXCIE);
       

               
                while(! (UCSRA & (1<<UDRE)) );               
                UDR = 0x55 ;

        while(1);


}


在仿真中其udr的值始终为0x00;
放到板子上其与串口调试助手显示内容为 c0 c0 c0 c0 c0 不知何原因,大神求助。

bufubaoni 发表于 2013-2-20 14:03:52

不知道是程序还是,哪里的问题。。。。

faw 发表于 2013-2-20 14:18:02

UBRRH = (F_MCU/16/(F_BAUD+1))/256;
UBRRL =   (F_MCU/16/(F_BAUD+1))%256;
试试

bufubaoni 发表于 2013-2-20 15:59:31

第一个图为 串口调试助手 接收到的 图片,第二个图片为UDR寄存器内值始终不变。

easier 发表于 2013-2-20 18:58:54

UDR寄存器内值 = 接收值

bufubaoni 发表于 2013-2-20 21:30:55

easier 发表于 2013-2-20 18:58 static/image/common/back.gif
UDR寄存器内值 = 接收值

但是它的接收与发送寄存器共享一个地址,也就是udr。求助

bufubaoni 发表于 2013-2-21 02:52:47

我也不知道是哪里的错误。。。。

bufubaoni 发表于 2013-2-21 04:44:23

问题已经解决,谢谢各位。是熔丝设置导致没有使用外部晶振的原因。
页: [1]
查看完整版本: usart通讯中为什么udr的值无法改变【已解决】