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 不知何原因,大神求助。 不知道是程序还是,哪里的问题。。。。 UBRRH = (F_MCU/16/(F_BAUD+1))/256;
UBRRL = (F_MCU/16/(F_BAUD+1))%256;
试试 第一个图为 串口调试助手 接收到的 图片,第二个图片为UDR寄存器内值始终不变。 UDR寄存器内值 = 接收值 easier 发表于 2013-2-20 18:58 static/image/common/back.gif
UDR寄存器内值 = 接收值
但是它的接收与发送寄存器共享一个地址,也就是udr。求助 我也不知道是哪里的错误。。。。 问题已经解决,谢谢各位。是熔丝设置导致没有使用外部晶振的原因。
页:
[1]