|
楼主 |
发表于 2012-1-10 12:58:20
|
显示全部楼层
回复【2楼】walshao 万少
-----------------------------------------------------------------------
用的是仿真,没有搭建实际电路,如果仿真有问题的话,实际电路应该也会出现这种问题。
另外我这个程序写错了两个地方,程序更正如下:
#include<util/delay.h>
#include<avr/io.h>
#define甀椀渀琀8甀渀猀椀最渀攀搀挀栀愀爀
void唀愀爀琀开Init(void)
{
UCSR0A簀=(1<<U2X0);
UCSR0B|=((1<<RXCIE0)|(1<<RXEN0)|(1<<TXEN0)); //接收中断使能,发送使能,接收使能
UCSR0C|=((1<<UCSZ00)|(1<<UCSZ00)); //数据位长度为8位
UBRR0L= 砀5F;
UBRR0H= 砀 ; //设置波特率为9600
DDRE簀= 砀 2; //配置TX为输出
}
/*void唀愀爀琀开匀攀渀搀(甀椀渀琀8猀栀甀) //发送一个字节
{
while(!(UCSR0A&(1<<UDRE0)));//判断USART数据寄存器是否为空,假如UDREO为1则表示为空
UDR0=猀栀甀; //赋值
while(!(1<<TXC0)&UCSR0A); //判断是否发送完成,若TXCO为1则表示发送完成
UCSR0A&=(~(1<<TXC0)); //把发送结束标志位置0
}
*/
int洀愀椀渀(void)
{
Uart_Init();
uint8椀=5;
UDR0=椀;
_delay_ms(5);
UDR0=椀;
_delay_ms(5);
UDR0=椀;
_delay_ms(5);
UDR0=椀;
_delay_ms(5);
UDR0=椀;
_delay_ms(5);
}
这种时候我把仿真里面的串口检测波特率改为1280,数据正确。
感觉自己设置的波特率是9600应该没有错误。 |
|